【问题标题】:NoClassDefFoundError at Runtime on class inside .AAR in Android StudioAndroid Studio 中 .AAR 内的类运行时出现 NoClassDefFoundError
【发布时间】:2015-04-06 02:50:37
【问题描述】:

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

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

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

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

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

我已经尝试了所有方法,如果有人能说明这可能是什么,我们将不胜感激。

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

先谢谢大家!

阿曼多

【问题讨论】:

    标签: java android android-studio gradle aar


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 2014-11-11
        • 1970-01-01
        相关资源
        最近更新 更多