原文: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
libs
文件夾,而後將 classes.jar
文件和 jni
文件夾下的全部文件移到 libs
文件夾下proguard.txt
文件的內容拷貝到你的項目的 proguard-project.txt
文件中project.properties
文件,內容以下: target=android-22
android.library=true
target
的值隨 AAR 裏 Android Manifest.xml 文件的 targetSdkVersion
屬性值而定aapt
和 jni
文件夾以及 R.txt
和 proguard.txt
文件至此一個 Eclipse Library 項目已經構建完成了,接下來只需打開 Eclipse 導入項目並在你的項目中配置引用這個項目便可spa
java.lang.NoClassDefFoundError: *.Activity
異常,一般是由於這個 AAR 裏的 Activity 繼承或實現了其它 AAR 中的類或接口,可是你沒有導入 AAR 須要的依賴,致使運行時 AAR 裏的 Activity 沒法實例化,解決辦法就是導入所有須要的依賴,具體須要什麼依賴你就本身找到AAR的pom文件查看或者反編譯相應出錯的類查看Android 官方提供的 ADT 插件在引用 library 項目時看似很美好,但有不少坑插件
ADT插件並不會自動將 library 裏的 asset 資源合併到你的項目中,所以你須要手動拷貝code
若是你引用的 library 中包含有四大組件,在不作任何額外配置的狀況下你永遠也啓動不了 library 中包含的四大組件(例如啓動activit時拋ActivityNotFoundException),由於須要你在你的項目的project.properties文件中配置一下ADT纔會合併 library 中的 AndroidManifest文件,以下:
manifestmerger.enabled=true
此屬性須要 ADT 17 以上版本
xml
解決這個問題只需升級 ADT 到 17 以上版本便可繼承
雖然說如今大部分都是用 Android Studio 開發 Android 了,但仍是有部分人使用 Eclipse
的,好比大部分的遊戲開發人員在集成一些第三方 SDK 的時候主要仍是用的 Eclipse,因此這些問題仍是有記錄價值的接口