2015-02-06 132 views
4

我一直在研究几个小时对此可能的解决方案,但无论我尝试它只是失败。这里是解释的情况:NoClassDefFoundError运行时在Android Studio中的.AAR类中的运行时

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

清理项目后(即使用./gradlew clean - Mac OS X),我可以在任何活动中引用此类及其方法。

现在在运行时,一旦在真实设备上构建并安装,应用程序就会崩溃,抛出上述运行时异常。

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

我试过所有的东西,如果任何人都可以抛开一些东西,这将是高度赞赏。

该类扩展了ViewGroup,并且在运行时实例化以防止有任何暗示。代码给了我,所以重大的改变可能是不可能的,除非它是绝对必要的。

预先感谢所有人!

阿曼

回答

0

NoClassDefFound错误已实际发生到后向兼容性库正被此I类上的问题(“A类”)中提到。没有提供任何细节以外的类A无法找到,后来发现另一个类有类似的问题,但指向该compat库具有相同的例外,我注意到,类A也调用它的方法和实现它的回调。通过碰撞min version(使用本地API),我可以解决这个问题。这确实是一个将左右的倒排库包含在内的问题。我应该更好地理解这个问题,我会更新这个“答案”。

+0

对此有任何更新的答案? – 2016-07-21 06:24:05

0

对于那些仍在寻找解决方案的人来说,以下两个选项可以帮助我解决与OP提到的完全相同的问题。

  • 包括目标模块中(有问题的)库的依赖关系为好,即在我的情况我是包括的protobuf-精简版作为一个依赖于我的库模块,但得到noclassdefFound错误时LIB导入为.aar应用模块。作为一种解决方法,我还将protobuf-lite依赖项添加到我的应用程序模块中,它的工作方式就像魅力一样。

  • 第二个选项为我工作,而不是添加gradle依赖关系`compile'c​​om.google.protobuf:protobuf-lite:3.0.1',我从maven下载了protobuf-jar并手动添加到库中我的图书馆模块,问题解决了。

不知道gradle插件有什么问题,但希望它可以帮助其他人寻找相同的问题。

相关问题