在将kotlin版本(ext.kotlin_version)更新为1.6.10后,我有一些错误
com.android.tools.r8.internal.E00: Unexpected type in conversion to primitive: OBJECT
Execution failed for task ':app:minifyReleaseWithR8'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lcom/facebook/login/DefaultAudience$EnumUnboxingLocalUtility;getNativeProtocolAudience(I)Ljava/lang/String;, origin: ..\.gradle\caches\transforms-3\57102c4e3d32396b86898e5ca0dd620d\transformed\jetified-facebook-core-7.1.0-runtime.jar:com/facebook/login/DefaultAudience.class
如果在我的build.gradle(:app)中使用选项minifyEnabled true和生成有符号包,就会发生这种情况。如果我使用旧的ext.kotlin_version (例如,1.5.0),则不会出现此错误。
我认为,如果在proguard-rules.pro中使用正确的规则,我可以解决这个问题。
发布于 2022-03-30 06:49:51
这是由R8中的问题引起的。Fix可在R8 3.1.71、3.2.55和3.3.26-dev版本中使用。
将以下内容添加到settings.gradle
或settings.gradle.kts
中,以使用与AGP绑定的版本不同的特定版本的R8:
pluginManagement {
buildscript {
repositories {
mavenCentral()
maven {
url = uri("https://storage.googleapis.com/r8-releases/raw")
}
}
dependencies {
classpath("com.android.tools:r8:X.Y.Z")
classpath('com.google.guava:guava:30.1.1-jre') // <-- THIS IS REQUIRED UNTIL R8 3.2.4-dev
}
}
}
发布于 2022-03-15 15:14:06
我找到了解决这个问题的正确规则。您需要将此代码添加到proguard-rules.pro中
-keep class com.facebook.login.** {*;}
这一行让我们忽略com.facebook.login包中所有文件的minifyEnabled真选项。
https://stackoverflow.com/questions/71484634
复制相似问题