簡體   English   中英

僅在android 6.0+上找不到類

[英]Class not found only on android 6.0+

Android 6.0+找不到在同一應用中但在另一個模塊/庫中編譯的類。

例:

com.example.app (默認應用包)

com.example.lib (庫編譯)

當我使用反射從應用程序默認包中調用某些類時,它僅適用於6之前的android版本

Android 4.4.2(WORKS)

Class.forName("com.example.lib.SomeClass");

Android 6.0(FAILS ClassNotFoundException)

Class.forName("com.example.lib.SomeClass");

當SomeClass加載的ClassLoader與應用程序類加載器(加載Class )不同時,通常會發生這種情況。 可能的原因可能是您有多個dex文件,或者您使用的是即時運行,因此Android將使用多個ClassLoader來加載應用程序中的所有類。

如果您將庫添加為編譯依賴項,則通常應該可以在代碼中使用SomeClass.class而不是Class.forName(“ com.example.lib.SomeClass”)來引用/獲取它。 如果不可能,則需要以某種方式獲取已加載SomeClass的ClassLoader並調用classLoader.findClass(“ com.example.lib.SomeClass”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM