返回顶部
首页 > 资讯 > 移动开发 >android.enableD8.desugaring = false引发问题解决
  • 396
分享到

android.enableD8.desugaring = false引发问题解决

android enableD8解决android enableD8 2023-05-13 20:05:27 396人浏览 安东尼
摘要

目录问题:大致的原因:关闭脱糖的操作问题: Kotlin升级引起的类找不到情况[其实跟Kotlin版本无关] java.lang.NoClassDefFoundError: Fail

问题:

Kotlin升级引起的类找不到情况[其实跟Kotlin版本无关]

java.lang.NoClassDefFoundError: Failed resolution of: LAndroidx/lifecycle/LifecycleReGIStry;
androidx.lifecycle.ProcessLifecycleOwner.<init>(ProcessLifecycleOwner.java:62)
androidx.lifecycle.ProcessLifecycleOwner.<clinit>(ProcessLifecycleOwner.java:89)
androidx.lifecycle.ProcessLifecycleOwner.init(ProcessLifecycleOwner.java:103)
androidx.lifecycle.ProcessLifecycleOwnerInitializer.onCreate(ProcessLifecycleOwnerInitializer.java:38)
android.content.ContentProvider.attachInfo(ContentProvider.java:2121)
android.content.ContentProvider.attachInfo(ContentProvider.java:2094)
android.app.ActivityThread.installProvider(ActivityThread.java:7900)
android.app.ActivityThread.installContentProviders(ActivityThread.java:7441)
android.app.ActivityThread.handleBindApplication(ActivityThread.java:7334)
android.app.ActivityThread.access$2400(ActivityThread.java:308)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2295)
ndroid.os.Handler.dispatchMessage(Handler.java:110)
android.os.Looper.loop(Looper.java:219)
android.app.ActivityThread.main(ActivityThread.java:8347)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
com.android.internal.os.ZyGoteInit.main(ZygoteInit.java:1055)
AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.LifecycleRegistry" on path: DexPathList[[dex file "InMemoryDexFile[cookie=[0, 3991625136]]", zip file "/data/app/com.secoo-4gTkhUPR4gWOZn_7R-7U9A==/base.apk"],nativeLibraryDirectories=[/data/app/com.secoo-4gTkhUPR4gWOZn_7R-7U9A==/lib/arm, /data/app/com.secoo-4gTkhUPR4gWOZn_7R-7U9A==/base.apk!/lib/armeabi-v7a, /system/lib, /hw_product/lib]]

最近公司项目打算升级kotlin至1.4.10版本, 兴致冲冲的修改了版本,紧接着就是两天的折磨期,程序一直出现ClassNotFoundExceptionNoClassDefFoundError,而且几乎每次报的不是同一个类找不到,而是随机的。后来反编译代码,查找找不到的类,果然在编译生成的classs.jar中找不到对应的类,所以怀疑是分包引起的异常。

开始逛国内外各大网站,还是没找到原因。最后使用最原始的方案,注掉一段段代码试,果然在坚持下,发现了猫腻,最终找到是因为项目根目录下gradle.properties中的android.enableD8.desugaring = false搞的鬼。

既然找到原因了,那么就开始找扒一扒为什么看似八竿子打不着的两处修改会有关联呢?

大致的原因:

kotlin升级导致引入了大量代码,这些代码使得项目达到一个临界值【猜想】,此时又关闭了dex包的脱糖处理,导致编译会在transfORMs生成desugar目录,desugar先进行脱糖,然后再通过D8的编译器进行编译,此时会在desugar目录中生成大量的jar文件,而如果开启了android.enableD8.desugaring = true,那么就会省略了desugar脱糖操作,将脱糖步骤集成进D8编译器,这样会省去了desugar目录中的大量文件。

接下来我们看看开启脱糖和关闭脱糖transforms文件下生成的文件具体信息。

关闭脱糖的操作

开启脱糖的操作

如上我们所说,当开启脱糖时,编译器生成的编译文件中没有desugar及其下的大量文件,直接将脱糖步骤集成进了D8编译器。

另外一点:在Android Studio3.1之后版本,gradle默认是开启了脱糖操作的,也就是:

android:enableD8=true
android.enableD8.desugaring = true

参考自:

https://www.jb51.net/article/143221.htm

stackoverflow.com/questions/4…

以上就是android.enableD8.desugaring = false引发问题解决的详细内容,更多关于android enableD8解决的资料请关注编程网其它相关文章!

--结束END--

本文标题: android.enableD8.desugaring = false引发问题解决

本文链接: https://lsjlt.com/news/202725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • android.enableD8.desugaring = false引发问题解决
    目录问题:大致的原因:关闭脱糖的操作问题: Kotlin升级引起的类找不到情况[其实跟Kotlin版本无关] java.lang.NoClassDefFoundError: Fail...
    99+
    2023-05-13
    android enableD8解决 android enableD8
  • android.enableD8.desugaring=false引发问题如何解决
    这篇文章主要介绍“android.enableD8.desugaring=false引发问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“android.enableD8.desugarin...
    99+
    2023-07-05
  • 如何解决java.sql.SQLException: validateConnection false问题
    这篇文章主要讲解了“如何解决java.sql.SQLException: validateConnection false问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习...
    99+
    2023-07-05
  • 解决spring.thymeleaf.cache=false不起作用的问题
    目录spring.thymeleaf.cache=false不起作用thymeleaf缓存关闭spring.thymeleaf.cache=false不起作用 配置是清除缓存,实现热...
    99+
    2024-04-02
  • 如何使用JavaScript解决字符串false问题
    这篇文章主要介绍了如何使用JavaScript解决字符串false问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。字符串'false'有问题const&nb...
    99+
    2023-06-27
  • MySQL 8.0 timestamp引发的问题怎么解决
    本篇内容介绍了“MySQL 8.0 timestamp引发的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • 如何解决因@click.stop引发的bug问题
    这篇文章将为大家详细讲解有关如何解决因@click.stop引发的bug问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题在项目页面中使用 element popov...
    99+
    2024-04-02
  • 解决SecureRandom.getInstanceStrong()引发的线程阻塞问题
    目录1. 背景介绍2. 现象展示2.1 windows7下运行结果2.2 centos7下运行结果3. 现象分析3.1 linux阻塞分析3.2 windows下运行结果分析4. 结...
    99+
    2024-04-02
  • 安装pytorch报错torch.cuda.is_available()=false问题的解决过程
    问题介绍 在安装torch之后,命令行(Anaconda Powershell Prompt)运行这三行代码: python # python import torch torch....
    99+
    2024-04-02
  • 解决java.sql.SQLException: validateConnection false问题的方法汇总(最全)
    目录现象解决方案1(治标不治本)解决方案2解决方案3总结现象 由空指针导致的validateConnection false 解决方案1(治标不治本) 解决方案1(治标不治本): ...
    99+
    2023-03-06
    java.sql.sqlexception java.sql.sqlexception报错
  • ​c#中FileUpload1.HasFile始终为false问题怎么解决
    在C#中使用FileUpload控件时,如果FileUpload1.HasFile始终为false,可能有以下几个原因: 控件未...
    99+
    2024-02-29
    ​c#
  • ​C#中Process.start指定为UseShellExecute=false问题怎么解决
    当将Process.Start的UseShellExecute属性设置为false时,Process.Start将启动一个新进程来执...
    99+
    2024-02-29
    C#
  • RestTemplate使用不当引发的问题及解决
    目录背景问题现象分析过程AbstractConnPoolRestTemplateInterceptingClientHttpRequestRestTemplate源码部分解析如何决定...
    99+
    2024-04-02
  • 如何解决Vue依赖收集引发的问题
    这篇文章主要为大家展示了“如何解决Vue依赖收集引发的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Vue依赖收集引发的问题”这篇文章吧。问题背景在...
    99+
    2024-04-02
  • 怎么解决RestTemplate使用不当引发的问题
    这篇文章主要讲解了“怎么解决RestTemplate使用不当引发的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决RestTemplate使用不当引发的问题”吧!背景系统: Spr...
    99+
    2023-06-25
  • vuex更新视图引发的问题怎么解决
    本篇内容主要讲解“vuex更新视图引发的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vuex更新视图引发的问题怎么解决”吧!场景第一次进入页面加载数据,数据不显示,点击某个按钮或者...
    99+
    2023-07-02
  • SpringBoot拦截器返回false显示跨域问题怎么解决
    本文小编为大家详细介绍“SpringBoot拦截器返回false显示跨域问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot拦截器返回false显示跨域问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-06-30
  • vueshallowRef作用及引发问题详解
    目录shallowRef是什么发现问题triggerRefValue与triggerRef解决问题endshallowRef是什么 最近在开发遇到一个问题,使用shallowRef居...
    99+
    2024-04-02
  • 怎么解决Oracle12c中空格引发的ORA-01516问题
    本篇内容介绍了“怎么解决Oracle12c中空格引发的ORA-01516问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • 一条sql语句所引发的问题怎么解决
    这篇文章主要介绍“一条sql语句所引发的问题怎么解决”,在日常操作中,相信很多人在一条sql语句所引发的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”一条sql语...
    99+
    2023-01-31
    sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作