调试和发布apks之间的区别

时间:2016-08-10 04:37:12

标签: android apk release

我是android以及android studio的新手。 根据我在visual studio中的经验,当我们在另一台机器上测试.exe时,我们会复制release文件夹和.exe。

但是在Android工作室我看到我的同事通过使用USB驱动器在其他系统中复制和部署来测试调试apk。似乎也在工作。 我可以知道部署该版本的后果是什么?发布版本是否仅与Play商店有关?

除了调试版本包含可能使其变慢或笨重的调试信息之外,技术差异/后果是什么?

4 个答案:

答案 0 :(得分:11)

主要区别在于调试标志和签名密钥:

  • 对于调试版本,apk将使用默认调试签名密钥进行签名,并启用调试标记。

  • 对于发布密钥,您必须明确指定要签名的密钥,并且将关闭调试标志,以便无法对其进行调试。

  • 可以为发布版本打开Proguard。 (也适用于调试版本,但不建议)。此步骤需要明确执行,默认情况下为false。

注意:这些内容可以在build.config中进行更改,您可以选择所需的排列和组合。

答案 1 :(得分:10)

一个重要的区别是发布APK通常会在其上运行ProGuard(代码缩减),它会检测并删除未使用的代码以减少APK大小。

来自Shrink Your Code and Resources

  

请注意,代码缩小会减慢构建时间,因此如果可能,应避免在调试版本中使用它。但是,在您最终用于测试的APK上启用代码收缩非常重要,因为如果您没有充分定制要保留的代码,它可能会引入错误。

您的同事可能正在测试调试版本类型以节省时间,因为与调试APK相比,构建版本APK可能需要更长的时间。

答案 2 :(得分:4)

以上所有答案都是正确的主要区别在于,如果我们使用 debug.apk 在设备/模拟器上安装应用程序,我们可以

*用调试器调试

*使用 android studio profiler 分析 CPU、内存、网络

*查看logcat中的日志

*使用布局检查器调试布局

如果使用 release.apk 我们不能使用上述功能,我们配置一些功能/库以在特定的输出类型下工作(就像我们只能在调试 apk 中使用leakCanary)

答案 3 :(得分:0)

调试版本和发布版本之间的主要区别(如果在build.gradle中另有说明)是签名的关键。大多数应用程序分发渠道[仅]希望使用发布密钥签名的应用程序对开发人员进行身份验证。否则,没有差异。

发布版本也可能触发其他选项,如代码混淆和拆分,所以请注意这些。

但是,这两个版本之间可能会有很多变化。这些应在build.gradle中指定,如果有的话。所以,你应该留意那里。