我一直在研究一个可能的解决方案,但无论我尝试它只是失败。以下是解释的情况:
我在Android Studio上有这个库项目,它生成app-debug.aar
文件。
然后我在实现项目中添加这个新模块,按照向导导入.JAR / .AARs我选择.aar
并更新项目结构中:app
的依赖项。
清理项目后(即使使用./gradlew clean
- Mac OS X),我可以在任何活动中引用此类及其方法。
现在,在运行时,一旦在真实设备上构建并安装,应用程序将崩溃,从而导致上述运行时异常。
注意:我正在导入.aar
因为我需要保护代码并且它有资源,所以.jar
是不可能的。如果我导入库模块(使用源代码而不是.aar
),则应用程序在运行时没有问题。
我已经尝试了一切,如果有人可以对这可能会有所了解,我们将非常感激。
该类扩展ViewGroup
并在运行时实例化,以防任何事情。代码是给我的,所以除非绝对必要,否则可能无法进行重大改变。
事先感谢所有人!
阿曼
答案 0 :(得分:2)
对于那些仍在寻找解决方案的人来说,遵循两个选项可以解决与OP提到的完全相同的问题。
在目标模块中也包含(有问题的)库依赖项,即在我的情况下我将protobuf-lite包含为我的库模块的依赖项,但是当lib导入时出现noclassdefFound
错误在应用模块中为.aar
。作为一种解决方法,我将protobuf-lite
依赖项添加到我的应用程序模块中,它就像魅力一样。
第二个选项对我有用,而不是添加gradle依赖`compile'com.google.protobuf:protobuf-lite:3.0.1',我从maven下载了protobuf-jar并手动添加到了我的库模块的库,问题解决了。
不知道gradle插件有什么问题,但希望它可以帮助其他人寻找同样的问题。
答案 1 :(得分:1)
NoClassDefFound
错误实际上发生在我在问题中提到的这个类所使用的向后兼容库(" A类")。没有给出详细信息,除了A类无法找到,后来发现另一个类有类似的问题,但是指向那个具有相同异常的compat lib,我注意到A类也在调用它的方法和实现其回调。通过提升min version
(使用本机API),我可以克服这个问题。确实存在这样的问题:在.aar
左右看起来包含了back-comp库。我是否应该更好地理解这个问题,我会更新这个"回答。"