2015-02-11 48 views
2

我有我的庫中的下列項目的結構,其中lib1取決於lib2包括AAR內的兩個模塊Android Studio中

/ 
/lib1/ 
/lib1/build.gradle 
/lib2/ 
/lib2/build.gradle 
/build.gradle 
/settings.gradle 

我建立一個aar文件lib1,我可以分發。在添加lib2依賴項之前,它工作正常。但是當我嘗試運行使用我的aar的應用程序時,現在我得到一個VerifyError

lib1也沒有lib2可用於maven或其他地方。

是否可以包含lib2裏面的lib1aar

+0

你看過渡傳遞依賴? – 2015-06-26 01:39:44

+0

當我不使用任何Maven存儲庫發佈我的庫時,它是否適用於第三代?我無法測試,因爲我改變了庫的結構。 – 2015-06-26 05:50:09

回答

0

如果您查看AAR格式規格,您會看到有一個放置lib罐的位置。

來自Android Tools網站。

'aar'包是Android Library 項目的二進制發行版。

文件擴展.aar和行家工件類型應該是AAR 爲好,但該文件本身的簡單zip文件具有以下 條目:

/AndroidManifest.xml (mandatory) 
/classes.jar (mandatory) 
/res/ (mandatory) 
/R.txt (mandatory) 
/assets/ (optional) 
/libs/*.jar (optional) 
/jni/<abi>/*.so (optional) 
/proguard.txt (optional) 
/lint.jar (optional) 

這些項是直接在壓縮文件的根目錄。

R.txt文件是帶--output-text-symbols的aapt的輸出。

如果你可以打包lib2作爲一個jar文件你可以在你造成lib1.aar文件在/libs/lib2.jar放置。儘管Android Gradle插件可能無法在本機上處理,但可能需要將AAR放入/libs目錄中。如果是這樣,您可以執行一些自定義gradle任務來解壓縮它,並在構建時將其放置在正確的位置。

無論哪種方式,這是非標準的行爲,最好是分開包裝和交付。

相關問題