Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android proguard配置不会删除我的日志消息_Android_Proguard - Fatal编程技术网

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

Android proguard配置不会删除我的日志消息,android,proguard,Android,Proguard,我正在开发我的Android应用程序 然后,我通过以下方式启用和配置proguard: 第1步。启用proguard: 在项目属性中我有: proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt -assumenosideeffects class android.util.Log { *; } 我还尝试了以下方法: # To enable ProGuard to

我正在开发我的Android应用程序

然后,我通过以下方式启用和配置proguard:

第1步。启用proguard:

项目属性中我有:

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
-assumenosideeffects class android.util.Log { *; }
我还尝试了以下方法:

# 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中,我有:

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
-assumenosideeffects class android.util.Log { *; }
我认为上面的配置应该删除所有日志


但是当我在
target/
文件夹下安装APK并运行我的应用程序时,我仍然可以在logcat控制台中看到我的所有日志消息。为什么?

我不记得在哪里找到了对该方法的引用,但我一直使用该方法:

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

在我的配置中。它确实删除了我编写的调试和详细日志记录

您应该在项目中使用第一行。属性

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt
然后,您应该将这些行添加到您的proguard project.txt(而不是弃用的proguard.cfg):

这些选项仅在文件不包含-dontoptimize时有效

Ant和Eclipse从project.properties获取设置。Gradle和Maven需要分别在build.Gradle和pom.xml中指定配置文件的等效设置

类似的问题和答案:


您可以创建自己的日志实用程序类并使用它

当我发布我的应用程序时,我做的是:我用方法I、d、e、w等创建我自己的日志类,并使用这个日志类而不是Android类,因为这样我就可以使用一个简单的开关,比如boolean debug=true,根据这个开关,我可以写入LogCat,也可以不写入。这样我就可以在应用程序中保留所有日志语句。当您编写了自己的日志类,要在应用程序中使用它,您只需替换所有

删除:

import android.util.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,但请确保在发布之前查看应用程序的日志实现,因为日志记录存在性能缺陷

在发布应用程序之前,请仔细查看日志,以防其包含任何机密数据

无论何时应用程序处于测试模式,日志都非常重要,日志将为您提供当前设备上应用程序的当前状态和场景。因此,无论何时更新应用程序,它都非常有用


有时,如果发现您的日志记录机制违反规则,Google play会拒绝您的应用程序。

您仍然会看到一些来自您无法控制的代码的消息。你看到了什么?我看到了我使用Logdid proguard运行的所有日志消息?您是否导出了应用程序(Eclipse)?是的,proguard正在运行。我没有从Eclipse导出,但是我已经在pom.xml中配置了&runmaven命令来生成APK。我可以从proguard已经运行的终端上看到,我在target/folderAdding
proguard.config=proguard.cfg
中将proguard生成的apk文件安装到project.properties中,效果很好。你的问题在别处。自从proguard.cfg被弃用以来?@Leem.fin根本不是。只需在project.properties中添加
proguard.config=proguard.cfg
。SDK工具修订版20开始将proguard-project.txt与中心proguard-android.txt相结合,以支持proguard.cfg,至少在创建新项目时是这样。新方法显然更可取,因为它将特定于项目的配置(由您维护)与一般配置(由谷歌的Android团队维护)分开。文档似乎还没有更新。使用proguard android optimize存在一定风险。签出中的注释。还有其他方法可以删除调试消息。签出问题是特定于使用proguard修剪日志消息使用proguard,您将需要proguard android优化,正如中的评论所述,这是有风险的。因此,上述是一个不错的选择。如中所述,还有其他选项