将 Android Gradle 插件升级到 8.0.2 后使用 R8 缩小 Android 应用程序时出错

问题描述 投票:0回答:2

我最近将我的 Android 应用程序项目中的 Android Gradle 插件从版本 7.4.2 升级到了 8.0.2。但是,当执行 minifyReleaseWithR8 任务时,我现在在发布构建期间遇到错误。

我收到的错误消息如下:

Task :app:minifyReleaseWithR8
AGPBI: {"kind":"error","text":"Library class android.test.AndroidTestRunner extends program class junit.runner.BaseTestRunner","sources":[{}],"tool":"R8"}
Library class android.test.AndroidTestRunner extends program class junit.runner.BaseTestRunner

AGPBI: {"kind":"error","text":"Library class android.test.InstrumentationTestCase extends program class junit.framework.TestCase","sources":[{}],"tool":"R8"}
Library class android.test.InstrumentationTestCase extends program class junit.framework.TestCase

Task :app:minifyReleaseWithR8 FAILED

该错误似乎与缺少服务类以及库类和程序类之间的冲突有关。

这些错误是在我更新 Android Gradle 插件后才开始出现的。我已尝试清理项目并确保所有依赖项都是最新的,但问题仍然存在。

有其他人在升级到 Android Gradle Plugin 8.0.2 时遇到类似的问题吗?如何解决这些错误并使用 R8 成功缩小我的发布版本?

任何帮助或建议将不胜感激。谢谢!

build proguard minify android-build android-r8
2个回答
2
投票

我们通过添加解决了问题

-dontwarn com.squareup.okhttp.CipherSuite
-dontwarn com.squareup.okhttp.ConnectionSpec
-dontwarn com.squareup.okhttp.TlsVersion

app/proguard-rules.pro

似乎某些缩小警告被视为错误。


0
投票

我通过添加解决了这个问题

-dontwarn org.bouncycastle.jsse.BCSSLSocket
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
-dontwarn org.conscrypt.Conscrypt$Version
-dontwarn org.conscrypt.Conscrypt
-dontwarn org.conscrypt.ConscryptHostnameVerifier
-dontwarn org.joda.convert.FromString
-dontwarn org.joda.convert.ToString
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
-dontwarn org.openjsse.net.ssl.OpenJSSE

您可以在 build/output/mapping/release/missing_rules.txt 文件中找到这些内容。只需复制并粘贴 progaurd-rules.pro 文件中 Missing_rules.txt 中的所有类即可。

© www.soinside.com 2019 - 2024. All rights reserved.