Android Studio ProGuard似乎无法运行

时间:2013-07-15 06:28:53

标签: android proguard android-studio

在过去的几天里,我从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应该生成的日志,我会很高兴。

3 个答案:

答案 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

或访问 http://tools.android.com/tech-docs/new-build-system