android log.d 格式化,如何去掉android.Log.d?

一般假设

所以我发现很多关于使用proguard从代码中剥离日志语句.基本上所有的说法 – 使用${sdk.dir} /tools/proguard/proguard-android-optimize.txt配置的效果都会起作用.我的理解是让字节码等于做一些

if(Consts.DEBUG) Log.d("","");

又名我假设从我的apk中删除了对doSomeExpensiveStuff()的调用:

android.util.Log.d("Hello","World"+(new Foo().doSomeExpensiveStuff()));

我的守则

public class MainActivity extends Activity {

private class Slooow {

@Override

public String toString() {

// being slow

try {

Thread.sleep(5000);

} catch(InterruptedException e) {

}

return "bla";

}

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.d("tag", "onCreate: " + (new Slooow().toString()));

}

}

ProGuard的-project.txt:

-repackageclasses ''

-optimizationpasses 5

-dontobfuscate

-assumenosideeffects class android.util.Log { public * ; }

反编译的dex文件

.method public onCreate(Landroid/os/Bundle;)V

.limit registers 5

; this: v3 (Lcom/example/test/MainActivity;)

; parameter[0] : v4 (Landroid/os/Bundle;)

.line 18

invoke-super {v3,v4},android/app/Activity/onCreate ; onCreate(Landroid/os/Bundle;)V

.line 19

const/high16 v0,32515

invoke-virtual {v3,v0},com/example/test/MainActivity/setContentView ; setContentView(I)V

.line 20

new-instance v0,java/lang/StringBuilder

const-string v1,"onCreate: "

invoke-direct {v0,v1},java/lang/StringBuilder/ ; (Ljava/lang/String;)V

new-instance v1,com/example/test/MainActivity$Slooow

const/4 v2,0

invoke-direct {v1,v2},com/example/test/MainActivity$Slooow/ ; (B)V

invoke-virtual {v1},com/example/test/MainActivity$Slooow/toString ; toString()Ljava/lang/String;

move-result-object v1

invoke-virtual {v0,v1},java/lang/StringBuilder/append ; append(Ljava/lang/String;)Ljava/lang/StringBuilder;

.line 21

return-void

.end method

问题

现在,如果我将其部署到我的设备,我没有得到任何日志输出,但仍然是5s睡眠(或任何其他延迟或代码不应该打扰我的用户崩溃).

我究竟做错了什么?

进一步调查

Log.d("t", "h" + "w"); // would get stripped just fine.

if(DEBUG)

Log.d("t", "h: " + (new Slooow().toString())); // would get optimized away, too.

Log.d("t", "h" + bundle.toString()); // has just the same problem as described above.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值