在过去的几天里,我从Eclipse切换到了Android Studio,并且大部分工作都得到了解决。但是,当我生成签名的APK时,似乎ProGuard永远不会运行。
我正在使用Generate Signed APK向导,选择'Run ProGuard'并指定我的proguard.cfg作为配置文件。构建过程运行没有错误并生成功能apk,但apk比Eclipse生成的大65%。当我通过Android Studio的APK向导生成apk并且不选择'Run Proguard'时,生成的apk与应该运行ProGuard的apk相同。在我的项目目录中的任何位置都没有生成mapping.txt,seeds.txt或usage.txt。我试过添加
buildTypes {
release {
runProguard true
proguardFile file('proguard.cfg')
proguardFile getDefaultProguardFile('project-android.txt')
}
}
和我的build.gradle文件的变体,但也没有任何效果。
这是在Android Studio 0.2.0上发生的,虽然我在0.1.9上看到了相同的行为。我正在使用Windows 7。
谁能告诉我可能会发生什么?如果我能找到ProGuard应该生成的日志,我会很高兴。
答案 0 :(得分:3)
只需更新build.gradle
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
详情Reference。 我希望它会帮助你
答案 1 :(得分:2)
很高兴,我找到了解决方案。问题是在创建签名的apk之前,我已经修改了AndroidManifest中的包名称,以覆盖Google Play商店中的特定版本。但是,这个包名称的更改并未重构所有相应的“import”包名称。“R;”整个代码中的行。今天,在重新导入项目之后,由于尝试导入R的错误,它将不再构建。一旦我修改了所有导入行,不仅我的项目正确构建,而且导出已签名的apk正确运行ProGuard。
我猜测Android Studio以某种方式缓存“导入R”行,并且当ProGuard尝试运行时,它没有那些缓存的值然后崩溃。为什么没有错误输出让我看,我不知道。
答案 2 :(得分:0)
**in new Gradle system**
BuildType.runProguard -> minifyEnabled
BuildType.zipAlign -> zipAlignEnabled
BuildType.jniDebugBuild -> jniDebuggable
BuildType.renderscriptDebug -> renderscriptDebuggable
ProductFlavor.renderscriptSupportMode -> renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode -> renderscriptNdkModeEnabled