AGPBI警告

运行Android项目时,有时候会看到报一大片的警告信息,如下:

bash 复制代码
AGPBI: {"kind":"warning","text":"An error occurred when parsing kotlin metadata. This normally happens when using a newer version of kotlin than the kotlin version released when this version of R8 was created. To find compatible kotlin versions, please see: https://developer.android.com/studio/build/kotlin-d8-r8-versions","sources":[{}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Unexpected error during rewriting of Kotlin metadata for class 'cn.android666.sip.activity.settings.IdentityActivity':\r\ncom.android.tools.r8.internal.xb4: Should never be called\r\n\tat com.android.tools.r8.kotlin.z0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:2)\r\n\tat com.android.tools.r8.kotlin.x0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:308)\r\n\tat com.android.tools.r8.kotlin.x0.b(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:17)\r\n\tat com.android.tools.r8.kotlin.x0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:269)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:23)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:34)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:17)\r\n\tat com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)\r\n\tat com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:76)\r\n\tat com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)\r\n\tat com.google.common.util.concurrent.DirectExecutorService.execute(DirectExecutorService.java:51)\r\n\tat java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)\r\n\tat com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:79)\r\n\tat com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:37)\r\n\tat com.android.tools.r8.internal.r34.submit(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:1)\r\n\tat com.android.tools.r8.internal.d34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:15)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:19)\r\n\tat com.android.tools.r8.internal.wx0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:3)\r\n\tat java.base/java.util.ArrayList.forEach(Unknown Source)\r\n\tat com.android.tools.r8.internal.wx0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:2)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:10)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:33)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:25)\r\n\tat com.android.tools.r8.internal.q34.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:22)\r\n\tat com.android.tools.r8.i0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:3)\r\n\tat com.android.tools.r8.kotlin.x0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:98)\r\n\tat com.android.tools.r8.D8.b(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:29)\r\n\tat com.android.tools.r8.internal.o44.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:2)\r\n\tat com.android.tools.r8.D8.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:126)\r\n\tat com.android.tools.r8.D8.d(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:136)\r\n\tat com.android.tools.r8.D8.b(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:1)\r\n\tat com.android.tools.r8.internal.is0.a(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:28)\r\n\tat com.android.tools.r8.internal.is0.b(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:2)\r\n\tat com.android.tools.r8.D8.run(R8_8.13.17_97db08832ecbd4beb6016980e73b2386bedfe714d44a914167fcb89e61b9b5c1:11)\r\n\tat com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:129)\r\n\tat com.android.build.gradle.internal.dexing.DexWorkActionKt.process(DexWorkAction.kt:178)\r\n\tat com.android.build.gradle.internal.dexing.DexWorkActionKt.processNonIncrementally(DexWorkAction.kt:146)\r\n\tat com.android.build.gradle.internal.dexing.DexWorkActionKt.launchProcessing(DexWorkAction.kt:73)\r\n\tat com.android.build.gradle.internal.dexing.DexWorkAction.run(DexWorkAction.kt:45)\r\n\tat com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)\r\n\tat org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)\r\n\tat org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)\r\n\tat org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)\r\n\tat org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)\r\n\tat org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)\r\n\tat org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)\r\n\tat org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:210)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:205)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)\r\n\tat org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:54)\r\n\tat org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)\r\n\tat org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)\r\n\tat org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)\r\n\tat java.base/java.util.concurrent.FutureTask.run(Unknown Source)\r\n\tat org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)\r\n\tat org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)\r\n\tat org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)\r\n\tat org.gradle.internal.Factories$1.create(Factories.java:31)\r\n\tat org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)\r\n\tat org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)\r\n\tat org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)\r\n\tat org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)\r\n\tat org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)\r\n\tat java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)\r\n\tat java.base/java.util.concurrent.FutureTask.run(Unknown Source)\r\n\tat org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\r\n\tat org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)\r\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)\r\n\tat java.base/java.lang.Thread.run(Unknown Source)\r\n","sources":[{}],"tool":"D8"}

其实这个警告信息里面已经说明了问题,如下:

An error occurred when parsing kotlin metadata

This normally happens when using a newer version of kotlin

than the kotlin version released when this version of R8 was created

翻译为:

你用的 Kotlin 版本太新了

当前 AGP 内置的 R8/D8 还不完全支持

👉 在解析 Kotlin metadata 时出问题

解决方案:

方案1:升级AGP,我当前使用的kotlin版本是 2.3,Android官方中对应的是AGP 8.13.2,而我当前的AGP是8.13.1,所以升级一下AGP版本即可。官方表格:https://developer.android.com/build/kotlin-support?hl=zh-cn,如下:

Kotlin 版本 所需的 AGP 版本 所需的 R8 版本
1.3 4.1 2.1.86
1.4 7.0 3.0.76
1.5 7.0 3.0.77
1.6 7.1 3.1.51
1.7 7.2 3.2.47
1.8 7.4 4.0.48
1.9 8.0 8.0.27
2.0 8.5 8.5.10
2.1 8.6 8.6.17
2.2 8.10 8.10.21
2.3 8.13.2 8.13.191
2.4 9.1.0 9.1.29

从这个表格可以看到,不同版本的kotlin需要的AGP和R8的版本。

方案2:降低Kotlin版本。