调试和发布apks之间的区别

use*_*516 27 android release apk

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

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

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

And*_*tel 13

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

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

  • 对于释放键,您必须明确指定要签名的键,并且将关闭调试标志,以便无法对其进行调试.

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

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

  • 是的,apk签名是我所说的在生产中发布时最重要的.其他东西可以应用于两种构建类型. (2认同)
  • @Shafizadeh发布apks必须解压缩并手动修改和重新压缩+由调试证书重新签名,以便其他人可以调试.访问代码始终可供每个用户使用,该版本被"混淆",而不是"阻止".您无法隐藏用户必须能够运行代码的代码,在某个阶段代码必须可供用户使用,此时熟练的用户可以复制代码并进行探索/逆向工程."混淆"只会使这个过程变得更加困难. (2认同)

prf*_*low 11

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

收缩您的代码和资源:

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

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

  • 您也可以为调试版本启用proguard (7认同)

小智 9

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

*使用debuuger进行调试

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

*查看logcat中的日志

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

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


Sha*_*hav 5

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

发布版本还可能触发其他选项,例如代码混淆和拆分,因此请注意这些。

然而,这两个版本之间可以带来许多变化。这些应该在您的 中指定build.gradle(如果有)。所以,你应该留意那里。