5

我已经研究了几个小时来寻找可能的解决方案,但无论我尝试什么都失败了。这是解释的情况:

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

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

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

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

我已经尝试了一切,如果有人能阐明这可能是什么,将不胜感激。

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

预先感谢大家!

阿曼多

4

2 回答 2

2

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

  • 在目标模块中也包括(有问题的)库依赖项,即在我的情况下,我将 protobuf-lite 作为对我的库模块的依赖项包括在内,但是在 app 模块中noclassdefFound导入 lib 时出现错误。.aar作为一种解决方法,我也将protobuf-lite依赖项添加到了我的应用程序模块中,它就像魅力一样工作。

  • 对我有用的第二个选项,我没有添加 gradle 依赖项 `compile 'com.google.protobuf:protobuf-lite:3.0.1',而是从 maven 下载了 protobuf-jar 并手动添加到我的库模块的库中,问题就解决了。

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

于 2017-05-02T10:25:19.017 回答
1

NoClassDefFound错误实际上发生在我在问题(“A 类”)中提到的此类使用的向后兼容库中。除了找不到 A 类之外,没有提供任何详细信息,后来发现另一个类有类似的问题,但指向该兼容库具有相同的异常,我注意到 A 类也在调用它的方法并实现它回调。通过提高min version(使用本机 API)我可以克服这个问题。.aar将那个向后比较库包含在其中似乎确实是一个问题。如果我更好地理解这个问题,我会更新这个“答案”。

于 2015-02-07T00:44:51.620 回答