如何使用最新的 R8 Shrinker 版本
Posted
技术标签:
【中文标题】如何使用最新的 R8 Shrinker 版本【英文标题】:How to use latest R8 Shrinker version 【发布时间】:2019-07-30 15:34:45 【问题描述】:由于一个错误,我使用了 R8 Shrinker 的本地 jar 文件(按照 R8 团队的建议),并将类路径添加到顶部 gradle.build
:
classpath files($..../R8.jar/$)
现在,无论对 android Studio 进行任何更新,Gradle 构建仍然使用旧版本的 R8
,我之前使用过 V. 1.4.55
最近我看到他们发布了最新版本:V. 1.4.69
https://r8.googlesource.com/r8/
所以我的问题是:如何配置 gradle 以告知使用最新版本的 R8,因为我没有看到任何关于此的文档
【问题讨论】:
【参考方案1】:您应该添加以下内容:
buildscript
repositories
maven
url 'http://storage.googleapis.com/r8-releases/raw'
dependencies
classpath 'com.android.tools:r8:1.4.71' //Must be before the Gradle Plugin for Android. - Or any other version
classpath 'com.android.tools.build:gradle:...'
【讨论】:
你可以从这里找到 r8 版本r8.googlesource.com/r8/+refs 这曾经对我有用,对于我突然从 R8 开始遇到的大量崩溃来说,这确实是一个很好的解决方法。不幸的是,该 Maven 存储库中似乎不再提供二进制文件...【参考方案2】:目前没有办法引用 R8 的最新版本。使用特定版本的 R8 只能用于解决错误,当该修复到达 Android Gradle 插件时,应删除对特定版本 R8 的引用,以便仅使用 Android Gradle 插件中内置的 R8。
这是为了限制使用特定的 R8 版本,避免开发者停留在旧版本上,并鼓励开发者使用捆绑了 Android Gradle 插件的版本。这限制了开发人员使用的不同版本的数量。
【讨论】:
【参考方案3】:截至 2020 年 7 月,您可以执行以下操作:
将此添加到您的 build.gradle
文件中(用于项目,而不是应用)
dependencies
classpath 'com.android.tools:r8:2.0.88' // Must be before the Gradle Plugin for Android.
// in addition to everything else that was here ....
整个文件应该是这样的,供参考:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript
repositories
google()
jcenter()
dependencies
classpath 'com.android.tools:r8:2.0.88' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:4.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
allprojects
repositories
google()
jcenter()
maven url "https://jitpack.io"
task clean(type: Delete)
delete rootProject.buildDir
【讨论】:
以上是关于如何使用最新的 R8 Shrinker 版本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用新的 Android 2.0 Shrinker 并将 useProguard 设置为 false?
如何让 R8 + proguard-android-optimize.txt + Google Drive API 无缝运行?