91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android.enableD8.desugaring=false引發問題如何解決

發布時間:2023-03-31 11:18:27 來源:億速云 閱讀:158 作者:iii 欄目:開發技術

這篇文章主要介紹“android.enableD8.desugaring=false引發問題如何解決”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“android.enableD8.desugaring=false引發問題如何解決”文章能幫助大家解決問題。

問題:

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文件下生成的文件具體信息。

關閉脫糖的操作

android.enableD8.desugaring=false引發問題如何解決

開啟脫糖的操作

android.enableD8.desugaring=false引發問題如何解決

如上我們所說,當開啟脫糖時,編譯器生成的編譯文件中沒有desugar及其下的大量文件,直接將脫糖步驟集成進了D8編譯器。

另外一點:在Android Studio3.1之后版本,gradle默認是開啟了脫糖操作的,也就是:

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

關于“android.enableD8.desugaring=false引發問題如何解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日喀则市| 建宁县| 沾化县| 穆棱市| 宜宾市| 禄丰县| 郧西县| 平度市| 时尚| 三亚市| 巫溪县| 湖南省| 新蔡县| 繁昌县| 札达县| 文水县| 当阳市| 伊宁市| 上高县| 正安县| 博湖县| 西乌珠穆沁旗| 海盐县| 烟台市| 信阳市| 沂源县| 确山县| 梁山县| 福安市| 闸北区| 陈巴尔虎旗| 分宜县| 伊金霍洛旗| 武川县| 静宁县| 县级市| 武平县| 伽师县| 河南省| 芮城县| 柳江县|