Java Android Studio中的类inside.AAR在运行时出现NoClassDefFoundError
我已经研究了好几个小时关于这个问题的可能解决方案,但不管我怎么尝试,都失败了。下面是解释的情况: 我在Android Studio上有一个库项目,它生成Java Android Studio中的类inside.AAR在运行时出现NoClassDefFoundError,java,android,android-studio,gradle,aar,Java,Android,Android Studio,Gradle,Aar,我已经研究了好几个小时关于这个问题的可能解决方案,但不管我怎么尝试,都失败了。下面是解释的情况: 我在Android Studio上有一个库项目,它生成app debug.aar文件。 然后我在实现项目中添加这个新模块,按照导入.JAR/.AARs的向导,我选择.aar,并更新项目结构中:app的依赖项 一旦项目被清理(甚至使用/gradlew clean--Mac OS X),我就可以在任何活动中引用此类及其方法 现在在运行时,一旦在真实设备上构建和安装,应用程序将崩溃,抛出前面提到的运行时异
app debug.aar
文件。
然后我在实现项目中添加这个新模块,按照导入.JAR/.AARs的向导,我选择.aar
,并更新项目结构中:app
的依赖项
一旦项目被清理(甚至使用/gradlew clean
--Mac OS X),我就可以在任何活动中引用此类及其方法
现在在运行时,一旦在真实设备上构建和安装,应用程序将崩溃,抛出前面提到的运行时异常
注意:我正在导入.aar
,因为我需要保护代码并且它有资源,所以.jar
是不可能的。如果我导入库模块(使用source和all而不是.aar
),那么应用程序在运行时没有问题
我已经尝试了所有的方法,如果有人能告诉我这是什么,我将不胜感激
该类扩展了ViewGroup
,并在运行时实例化,以防有任何暗示。代码是给我的,所以除非绝对必要,否则可能无法进行重大更改
谢谢大家
ArmandoNoClassDefFound错误实际上发生在我在问题上提到的这个类(“a类”)所使用的向后兼容性库上。除了找不到类A之外,没有提供任何详细信息,后来发现另一个类也有类似的问题,但指向compat lib,出现了相同的异常,我注意到类A也在调用其方法并实现其回调。通过升级
min版本
(使用本机API),我可以克服这个问题。在.aar
中包含向后的comp库确实是一个问题,似乎是这样。如果我能更好地理解这个问题,我会更新这个“答案”。对于那些仍在寻找解决方案的人,以下两个选项为我解决了OP提到的完全相同的问题
- 在目标模块中也包括(有问题的)库依赖项,即在我的例子中,我将protobuf lite作为库模块的依赖项包括在内,但在应用程序模块中将库导入为
时出现.aar
错误。作为一种解决方法,我也在我的应用程序模块中添加了noclassdefFound
依赖项,效果非常好protobuf-lite
- 第二个对我有效的选择是,我从maven下载ProtobufJAR并手动添加到我的库模块的libs中,而不是添加gradle依赖项“compile”com.google.protobuf:protobuf lite:3.0.1,问题得到了解决