ProGuard 不生成映射文件
ProGuard doesn't generate mapping file
我已经阅读了关于 SO 的多个主题,但找不到任何答案。我在这里有多个问题。让我描述一下:
- 我对 ProGuard 了解不多,但根据我的信息,它在一定程度上混淆了 Android 代码。我的问题是我需要在某处启用它吗?
minifyEnabled
在我的 Gradle 文件中是 false
。这会完全禁用 ProGuard 吗?
- 要对 Firebase 上的崩溃进行去混淆处理并获取堆栈跟踪,我需要映射文件。我到处都找不到。在 app/build/outputs 文件夹中,我只有
然后我在某处阅读了有关 proguard-rules.pro
文件的内容。它只有一些注释,没有代码。然后我把这个放进去:-printmapping mapping.txt
。然后再次生成签名的APK,仍然没有成功。我错过了什么?
编辑 1:如果我必须执行一些 adb 终端命令,请描述步骤。我以前从未使用过终端。
- 您需要将
minifyEnabled
设置为 true 才能启用 Proguard
。
- 对于某些库,您需要在
proguard-rules.pro
中写一些行,以免它们被 Proguard 混淆。请参阅本页的 "Configure ProGuard" 部分以了解要为 Firebase
添加的内容:https://firebase.google.com/docs/database/android/start/
- 将 minifyEnabled 设置为 true。
- 构建生成 APK。
- 在输出文件夹中查找映射文件。[不要清理项目,否则它将消失]
在您的 gradle 文件中,您必须专门将 minifyEnabled 选项设置为 true。
这使得混淆成为可能。通过这样做,它还会应用您在 'proguard-rules.pro' 文件中定义的混淆规则。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
您可以打印 mapping 和 seeds 使用(注意您需要两者才能完全 decode/understand 加密代码) 通过应用相应的命令
-printseeds obfuscation/seeds.txt
和
-printmapping obfuscation/mapping.txt
一个基本混淆文件的例子是:
-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
此致,
尝试检查设置 -> InstantRun...它必须被禁用 :)
我已经阅读了关于 SO 的多个主题,但找不到任何答案。我在这里有多个问题。让我描述一下:
- 我对 ProGuard 了解不多,但根据我的信息,它在一定程度上混淆了 Android 代码。我的问题是我需要在某处启用它吗?
minifyEnabled
在我的 Gradle 文件中是false
。这会完全禁用 ProGuard 吗? - 要对 Firebase 上的崩溃进行去混淆处理并获取堆栈跟踪,我需要映射文件。我到处都找不到。在 app/build/outputs 文件夹中,我只有
然后我在某处阅读了有关 proguard-rules.pro
文件的内容。它只有一些注释,没有代码。然后我把这个放进去:-printmapping mapping.txt
。然后再次生成签名的APK,仍然没有成功。我错过了什么?
编辑 1:如果我必须执行一些 adb 终端命令,请描述步骤。我以前从未使用过终端。
- 您需要将
minifyEnabled
设置为 true 才能启用Proguard
。 - 对于某些库,您需要在
proguard-rules.pro
中写一些行,以免它们被 Proguard 混淆。请参阅本页的 "Configure ProGuard" 部分以了解要为Firebase
添加的内容:https://firebase.google.com/docs/database/android/start/
- 将 minifyEnabled 设置为 true。
- 构建生成 APK。
- 在输出文件夹中查找映射文件。[不要清理项目,否则它将消失]
在您的 gradle 文件中,您必须专门将 minifyEnabled 选项设置为 true。
这使得混淆成为可能。通过这样做,它还会应用您在 'proguard-rules.pro' 文件中定义的混淆规则。
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
您可以打印 mapping 和 seeds 使用(注意您需要两者才能完全 decode/understand 加密代码) 通过应用相应的命令
-printseeds obfuscation/seeds.txt
和
-printmapping obfuscation/mapping.txt
一个基本混淆文件的例子是:
-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
此致,
尝试检查设置 -> InstantRun...它必须被禁用 :)