繁体   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