带有本地aar

时间:2017-10-19 16:55:55

标签: java android jar noclassdeffounderror aar

我知道这个问题似乎已被提出,但它们略有不同,我无法找到解决问题的方法。

我有一个Android应用程序依赖于几个aar libs,而这些lib依赖于(纯java)jar。在Android Studio中进行开发时,我将所有的aars和jar作为我公司本地关系的依赖项。这可以按预期工作。

但是,对于部署,我们有本地aar文件,这些文件已在其libs文件夹中包含其jar依赖项。在部署的build.gradle中,我们定义了以下条目以包含它们:

repositories {
    jcenter()
    flatDir {
        dirs '../../libs'
    }

     maven {
        url "https://maven.google.com"
    }
}

dependencies {

    compile 'com.android.support:appcompat-v7:26.1.0'
    compile ":NameOfAarFile:1.0.0@aar"
    compile ":NameOfAnotherAar:1.0.0@aar"

    compile fileTree(include: ['*.jar'], dir: 'libs')
}

如果我在android studio中打开项目,gradle会进行检查并让我构建它。它会打开,但是只要您尝试使用源于罐子里的功能,我就会得到NoClassDefFoundError

所以我从输出中解压缩了apk,通过dex2jar运行它们并查看了jd-gui的类,只是为了找出它们在预期的位置。

现在我真的很想知道NoClassDefFoundError来自哪个,或者 - 更重要的是 - 如何摆脱它?

official documentation提及:

  

库模块可以包含JAR库

     

您可以开发一个本身包含JAR库的库模块;   但是您需要手动编辑依赖的应用程序模块的构建   路径并添加JAR文件的路径。

如果可能的话,我真的想把罐子放在罐子里面。

如有必要,我会提供更多信息。

1 个答案:

答案 0 :(得分:0)

我发现了发生了什么。 如果您在Android Studio中停用了InstantRun,它就可以使用。