java类仅在安卓 6.0上找不到+
Android 6.0+找不到在同一个应用程序中编译的类,而是在另一个模块/库中编译的类
例如:
com。实例应用程序(默认应用程序包)
com。实例lib(库编译)
当我使用反射从应用程序默认包调用某个类时,它只在安卓版本6之前有效
安卓4.4.2(工作)
Class.forName("com.example.lib.SomeClass");
Android 6.0(失败ClassNotFoundException)
Class.forName("com.example.lib.SomeClass");
# 1 楼答案
当某个类加载的类加载器与应用程序类加载器(加载类的类加载器)不同时,通常会发生这种情况。潜在原因可能是您有多个dex文件,或者您正在使用instant run,因此Android将使用多个类加载器来加载应用程序中的所有类
如果将库添加为编译依赖项,通常应该能够使用SomeClass引用/获取它。类,而不是类。forName(“com.example.lib.SomeClass”)。如果这是不可能的,您需要以某种方式获得加载了某个类的类加载器,并调用类加载器。findClass(“com.example.lib.SomeClass”)