您的位置:首页 > 文旅 > 旅游 > 杭州十大互联网公司排名_中企动力邮箱_厦门百度关键词seo收费_设计网络营销方案

杭州十大互联网公司排名_中企动力邮箱_厦门百度关键词seo收费_设计网络营销方案

2025/4/21 12:34:19 来源:https://blog.csdn.net/printf123scanf/article/details/147065317  浏览:    关键词:杭州十大互联网公司排名_中企动力邮箱_厦门百度关键词seo收费_设计网络营销方案
杭州十大互联网公司排名_中企动力邮箱_厦门百度关键词seo收费_设计网络营销方案

在这里插入图片描述

问题

在运行 gradle plugin 插件的 transform R8 阶段出现了报错

Caused by: com.android.tools.r8.internal.xk: java.lang.NullPointerException: Cannot invoke “String.length()” because “” is null

报错日志


FAILURE: Build failed with an exception.* What went wrong:
Execution failed for task ':app:minifyCommonReleaseWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable> Compilation failed to complete, origin: D:\download\250310\agp7mbFix\app\build\intermediates\transforms\CheckPluginTransform\common\release\27.jar> :androidx/appcompat/graphics/drawable/DrawableContainerCompat$1.class//略略略Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable//略略略Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: D:\download\250310\agp7mbFix\app\build\intermediates\transforms\CheckPluginTransform\common\release\27.jar:androidx/appcompat/graphics/drawable/DrawableContainerCompat$1.class//略略略Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null//略略略Caused by: java.util.concurrent.ExecutionException: com.android.tools.r8.internal.xk: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null//略略略Caused by: com.android.tools.r8.internal.xk: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null

环境

看日志便知道报错是在 R8 优化阶段

看看我当前的打包环境,AGP7+ 的工程

  • AGP:7.4.2
  • Gradle:7.6.4
    在这里插入图片描述

分析

看报错的这个类属于哪一依赖 jar 里面:androidx/appcompat/graphics/drawable/DrawableContainerCompat$1.class

找到他是来自于依赖:androidx.appcompat:appcompat-resources:1.7.0

在这里插入图片描述

这个依赖最终是谁引入的呢?来自 androidx.appcompat:appcompat

+--- androidx.appcompat:appcompat:1.2.0 -> 1.7.0
|    +--- androidx.activity:activity:1.7.0 -> 1.9.2
|    +--- androidx.appcompat:appcompat-resources:1.7.0

查看官方发布的版本日志,目前最新版本就是 1.7.0

那么先尝试降低一个版本打包会不会也有这个问题呢?

强制指定版本依赖 1.6.0,最终打包成功 ✌️

在这里插入图片描述

那么问题来了

一开始我还以为是因为我的插件 transform 存在问题导致打包报错

现在看来并不是我插件影响

难道我后续打包都要使用低版本吗?

接着又发现另外一个依赖也存在同样的问题: androidx.viewpager2:viewpager2:1.1.0

没错,我还是选择先降版本打包,使用 1.0.0 打包果然是正常的

在这里插入图片描述

小结

所以临时解决版本发降版本打包

  • androidx.appcompat:appcompat-resources:1.7.0 -> androidx.appcompat:appcompat-resources:1.2.0
  • androidx.appcompat:appcompat:1.7.0 -> androidx.appcompat:appcompat:1.2.0
  • androidx.viewpager2:viewpager2:1.1.0 -> androidx.viewpager2:viewpager2:1.0.0

在这里插入图片描述

但是总不能一直降版本打包吧,所以创建了一个 IssueTracker

详细描述看链接:NullPointerException compiling with R8 4.0.52

可能需要 VPN 才能访问

我对这个 Issue 做一个简单的总结

解决方案

在这里插入图片描述

方案一

  • 当前 AGP 7.4.2 你需要升级 R8 4.0.72 版本

Android Studio 工程使用指定的 R8 版本:Replacing R8 in Android Gradle plugin

pluginManagement {buildscript {repositories {mavenCentral()maven {url = uri("https://storage.googleapis.com/r8-releases/raw")}}dependencies {classpath("com.android.tools:r8:4.0.72")}}
}

方案二

  • 我上面提到的,降低 androidx 模块版本

方案三

  • 升级 AGP 版本(因为 AGP 是固定搭配 R8 版本一起发布的)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com