11

在过去的几天里,我从 Eclipse 切换到了 Android Studio,并且几乎所有东西都可以正常工作。但是,当我生成一个签名的 APK 时,它看起来好像 ProGuard 从未运行过。

我正在使用生成签名的 APK 向导,选择“运行 ProGuard”并将我的 proguard.cfg 指定为配置文件。构建过程运行没有错误并生成一个功能性 apk,但该 apk 比 Eclipse 生成的大 65%。当我通过 Android Studio 的 APK 向导生成 apk 并且不选择“运行 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 应该生成的日志,我会很高兴。

4

3 回答 3

3

只需更新您的build.gradle

buildTypes {           
   release {
     minifyEnabled true
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
   }
}

详情参考。我希望它会帮助你

于 2014-12-24T11:24:37.827 回答
2

令人高兴的是,我找到了解决方案。问题是,在创建签名的 apk 之前,我修改了 AndroidManifest 中的包名称,以便覆盖 Google Play 商店中的特定构建。然而,这个包名的改变并没有重构所有对应的“import 'package name'.R;” 代码中的行。今天,在重新导入项目后,由于尝试导入 R 时出错,它不再构建。一旦我修改了所有导入行,我的项目不仅构建正确,而且导出签名的 apk 正确运行 ProGuard。

我猜测 Android Studio 以某种方式缓存了“import R”行,并且当 ProGuard 尝试运行时,它没有那些缓存的值,然后崩溃了。为什么我看不到错误输出,我不知道。

于 2013-07-16T01:47:31.990 回答
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

于 2014-11-25T11:55:02.463 回答