我正在开发我的Android应用。
然后我启用&通过以下方式配置proguard:
步骤1.启用proguard:
在 project.properties 中,我有:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
我也尝试了以下内容:
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=proguard.cfg
步骤2.配置proguard:
在 proguard.cfg 我有:
-assumenosideeffects class android.util.Log { *; }
我认为上面的配置应该删除所有日志。
但是当我在target/
文件夹&下安装APK时运行我的应用程序,我仍然可以在logcat控制台中看到我的所有日志消息。为什么呢?
答案 0 :(得分:10)
您应该使用 project.properties 中的第一行:
proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
然后,您应该将这些行添加到 proguard-project.txt (不已弃用的proguard.cfg):
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
如果文件不包含-dontoptimize,则这些选项只会产生任何影响。
Ant和Eclipse从project.properties中获取设置。 Gradle和Maven分别需要在build.gradle和pom.xml中指定配置文件的等效设置。
类似的问题和答案:
答案 1 :(得分:1)
我无法记住我在哪里找到了对此方法的引用,但我总是使用它:
-assumenosideeffects class android.util.Log {
public static *** d(...);
public static *** v(...);
}
在我的配置中。它确实删除了我编写的调试和详细日志记录
答案 2 :(得分:0)
您可以创建自己的Log utilit类并使用它,
我发布应用时的操作是:我使用 方法i,d,e,w等创建我自己的日志类 并使用此Log类而不是Android类,因为我可以使用一个简单的开关,如boolean debug = true ,根据该开关我写入 LogCat 或者不要#39 ;吨。这样我就可以在应用程序中保留所有日志语句。当您编写自己的Log类时,要在整个应用程序中使用它,您只需替换所有,
删除:
import android.util.Log;
添加
import your.package.Log;
像这样:
public class Log {
public static void i(String logTag, String logString) {
if (isLogsEnabled) {
Log.i(logTag, logString);
}
}
public static void v(String logTag, String logString) {
if (isLogsEnabled) {
Log.v(logTag, logString);
}
}
// you can add method for w,d,wtf also...
}
日志记录是开发人员使用的非常方便的调试和诊断技术。使用作为Android SDK一部分提供的日志记录类将有关应用程序的重要信息记录到LogCat,但请确保在发布之前检查应用程序的日志记录实现,因为日志记录存在性能缺陷。
在发布您的应用程序之前仔细检查您的日志,以便它不会泄露任何机密数据,
只要您的应用程序处于测试模式,日志就非常重要,Logs将为您提供当前设备上应用程序的当前状态和方案。因此,只要您更新应用程序,它就会非常有用。
如果发现您的日志记录机制违反规则,Google有时会拒绝您的申请。