为什么Android应用程序默认不可调试?

时间:2016-06-27 06:38:25

标签: android debugging

根据Android Doc,Android应用默认无法调试。

  

机器人:可调试

     

是否可以调试应用程序,即使在设备上运行也是如此   用户模式 ​​- " true"如果它可以,并且"假"如果不。   默认值为" false"。

现在,只要我通过默认步骤创建Android Studio最简单的应用程序。

  • AndroidManifest.xml不包含android:debuggable说明符。

  • 默认build.gradle文件在buildTypes下不包含可调试说明符。

因此,根据Android Doc,默认情况下该应用不应该是可调试的。

但是,我总是可以通过Android Studio调试新创建的应用程序。

为什么?

1 个答案:

答案 0 :(得分:1)

以下文章很好地解释了do not use debugabble attribute

以下是它的重要说明。

有一段时间,Android开发人员必须处理更新应用程序清单文件的debuggable属性,将其设置为" true"用于调试,用于" false"就在发布新的签名包之前。

但是那个时间在2010年12月过去了。虽然不是每个开发人员都注意到了它,但是很多人继续手动进行可调试的切换。

http://developer.android.com/tools/sdk/tools-notes.html

从SDK工具版本8开始:

支持真正的调试版本。开发人员不再需要将android:debuggable属性添加到清单中的标记 - 构建工具会自动添加属性。在Eclipse / ADT中,假设所有增量构建都是调试版本,因此工具插入android:debuggable =" true"。导出已签名的发布版本时,工具不会添加该属性。在Ant中,一个ant debug命令会自动插入android:debuggable =" true"属性,而ant释放不。 Ifandroid:可调试="真"手动设置,然后ant发布实际上会进行调试构建,而不是发布版本。 因此,在大多数情况下,您可以做的最好的事情就是不要处理属性,因为这样您就可以确保在导出签名版本时它不会包含调试数据。

唯一的例外是,如果您确实需要分发包含调试信息的签名包,而不是常见的情况...