本文由一片楓葉_劉超發(fā)布。
一片楓葉_劉超的博客地址:
http://blog.csdn.net/qq_23547831
作者編寫了github項(xiàng)目解析、android源碼分析以及產(chǎn)品研發(fā)多個(gè)專題,有興趣的可以關(guān)注下學(xué)習(xí)學(xué)習(xí)~
1
jar vs aar
文本我們將講解android studio打包apk,aar,jar包的相關(guān)知識(shí)。apk包就是android系統(tǒng)的安裝包,這里沒(méi)什么好說(shuō)的,aar包是android中獨(dú)有的類庫(kù)包,而jar包是java中特有的類庫(kù)包,在具體的介紹打包之前,我們先來(lái)aar包和jar包的區(qū)別。
jar包與aar包的區(qū)別
jar是java字節(jié)碼文件(class文件)的歸檔文件,其不包含android中的資源文件等信息;
aar是android中特有的歸檔文件,既包含字節(jié)碼文件也包含android的資源文件等;
區(qū)別:大家都知道jar文件把,如果你有一個(gè)Android Library項(xiàng)目,可以很容易的導(dǎo)出jar文件,然后在其他項(xiàng)目中很方便的引用。
aar和jar類似,區(qū)別就是一個(gè)Android Library項(xiàng)目導(dǎo)出的jar文件不能包含資源文件,比如一些drawable文件、xml資源文件之類的,所以這就有很大的限制,在gradle之前我們要引用帶資源文件的Android Library必須要把整個(gè)library導(dǎo)入進(jìn)來(lái)進(jìn)行引用,但是有了gradle之后,Android Library項(xiàng)目可以直接導(dǎo)出成aar,然后其他項(xiàng)目像引用jar的方式直接方便的引用。
具體可參看下圖:
aar包解壓之后的結(jié)構(gòu):
jar包解壓之后的目錄結(jié)構(gòu):
怎么樣?jar包和aar包的區(qū)別很明顯吧。
2
打包apk文件
在android studio中打包apk文件有兩種方式:
通過(guò)gradle配置輸出apk文件
執(zhí)行Generate singed apk操作獲得apk文件
下面我們將分別介紹一下這兩種方式的具體步驟,首先我們先看一下如何通過(guò)gradle配置的方式,輸出apk文件。
2.1 gradle配置打包腳本
配置打包類型
可以發(fā)現(xiàn)這里的buildType中配置了release包和debug包,以及各自的簽名信息:
singingConfig singingConfigs.release
更加具體的簽名信息配置在singingCongis中,下面我們來(lái)看一下其實(shí)如何設(shè)置的
配置簽名信息
這樣我們就配置好了apk打包的簽名信息,然后我們可以打開(kāi)Build Variants操作框了…
配置Build Variants
這里可以看到我們?cè)趍obile module中定義了兩個(gè)buildType,其中debug和release Type,并且其打包時(shí)默認(rèn)使用的簽名信息就是我們剛剛配置的各自的簽名信息。
這里需要說(shuō)明的是android studio中module默認(rèn)都會(huì)有debug和release兩個(gè)buildType,就算你什么都不配置的話,這里也會(huì)存在這兩個(gè)buildType,而且,除了這兩個(gè)之外你還可以配置額外的定制化的buildType,比如你想打一個(gè)信息的debug01包,使用另外的一套簽名信息:
在buildType節(jié)點(diǎn)下添加
添加新的簽名信息
debug01 {
storeFile file("bbb.keystore")
storePassword "222222222"
keyAlias "bbb.keystore"
keyPassword "222222222"
}
配置Build Variants
可以發(fā)現(xiàn)這時(shí)候Build Variant中mobile module多了一個(gè)buildType:debug01,其就是我們剛剛配置的debug01 buildType,并且使用的是另外的一套簽名信息,若我們選中debug01,則android studio默認(rèn)run或者是build apk的時(shí)候就會(huì)編譯debug01版本的apk了。
執(zhí)行run app或者是Build apk操作
這樣我們最終就能夠輸出一個(gè)apk格式的安裝包了。
2.2執(zhí)行Generate singned apk操作
除了上面的通過(guò)gradle配置的方式生成apk文件,我們還可以執(zhí)行Generate singned apk操作,通過(guò)這樣的操作,我們也可以獲得一個(gè)apk的輸出文件,具體步驟如下:
執(zhí)行Build –> Generate singed apk操作
填寫相應(yīng)的簽名信息
選擇打包的類型
好吧,上面就是我們所要介紹的打包apk的兩種方式。下面我們?cè)谥v解一下如何通過(guò)android studio打包aar和jar。
3
打Jar包
目前通過(guò)android studio打包jar,基本有兩種方式:
1.創(chuàng)建module,然后編譯完成之后 module中自動(dòng)的創(chuàng)建了相關(guān)的jar文件
這里的classes.jar就是module相關(guān)的jar包,我們可以將其更改名稱之后拷貝到app下的lib目錄中;
2.另一種方式其實(shí)跟第一種方式是一樣的,只不過(guò)其是通過(guò)gradle腳本實(shí)現(xiàn)的
app為我們的主工程,librarydemo是我們要將其生成jar包的model.
在librarydemo中加入如下代碼:
task makeJar(type: Copy) {
delete 'build/libs/mysdk.jar'
from('build/intermediates/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'mysdk.jar')
}
makeJar.dependsOn(build)
//在終端執(zhí)行生成JAR包
// gradlew makeJar
在Terminal中鍵入 gradlew makeJar 回車看到如下所示就OK了:
4
打aar包
其實(shí)打aar包和jar包類似,只不過(guò)是其目錄變化了而已:
可以看到同樣需要其作為library,而且其生成的目錄為:/build/output/aar/
好了,以上就是如何通過(guò)androd studio打包apk,aar和jar的相關(guān)內(nèi)容了