如何为 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?的主要内容,如果未能解决你的问题,请参考以下文章