標籤:exception guard led dex activity 聯絡 升級 eclips ane
原文:https://www.jianshu.com/p/ccf306e08d5b?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
AAR 是 Google 專門為 Android Studio 推出的一種庫檔案格式,用於便捷的分享和使用
Android Library 項目
而被 Google 放棄的 Eclipse ADT 沒辦法像使用 jar 那樣使用 AAR,但是我們可以使用 AAR 裡的檔案快速建立一個 Eclipse Library 項目來使用
AAR -> Eclipse Library
- 將 AAR 檔案尾碼名改為 ZIP 並解壓
- 在解壓得到的目錄裡建立一個
libs
檔案夾,然後將 classes.jar
檔案和 jni
檔案夾下的所有檔案移到 libs
檔案夾下
- 將
proguard.txt
檔案的內容拷貝到你的項目的 proguard-project.txt
檔案中
- 在解壓得到的目錄裡建立
project.properties
檔案,內容如下:target=android-22android.library=true
target
的值隨 AAR 裡 Android Manifest.xml 檔案的 targetSdkVersion
屬性值而定
- 刪除
aapt
和 jni
檔案夾以及 R.txt
和 proguard.txt
檔案
至此一個 Eclipse Library 項目已經構建完成了,接下來只需開啟 Eclipse 匯入項目並在你的項目中配置引用這個項目即可
FAQ:
- 運行時如果有 library 中的 Activity 或其他四大組件找不到(ActivityNotFoundException)、asset 資源找不到,jar或so找不到的情況就請參考 【Android】Eclipse引用 library 時的常見異常
- Activity 報
java.lang.NoClassDefFoundError: *.Activity
異常,通常是因為這個 AAR 裡的 Activity 繼承或實現了其它 AAR 中的類或介面,但是你沒有匯入 AAR 需要的依賴,導致運行時 AAR 裡的 Activity 無法執行個體化,解決辦法就是匯入全部需要的依賴,具體需要什麼依賴你就自己找到AAR的pom檔案查看或者反編譯相應出錯的類查看
Android 官方提供的 ADT 外掛程式在引用 library 項目時看似很美好,但有很多坑
1.不會自動合并 library 中的 asset 資源
ADT外掛程式並不會自動將 library 裡的 asset 資源合并到你的項目中,因此你需要手動拷貝
2.不會自動合并 library 中的 AndroidManifest 檔案
如果你引用的 library 中包含有四大組件,在不做任何額外配置的情況下你永遠也啟動不了 library 中包含的四大組件(例如啟動activit時拋ActivityNotFoundException),因為需要你在你的項目的project.properties檔案中配置一下ADT才會合并 library 中的 AndroidManifest檔案,如下:
manifestmerger.enabled=true
此屬性需要 ADT 17 以上版本
3.不會自動匯入 library 中 libs 目錄下的 jar 包 或 so 檔案
解決這個問題只需升級 ADT 到 17 以上版本即可
雖說現在大部分都是用 Android Studio 開發 Android 了,但還是有部分人使用 Eclipse
的,比如大部分的遊戲開發人員在整合一些第三方 SDK 的時候主要還是用的 Eclipse,所以這些問題還是有記錄價值的
浮遊大蝦
連結:https://www.jianshu.com/p/ccf306e08d5b
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
【轉】【Android】1分鐘不用改任何代碼在Eclipse中使用AAR