在build.gradle(应用程序(文件中,默认情况下,
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
根据https://developer.android.com/studio/build/shrink-code,
minifyEnabled true
使代码更加安全(使反向工程变得困难(,并在我们用于发布应用程序的发布版本中缩小了大小。
我知道使用minifyEnabled true
会使编译时间更长,但通常调试构建用于开发和测试,这无论如何都不会受到影响。
我想了解的是,在运行时使用minifyEnabled true
会带来哪些缺点(如性能影响(。我并不担心发布版本的构建时间。
Google Play控制台也建议我们启用它,因此我想知道为什么默认情况下禁用minifyEnabled
。
通过在您的发布版本中添加minifyEnabled true,您可以混淆代码,但在发布版本中默认设置为false,因为如果设置为true,则需要编写proguard规则来告诉编译器在混淆代码时要忽略哪些类。如果minimyEnabled默认设置为true,并且开发人员忘记添加proguard规则,则可能导致运行时崩溃。
但是,将minimyEnabled设置为true,将shrinkResources设置为true可以减小apk大小。
正如NIKIL AGGARWAL所说,将minimyEnabled设置为true可能导致运行时崩溃。
您应该研究每个使用过的库,以便将它们的ProGuard规则包含到您的项目中。此外,有时在Gradle或库升级后,您应该再次检查ProGuard规则,并相应地在项目中更新它们。
您应该将网络模型的数据类添加到ProGuard中。
你应该检查你的release
构建在几个不同Android版本的设备/模拟器上,以了解它可能在哪里崩溃。在release
构建中调试是困难的,并且由于混淆,它变成了一场噩梦。
然而,在您将minimyEnabled设置为true并避免崩溃后,您将减小apk大小并阻止破解尝试。