com.android.tools.r8.CompilationFailedException:编译失败,位置:Lcom



在将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: ...gradlecachestransforms-357102c4e3d32396b86898e5ca0dd620dtransformedjetified-facebook-core-7.1.0-runtime.jar:com/facebook/login/DefaultAudience.class

如果我在版本中使用选项minimyEnabled true。gradle(:app(与生成签名捆绑包,就会发生这种情况。如果我使用旧的ext.kotlin_version(例如1.5.0(,则不会出现此错误。

我认为,如果我在proguard rules.pro中使用正确的规则,我可以解决这个问题。

这是由R8中的一个问题引起的。修复在R8 3.1.71、3.2.55和3.3.26-dev版本中可用。

将以下内容添加到settings.gradlesettings.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
}
}
}

我找到了决定这个问题的正确规则。您需要将此代码添加到proguard规则中。pro:

-keep class com.facebook.login.** {*;}

此行允许忽略com.facebook.login包中所有文件的选项minifyEnabled true

相关内容

最新更新