在開(kāi)發(fā)中遇到好用的開(kāi)源庫(kù)內(nèi)心總是激動(dòng)的,但是如果因?yàn)椤熬W(wǎng)絡(luò)問(wèn)題”無(wú)法通過(guò)compile命令引用內(nèi)心又是崩潰的,這個(gè)時(shí)候aar文件對(duì)于我們來(lái)說(shuō)就是非常好的選擇。
什么是aar
在Java開(kāi)發(fā)中庫(kù)的形式一般會(huì)以jar包的形式提供威恼,但是jar包只能包含代碼文件。在Android開(kāi)發(fā)中經(jīng)常會(huì)涉及到圖片寝并、布局等資源沃测,這個(gè)時(shí)候aar文件可以把這些資源統(tǒng)一打包進(jìn)來(lái)。
如何打包aar
新建Library
默認(rèn)你已經(jīng)建好了一個(gè)model食茎,并且是Library形式的存在蒂破。
選中Gradle視圖窗口
點(diǎn)擊Android Studio右側(cè)Gradle,顯示中選中你的庫(kù)别渔,然后依次選中Tasks-->build-->assembleRelease,然后雙擊運(yùn)行即可附迷。

等待運(yùn)行顯示如下表示成功:

然后可以到 你的項(xiàng)目地址\build\outputs\aar 目錄下找到生成的aar文件,選擇release版本哎媚。
使用 gradlew assembleRelease 命令
在Android studio的Terminal命令行中輸入gradlew assembleRelease 回車即可
注:命令方式有可能會(huì)失敗喇伯,具體需要分析報(bào)錯(cuò)信息。如果命令方式失敗可以使用上面的方法
如何使用aar
首先在project視圖下拨与,將aar文件添加到libs文件夾里
然后需要在使用的模塊的build.gradle文件中添加如下配置:
repositories {
flatDir {
dirs 'libs'
}
}
最后在dependencies中添加配置:
compile(name: 'lfilepickerlibrary-release', ext: 'aar')
name 為需要引用的aar文件的文件名
填坑之旅
ClassNotFoundException
運(yùn)行后報(bào)找不到aar文件中的一個(gè)類稻据,打開(kāi)aar文件查看這個(gè)類明明存在。
...掙扎中...
經(jīng)過(guò)分析(查找資料)發(fā)現(xiàn)原庫(kù)中引用了第三方庫(kù)(其實(shí)就是recyclerview),但是打包成aar的時(shí)候好像并沒(méi)有打入進(jìn)來(lái)买喧,解決方式:在新的工程中引入recyclerview捻悯,重新Rebulid后成功運(yùn)行。
P.S.:兩者之間的版本號(hào)是否必須一致尚未測(cè)試
資源命名問(wèn)題
res下的資源名稱很有可能會(huì)和依賴的aar庫(kù)中的資源名稱相同淤毛,引發(fā)資源重復(fù)引用今缚。
處理方式為在打包aar庫(kù)文件時(shí),將資源名稱以自己獨(dú)有的格式命名低淡,避免常規(guī)命名沖突姓言。
最后說(shuō)兩句
目前碰到的上面兩個(gè)問(wèn)題,可能會(huì)有以下其他的坑留作以后補(bǔ)充蔗蹋。
其實(shí)compile命令添加引用的方式是最方便的何荚,但是對(duì)于“網(wǎng)絡(luò)問(wèn)題”無(wú)法正常使用的人來(lái)說(shuō)aar文件就是救命稻草了,所以還是希望大牛們?cè)陂_(kāi)源的時(shí)候如果方便盡可能的提供一下這種方式猪杭。有問(wèn)題歡迎留言~
歡迎訪問(wèn)博客: https://leonhua.github.io/ 餐塘,查看更多文章。