gpt4 book ai didi

android - proguard 错误?删除日志

转载 作者:行者123 更新时间:2023-11-30 01:59:42 26 4
gpt4 key购买 nike

我的混淆配置

-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** w(...);
public static *** v(...);
public static *** i(...);
public static *** e(...);
}

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

它确实删除了大部分日志。但是对于某些日志,它会产生如下所示的奇怪输出。正如您所注意到的,Log.d 已被一些冗余代码所取代。

public void MyFunction(int param1, String param2) {
Log.d(TAG, "MyFunction: " + param1 + " : " + param2);

...some code...
}

这转化为

public final void a(int paramInt, String paramString)
{
new StringBuilder("MyFunction: ").append(paramInt).append(" : ").append(paramString);

... some code ...
}

知道哪里出了问题以及如何解决这个问题吗?

谢谢

最佳答案

这不是错误。您告诉混淆器删除 Log.d/w/v/i/e 方法调用,而不是整行。据我所知,这是你能得到的最好的。顺便说一句,new StringBuilder("MyFunction: ")... 行是对您的类的字节码进行逆向工程的结果,它很好。

我想举例说明为什么混淆器只删除方法调用而不是整行。看看这个 fragment :

int sum = 0;
int a = 10;
int b = 10;
assert a > 0;
assert b > 0;
Log.d("TAG", "The value of a+b is " + (sum=a+b));
// the sum of two positive number is a positive number
assert sum > 0;

如果 proguard 删除 Log.d 行会发生什么?

关于android - proguard 错误?删除日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com