如何在 Android Studio 中启用 ProGuard 混淆功能?
Posted
技术标签:
【中文标题】如何在 Android Studio 中启用 ProGuard 混淆功能?【英文标题】:How to enable ProGuard obfuscation in Android Studio? 【发布时间】:2016-05-10 18:57:42 【问题描述】:我必须通过在 android Studio 中启用 Proguard 混淆来保护我的应用。我已经搜索了如何应用它的过程,但我没有得到任何明确的解决方案。当我尝试它时,我总是得到一个错误。那么谁能告诉我在我的应用中应用它的明确步骤?
我是按照以下步骤进行的:
在 Android Studio 中,打开一个 Android 项目。
更改为项目视图。
更改以下行:
minifyEnable false
到 minifyEnable true
设置 ProGuard 规则(可选)
4.1 在项目视图中,选择 proguard-rules.pro 文件。
4.2 添加以下行告诉 ProGuard 不要混淆某些类。
-keepclassmembers class com.dom925.xxxx
public *
我按照这些步骤得到的错误是
错误:任务 ':app:packageRelease' 执行失败。 无法计算 D:\Android\Pojectname\app\build\intermediates\classes-proguard\release\classes.jar 的哈希值
【问题讨论】:
发布您的 build.gradle,以便我们根据您的依赖项做出更准确的答案 这里有一些参考***.com/questions/30934729/… 这里有一些参考***.com/questions/20885725/… 【参考方案1】:在 Android Studio 中启用 ProGuard。
以下是如何在 Android Studio 中启用默认 ProGuard 的示例。
-
进入app的build.gradle文件
启用 minifyEnabled true
启用 shrinkResources true 以减小 APK 大小
proguardFiles getDefaultProguardFile('proguard-android.txt')
启用默认选项。如果您想使用自己的 proguard 文件,请使用以下规则。
buildTypes
release
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debug
debuggable true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
以下链接提供了用于 Android 的 ProGuard 设置和其他设置的链接:
Default ProGuard file Gist with example更多详情请通过this link
【讨论】:
为什么我们需要混淆调试? 好问题!!但如果您想根据您可以或忽略的用例来使用,这是一个可用的选项。【参考方案2】:我发现了问题:
为您的项目打开 proguard-rules.pro 并将其添加到底部:
-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
基本上我是如何解决这个问题的,我尝试在“发布”模式下运行我的应用程序并遇到了一堆类似于这个人的错误:https://github.com/square/okio/issues/144
我几乎按照他说的做了。
希望这可以帮助其他人生成他们的 APK!
在此处访问更多详细信息:
Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of /../AndroidStudioProjects/../classes.jar
【讨论】:
但我还是遇到了错误朋友***.com/questions/35150026/…【参考方案3】:如果你用jack构建android项目,那么它会自动做收缩、混淆、重新打包和multidex。 只需在下面添加:
defaultConfig
jackOptions
enabled true
在构建类型中,提及项目proguard
文件:
buildTypes
release
// Jack build environment does not require minifyEnabled or shrinkResources.
// Conceptually, the jack compiler consolidates the functionality of javac, ProGuard, and dex in a single conversion step
//minifyEnabled = true
//shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
debug
...................
要禁用 ProGuard 混淆,需要在 proguard-project.txt 文件中添加以下行
####No obfuscation
-dontobfuscate
【讨论】:
以上是关于如何在 Android Studio 中启用 ProGuard 混淆功能?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 中启用 ProGuard 混淆功能?
如何在android studio上以编程方式检查自动启动权限是启用还是禁用
使用android studio运行应用程序时如何启用android 6.0中的所有权限