ProGuard不会生成映射文件

时间:2016-08-05 07:58:25

标签: android apk proguard

我在SO上读过多个帖子但找不到任何答案。我在这里有多个问题。让我来形容一下:

  • 我对ProGuard了解不多,但根据我的信息,它在某种程度上混淆了Android代码。我的问题是我需要在某个地方启用吗?我的Gradle文件中minifyEnabledfalse。这会完全禁用ProGuard吗?
  • 要对Firebase上的崩溃进行反模糊处理并获取堆栈跟踪,我需要映射文件。我找不到任何地方。在app / build / outputs文件夹中,我只有

Folder

然后我读了一下关于proguard-rules.pro文件的地方。它只是有一些评论而没有代码。然后我把它放进去:-printmapping mapping.txt。然后再次生成签名APK,仍然没有成功。我错过了什么?

编辑1:如果我必须执行一些adb terminal命令,请描述步骤。我之前从未使用过终端。

4 个答案:

答案 0 :(得分:13)

在您的gradle文件中,您必须专门将minifyEnabled选项设置为true。
这样可以进行混淆。通过这样做,它还会应用您在' proguard-rules.pro'上定义的模糊规则。文件。

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

您可以通过应用相应的命令打印映射种子(请注意,您需要完全解码/理解加密代码)

-printseeds obfuscation/seeds.txt

-printmapping obfuscation/mapping.txt

基本proguard文件的一个例子是:

-optimizationpasses 5
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*

-verbose

-dump obfuscation/class_files.txt
-printseeds obfuscation/seeds.txt
-printusage obfuscation/unused.txt
-printmapping obfuscation/mapping.txt

此致

答案 1 :(得分:7)

尝试检查设置 - > InstantRun ...必须禁用它:)

答案 2 :(得分:2)

  1. 将minifyEnabled设置为true。
  2. 构建生成APK。
  3. 在输出文件夹中查找映射文件。[不清理项目或它将会消失]

答案 3 :(得分:1)

  1. 您需要将minifyEnabled设置为true才能启用Proguard
  2. 对于某些库,您需要在proguard-rules.pro内写一些行,以使它们不被Proguard混淆。请参阅"配置ProGuard"在此页面上,了解要为Firebase添加的内容:https://firebase.google.com/docs/database/android/start/