Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Studio中的类inside.AAR在运行时出现NoClassDefFoundError_Java_Android_Android Studio_Gradle_Aar - Fatal编程技术网

Java Android Studio中的类inside.AAR在运行时出现NoClassDefFoundError

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),我就可以在任何活动中引用此类及其方法 现在在运行时,一旦在真实设备上构建和安装,应用程序将崩溃,抛出前面提到的运行时异

我已经研究了好几个小时关于这个问题的可能解决方案,但不管我怎么尝试,都失败了。下面是解释的情况:

我在Android Studio上有一个库项目,它生成
app debug.aar
文件。 然后我在实现项目中添加这个新模块,按照导入.JAR/.AARs的向导,我选择
.aar
,并更新项目结构中
:app
的依赖项

一旦项目被清理(甚至使用
/gradlew clean
--Mac OS X),我就可以在任何活动中引用此类及其方法

现在在运行时,一旦在真实设备上构建和安装,应用程序将崩溃,抛出前面提到的运行时异常

注意:我正在导入
.aar
,因为我需要保护代码并且它有资源,所以
.jar
是不可能的。如果我导入库模块(使用source和all而不是
.aar
),那么应用程序在运行时没有问题

我已经尝试了所有的方法,如果有人能告诉我这是什么,我将不胜感激

该类扩展了
ViewGroup
,并在运行时实例化,以防有任何暗示。代码是给我的,所以除非绝对必要,否则可能无法进行重大更改

谢谢大家


Armando

NoClassDefFound错误实际上发生在我在问题上提到的这个类(“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,问题得到了解决

不知道gradle插件出了什么问题,但希望它能帮助其他人寻找同样的问题