使用proguard配置不会删除我的日志消息

时间:2014-03-28 13:46:07

标签: android proguard

我正在开发我的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控制台中看到我的所有日​​志消息。为什么呢?

3 个答案:

答案 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有时会拒绝您的申请。