【轉】【Android】1分鐘不用改任何代碼在Eclipse中使用AAR

原文:https://www.jianshu.com/p/ccf306e08d5b?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.iojava

AAR 是 Google 專門爲 Android Studio 推出的一種庫文件格式,用於便捷的分享和使用
Android Library 項目android

而被 Google 放棄的 Eclipse ADT 沒辦法像使用 jar 那樣使用 AAR,可是咱們可使用 AAR 裏的文件快速建立一個 Eclipse Library 項目來使用bash

AAR -> Eclipse Library

  1. 將 AAR 文件後綴名改成 ZIP 並解壓
  2. 在解壓獲得的目錄裏建立一個 libs 文件夾,而後將 classes.jar 文件和 jni 文件夾下的全部文件移到 libs 文件夾下
  3. proguard.txt 文件的內容拷貝到你的項目的 proguard-project.txt 文件中
  4. 在解壓獲得的目錄裏建立 project.properties 文件,內容以下:
    target=android-22
    android.library=true 
    target 的值隨 AAR 裏 Android Manifest.xml 文件的 targetSdkVersion 屬性值而定
  5. 刪除 aaptjni 文件夾以及 R.txtproguard.txt 文件

至此一個 Eclipse Library 項目已經構建完成了,接下來只需打開 Eclipse 導入項目並在你的項目中配置引用這個項目便可spa

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 資源合併到你的項目中,所以你須要手動拷貝code

2.不會自動合併 library 中的 AndroidManifest 文件

若是你引用的 library 中包含有四大組件,在不作任何額外配置的狀況下你永遠也啓動不了 library 中包含的四大組件(例如啓動activit時拋ActivityNotFoundException),由於須要你在你的項目的project.properties文件中配置一下ADT纔會合併 library 中的 AndroidManifest文件,以下:
manifestmerger.enabled=true
此屬性須要 ADT 17 以上版本xml

3.不會自動導入 library 中 libs 目錄下的 jar 包 或 so 文件

解決這個問題只需升級 ADT 到 17 以上版本便可繼承

雖然說如今大部分都是用 Android Studio 開發 Android 了,但仍是有部分人使用 Eclipse
的,好比大部分的遊戲開發人員在集成一些第三方 SDK 的時候主要仍是用的 Eclipse,因此這些問題仍是有記錄價值的接口

 
做者:浮游大蝦 連接:https://www.jianshu.com/p/ccf306e08d5b 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索