編輯:關於Android編程
在比較大的 Android 項目的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 文件中配置依賴來解決,比如:
vcq9yOfPwjwvc3Ryb25nPqO6PC9wPg0KPGNvZGU+Y29tcGlsZSBmaWxlVHJlZShkaXI6ICYjMzk7eHh4JiMzOTssIGluY2x1ZGU6IFsmIzM5OyouamFyJiMzOTssICZxdW90OyoueHh4JnF1b3Q7XSk8L2NvZGU+o7q9q8SzuPbEv8K8z8LL+dPQt/u6z8Cp1bnD+7XEzsS8/tf3zqrSwMC1o7sgPGNvZGU+Y29tcGlsZSAmIzM5O2NvbS54eC54eDpQcm9qZWN0TmFtZTpWZXJzaW9uJiMzOTujusXk1sM8L2NvZGU+TWF2ZW5gIL/i1/fOqtLAwLWju9TaIE1hdmVuIL/i1tDQxCC/ydLUy9HL99fUvLrP69PDtcS/4r340NDSwMC1o7sgPGNvZGU+Y29tcGlsZSBwcm9qZWN0KCYjMzk7OkFub3RoZXJNb2R1bGUmIzM5Oyk8L2NvZGU+o7rF5NbDwe3Su7j2IE1vZHVsZSDX986qsb4gTW9kdWxlILXE0sDAtaOssbvSwMC1tcQgTW9kdWxlILHY0Ouxu7W8yOu1vbWxx7C5pLPM1tCjuyA8Y29kZT5jb21waWxlIGZpbGVzKCYjMzk7eHh4LmphciYjMzk7KTwvY29kZT6jusXk1sPEs7j2IGphciCw/Nf3zqrSwMC1oaMNCjxwPr+0xvDAtLK7tO2jrLv5sb7NqNPDtcTF5NbDtrzS0b6ttObU2sHLoaPSu7DjttTT2tbQtcjQodDNtcS5pLPMo6zV4tbWv6q3ore9yr3N6sirw7vT0M7KzOKho7WrysfT0MqxuvIgQSC6zSBCIMG9uPa5pLPMo6zP682syrHS/dPDwe3Su7j2uau5srXEIE1vZHVsZSBDo6y2+NXiuPYgTW9kdWxlIL/JxNzKx9K7uPaxyL3PuLTU07XEIEFuZHJvaWQgTW9kdWxlo6y/ycTcsPy6rMHL0rvQqdb3zOKholVJIKGi18rUtM7EvP61yLXIo6zV4sqxuvKjrMjnufvTwyBNb2R1bGUg0sDAtbXEt73KvcC0xeTWw6OssrvD4tPQ0KnAp8TRo6zS8s6qIEEgus0gQiC2vNKqtbzI6yBDo6y2+MfS0qrL5sqxudjXoiBDILXEuPy4xKGjPC9wPg0KPHA+usPU2iBBbmRyb2lkIFN0dWRpbyDM4bmpwcsgPGNvZGU+YWFyPC9jb2RlPiC/4rXEtPKw/Le9yr2jrM7Sw8e/ydLUsNEgQyDX986qIDxjb2RlPmxpYnJhcnk8L2NvZGU+IL340NC08rD8o6zK5LP2IGFhciDOxLz+o6zIu7rz1NogQSC6zSBCINbQo6zF5NbDIGFhciC/4tLAwLWjrL7Nv8nS1L3ivvahozwvcD4NCjxoMiBpZD0="2aar-文件簡介">2、aar 文件簡介
要輸出 aar 文件,必須將 Module 配置為 library,在 gradle 文件中如下:
輸出 aar :apply plugin: 'com.android.library'
; 輸出 apk :apply plugin: 'com.android.application'
。
將 Module 配置為 library 後,構建輸出一個 aar 文件,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar
。一份 aar 文件其實就是一份 zip 包,和 jar 不同的是,它將一些資源文件、第三方庫文件、so 文件等等都打包在內,而代碼文件編譯後壓縮在在 classes.jar
中。比如:
這種方式比較簡單,打開 Project Structure
,添加一個新 Module,然後選擇 Import *.JAR or *.AAR Package
的方式導入:
導入後,在你的工程下面,會生成一個文件夾,裡面是 aar 文件以及 Android Studio 的配置文件。
接著可以在 gradle 中配置依賴了,其他 Module 可以引用這個 Module 了,依賴方式使用 compile project
的方式即可。
缺點:
被依賴的 aar 無法 F3 跟進去,無法看到資源文件內容以及目錄層級等等缺陷。
gradle 其實還有另一種依賴可以引用 aar:
compile(name: 'xxx', ext: 'aar')
。
首先需要將 aar 文件放入引用 Module 的 libs 目錄下,和一般的 jar 文件類似。然後在 gradle 配置文件中把 libs 目錄加入依賴:
repositories {
flatDir {
dirs 'libs'
}
}
接著在 gradle 的依賴配置中加入 compile(name: 'xxx', ext: 'aar')
這一句,依賴即可關聯完畢。構建一下工程,在 Module 的 build/intermediates/exploded-aar
目錄下,可以看到有一些臨時文件生成:
看起來完全是引用 aar 的解壓版本。Android Studio 安裝反編譯插件後,可以通過 F3 跟進到 class 文件裡面,如果你有被依賴 Module 的源代碼的話,還可以 Attach Source
關聯源代碼查看。另外,可以很方便的查看 aar 中的資源文件。
另外,這種依賴方式更新 aar 後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。
綜上,介紹了 aar 文件的生成方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行代碼即可搞定。
轉載請附上本文鏈接:http://blog.csdn.net/cyp331203/article/details/40423727 先來看看效果:
本篇文章繼續介紹以下類型的操作符Observable Utility Operators(Observable的功能性操作符) Conditional and Boole
我們要開發一個自己的launcher,使其替代系統的默認launcher。怎樣使我們的應用程序成為一個launcher?下面我們就新建一個叫做SAOLauncher的工程
剛入門的童鞋肯能都會有一個疑問,Java不是有虛擬機了麼,內存會自動化管理,我們就不必要手動的釋放資源了,反正系統會給我們完成。其實Java中沒有指針的概念,但是指針的使