我知道這個問題似乎已經問過了,但它們有些不同,而且我找不到解決方案。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的方法) –