如何为 Android 升级 ProGuard?

Posted

技术标签:

【中文标题】如何为 Android 升级 ProGuard?【英文标题】:How to upgrade ProGuard for Android? 【发布时间】:2017-07-18 12:49:51 【问题描述】:

我使用android SDK Manager 下载了最新版本的Android SDK。但是ProGuard 没有更新,一直保持在 4.7 版本。

是否需要从其website手动下载ProGuard并解压到\android-sdk\tools\proguard

或者 Android SDK 会一直使用 4.7 版吗? 4 years 一直是这样。

【问题讨论】:

您还没有哪些功能需要做? 为了使用 Android Target SDK 24+ 进行编译,需要 Java 版本 1.8。但是 Java 1.8 与 Proguard 4.7 不兼容。 那么开发人员如何编译并发布他们的代码?你启用 Jack 编译器了吗? 如果所有目标 SDK 都设置为 Android 6.0 (api23),则可以导出 APK。我不知道 Jack 编译器是什么。 您必须启用 Jack 编译才能使用 Java 8 功能集...developer.android.com/guide/platform/j8-jack.html 【参考方案1】:

如今,ProGuard 是 Android Gradle 插件的依赖项,通常会随之更新。查看./gradlew buildEnvironment 的输出(自Gradle 2.10 起支持),您会看到类似

classpath
+--- com.android.tools.build:gradle:2.2.3
|    \--- com.android.tools.build:gradle-core:2.2.3
...
|         +--- net.sf.proguard:proguard-gradle:5.2.1
|         |    \--- net.sf.proguard:proguard-base:5.2.1

如果你想使用另一个 ProGuard 版本而不是 Android Gradle 插件所依赖的版本,你可以像这样覆盖它

buildscript 
    configurations.all 
        resolutionStrategy 
            // We want version 5.3.2 instead of 5.2.1.
            force 'net.sf.proguard:proguard-gradle:5.3.2'
        
    

【讨论】:

【参考方案2】:

像这样修改你的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript 
    ...
    dependencies 
        classpath 'net.sf.proguard:proguard-gradle:6.1.1' // <-- Add this line
        ...
    

您不必手动下载。

【讨论】:

以上是关于如何为 Android 升级 ProGuard?的主要内容,如果未能解决你的问题,请参考以下文章

在 Eclipse 中使用 Proguard 进行 Android 开发时,如何检查/升级 Proguard 版本?

如何为javascript接口配置proguard?

如何为 Amazon IAP 设置 ProGuard?

如何为多个命名空间配置 ProGuard 保留选项?

如何为Amazon IAP设置ProGuard?

如何为 Jackson JSON 处理器设置 PROGUARD?