我知道这个问题似乎已经问过了,但它们有些不同,而且我找不到解决方案。ClassDefNotFoundError with local aar
我有一个Android应用程序,它依赖于依赖于(纯java)罐子的几个aar库。在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:[email protected]"
compile ":NameOfAnotherAar:[email protected]"
compile fileTree(include: ['*.jar'], dir: 'libs')
}
如果我打开在Android Studio中的项目,做的gradle其检查,让我建立它。它会打开,但只要您尝试使用源于罐子里的功能,我就会得到NoClassDefFoundError
。
所以我从输出中解编apk,通过dex2jar
运行它们,并且看着jd-gui
的类,以查明它们是否在预期的位置。
现在我真的很想知道NoClassDefFoundError
是从哪里来的,或者 - 更重要 - 如何摆脱它?
库模块可以包括JAR库
你可以开发一个库模块本身包括JAR库; 但是,您需要手动编辑从属应用程序模块的内部版本 路径并向JAR文件添加路径。
如果可能的话,我真的想离开罐子里面的罐子。
如有需要,我会提供更多信息。
方法的总数是多少?如果它高于65K,则必须启用multidex。 –
如何计算它们?只有Java方法会计入这个限制吗?但我怀疑65k比我得到的更多(估计我甚至没有10k的方法) –