2015-02-06 153 views
4

我一直在研究幾個小時對此可能的解決方案,但無論我嘗試它只是失敗。這裏是解釋的情況:NoClassDefFoundError運行時在Android Studio中的.AAR類中的運行時

我在Android Studio上生成app-debug.aar文件的這個庫項​​目。 然後我在實現項目中添加這個新模塊,按照嚮導導入.JAR/.AARs,我選擇.aar並更新項目結構中:app的依賴項。

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

現在在運行時,一旦在真實設備上構建並安裝,應用程序就會崩潰,拋出上述運行時異常。

注:我正在導入.aar,因爲我需要保護代碼,並且它擁有資源,所以.jar是不可能的。如果我導入庫模塊(使用源代碼而不是.aar),那麼應用程序在運行時沒有問題。

我試過所有的東西,如果任何人都可以拋開一些東西,這將是高度讚賞。

該類擴展了ViewGroup,並且在運行時實例化以防止有任何暗示。代碼給了我,所以重大的改變可能是不可能的,除非它是絕對必要的。

預先感謝所有人!

阿曼

回答

0

NoClassDefFound錯誤已實際發生到後向兼容性庫正被此I類上的問題(「A類」)中提到。沒有提供任何細節以外的類A無法找到,後來發現另一個類有類似的問題,但指向該compat庫具有相同的例外,我注意到,類A也調用它的方法和實現它的回調。通過碰撞min version(使用本地API),我可以解決這個問題。這確實是一個將左右的倒排庫包含在內的問題。我應該更好地理解這個問題,我會更新這個「答案」。

+0

對此有任何更新的答案? – 2016-07-21 06:24:05

0

對於那些仍在尋找解決方案的人來說,以下兩個選項可以幫助我解決與OP提到的完全相同的問題。

  • 包括目標模塊中(有問題的)庫的依賴關係爲好,即在我的情況我是包括的protobuf-精簡版作爲一個依賴於我的庫模塊,但得到noclassdefFound錯誤時LIB導入爲.aar應用模塊。作爲一種解決方法,我還將protobuf-lite依賴項添加到我的應用程序模塊中,它的工作方式就像魅力一樣。

  • 第二個選項爲我工作,而不是添加gradle依賴關係`compile'c​​om.google.protobuf:protobuf-lite:3.0.1',我從maven下載了protobuf-jar並手動添加到庫中我的圖書館模塊,問題解決了。

不知道gradle插件有什麼問題,但希望它可以幫助其他人尋找相同的問題。

相關問題