Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 发布的应用程序显示调试字符串?_Android_Eclipse_Debugging - Fatal编程技术网

Android 发布的应用程序显示调试字符串?

Android 发布的应用程序显示调试字符串?,android,eclipse,debugging,Android,Eclipse,Debugging,可能重复: 也许我误解了这个概念,但调试日志消息不应该只显示在未发布的应用程序中吗 我已经用“File”-“Export”编译了我的应用程序,它应该删除代码中“Log.d(…)”转储的所有消息。然而,当我在运行Eclipse的同时运行这个通过USB连接的版本时,我看到各种调试消息在LogCat中公开显示 我现在有点担心——据我所知,在创建发布版本时,ProGuard应该会自动调用,但它似乎会在应用程序中留下调试注释(但在其他方面似乎会起作用,因为函数名已被混淆,我也可以在Logcat中看到)。

可能重复:

也许我误解了这个概念,但调试日志消息不应该只显示在未发布的应用程序中吗

我已经用“File”-“Export”编译了我的应用程序,它应该删除代码中“Log.d(…)”转储的所有消息。然而,当我在运行Eclipse的同时运行这个通过USB连接的版本时,我看到各种调试消息在LogCat中公开显示


我现在有点担心——据我所知,在创建发布版本时,ProGuard应该会自动调用,但它似乎会在应用程序中留下调试注释(但在其他方面似乎会起作用,因为函数名已被混淆,我也可以在Logcat中看到)。

发布版本不会自动删除日志。您不应该(建议)手动删除它们,因为在为下一个版本开发时,您需要将它们重新添加

最推荐的方法是使用Proguard

它所做的是:将删除字节码中的日志,使它们在源代码中可用

实施或使用:

除了删除日志,proguard在许多方面帮助您优化应用程序


它不会删除日志语句!!!你可以手动删除它们,并在发布应用程序时将其作为更新提交

更好的方法是,创建一个类,比如Globals,并在其中放一个标志,上面写着isdevelopment

public class Globals
{
    static boolean isDevelopment = 1;

    public static void log(String tag, String message)
    {
      if(isDevelopment==1)
         Log.d(tag,message);
    }
}
在每个有log语句的地方,都可以这样称呼它

Globals.log("TAG", "MESSAGE");
这样,在发布时,只需将isDevelopment更改为0。然后日志就消失了。当您正在处理它时,只需将其更改为1


希望这能有所帮助

我想我找到了问题的原因-我

-assumenosideeffects class android.util.Log {
   public static *** d(...);
   public static *** i(...);
   public static *** v(...);
}
在我本地的proguard-project.txt中,尽管

proguard.config=${sdk.dir}\\tools\\proguard\\proguard-android-optimize.txt:proguard-project.txt
在我的project.properties文件中,proguard-project.txt似乎从未出于任何原因被使用过。
我已经将日志删除参数添加到我的proguard-android-optimize.txt中,现在可以使用了,导出应用程序时会删除日志。

阅读这里的已知问题,但据我回忆,在Eclipse下创建发布版本时会自动调用proguard?但它已禁用。此外,还需要对其进行配置。或者至少知道基本配置做什么和不做什么t@nitinreddy不建议使用这种方法,因为此处仍在创建日志,但不显示日志。因此,不会有任何性能提升。这只是为了避免显示日志。虽然问题只是关于显示,但最好使用最好的解决方案。你错了。日志并不是一开始就写的。这不是关于展示,而是关于写作。