我知道这个问题似乎已被提出,但它们略有不同,我无法找到解决问题的方法。
我有一个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
来自哪个,或者 -
更重要的是 - 如何摆脱它?
库模块可以包含JAR库
您可以开发一个本身包含JAR库的库模块; 但是您需要手动编辑依赖的应用程序模块的构建 路径并添加JAR文件的路径。
如果可能的话,我真的想把罐子放在罐子里面。
如有必要,我会提供更多信息。
答案 0 :(得分:0)
我发现了发生了什么。
如果您在Android Studio中停用了InstantRun
,它就可以使用。