泡在網上的日子 發表於 2015-10-14 23:56
第 262
次閱讀打包,aar
0**
在比較大的 android 專案的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 檔案中配置依賴來解決,比如:
gradle 的一些基本依賴配置方式如下:
看起來不錯,基本通用的配置都已經存在了。一般對於中等小型的工程,這種開發方式完全沒有問題。但是有時候 a 和 b 兩個工程,想同時引用另乙個公共的 module c,而這個 module 可能是乙個比較複雜的 android module,可能包含了一些主題、ui 、資源檔案等等,這時候,如果用 module 依賴的方式來配置,不免有些困難,因為 a 和 b 都要匯入 c,而且要隨時關注 c 的更改。
好在 android studio 提供了 aar 庫的打包方式,我們可以把 c 作為 library 進行打包,輸出 aar 檔案,然後在 a 和 b 中,配置 aar 庫依賴,就可以解決。
要輸出 aar 檔案,必須將 module 配置為 library,在 gradle 檔案中如下:
將 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:
首先需要將 aar 檔案放入引用 module 的 libs 目錄下,和一般的 jar 檔案類似。然後在 gradle 配置檔案中把 libs 目錄加入依賴:
1
2
3
4
5
repositories
}
接著在 gradle 的依賴配置中加入 compile(name: '***', ext: 'aar') 這一句,依賴即可關聯完畢。構建一下工程,在 module 的build/intermediates/exploded-aar 目錄下,可以看到有一些臨時檔案生成:
另外,這種依賴方式更新 aar 後,生成的臨時檔案也會隨之變動,不用擔心改動不同步的問題。
綜上,介紹了 aar 檔案的生成方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行**即可搞定。
android studio混淆打包
前幾天一直在研究android studio的混淆打包,網上查了各種資料,東拼西湊的總算把這乙個需求給實現了 as打包比eclipse要簡單很多,以乙個簡單的工程為例 當你需要混淆打包的時候將minifyenabled 後面的布朗值改為true,而下面則是所依據的混淆檔案,在eclipse中prog...
androidstudio打包失敗
今天安卓應用打包的時候出現了倆個報錯的問題,在這裡記錄總結一下 問題一 像這種型別的問題 error 5 error hello blank fragment is not translated in en english es spanish missingtranslation 解決方案就是在 ...
Android Studio 打包JAR及其原始碼
有時候我們需要把某些子工程打包成jar。或者把某些包某些功能打包成jar。我居然沒有搜尋到在as下如何把源 打包到jar中去。我在這兒分享一下把原始碼打包打jar。專案打包成jar請跳轉到這兒 android studio 如何打jar包 打包原始碼會讓jar包變得更大,如果不希望別人看到你的原始碼...