前言
前些日子,遇到了一個優(yōu)化SDK的需求腻脏,本地測試優(yōu)化都很順利鸦泳。可是發(fā)布到遠程以后永品,通過遠程導(dǎo)入jar后就出了問題做鹰。可是遠程代碼明明和本地一樣鼎姐,本地代碼導(dǎo)入流暢運行钾麸,遠程導(dǎo)入就報錯,后來才發(fā)現(xiàn)炕桨,是jar的鍋饭尝。原來jar在打包時,只包含class文件與清單文件献宫,沒有包含manifest文件,所以我們需要將SDK中定義的權(quán)限全部復(fù)制到導(dǎo)入jar的Activity中钥平,流暢運行℃⑼荆看來還是基礎(chǔ)知識匱乏涉瘾,遂來一波整理。
正文
一吭净、描述
- (*.jar)睡汹,JAR文件就是java Archive File,顧名思義寂殉,它是java的一種文檔格式囚巴。只包含了class文件與清單文件,不包含資源文件,如圖片等所有的res中的文件彤叉。找一個jar文件更改后綴名為"zip"或者"rar"格式庶柿,然后解壓該文件,打開解壓后的文件夾秽浇,內(nèi)涵"assets"浮庐、"com"、"META-INF"點擊
com
里面全都是“*.class”文件柬焕。
- JAR文件格式以流行的ZIP文件格式文基礎(chǔ)审残。與ZIP不同的是,JAR文件不僅用于壓縮和發(fā)布斑举,而且還用于部署和封裝庫搅轿、組件和插件程序,并可被像編譯器和JVM這樣的工具使用富玷。在JAR中包含的特殊文件璧坟,如manifest和部署描述符,用來指示工具如何處理特定的JAR赎懦。JAR(java Archive , java歸檔文件)是與平臺無關(guān)的文件格式雀鹃,它允許將許多文件組合成一個壓縮文件。為J2EE應(yīng)用程序創(chuàng)建的JAR文件是EAR文件(企業(yè)JAR文件)励两。JAR文件格式提供了許多優(yōu)勢和功能黎茎,其中很多是傳統(tǒng)的壓縮格式如ZIP或者TAR所沒有提供的。它們包括:安全性伐蒋、減少下載時間工三、傳輸平臺擴展、包密封先鱼、包版本控制俭正、可一致性
- (*.aar),AAR(Android Archive)包是一個Android庫項目的二進制歸檔文件焙畔。我們隨便找一個arr文件掸读,然后修改后綴名為“zip”或“ara”格式,然后解壓該文件夾(每個arr解壓后的內(nèi)容可能會不一樣宏多,但是都會包含AndroidManifest.xml儿惫,classes.jar,res伸但,R.txt)
*arr文件中包含所有資源肾请,class以及res資源文件。
二更胖、生成arr文件和jar文件铛铁。
- 生成jar文件
在Android Studio中隔显,在某一個Moudule的Gradle腳本開頭聲明
apply plugin: 'com.android.library'
接著編譯該Module,編譯完成后會在Module的build->intermediates->bundles->bebug(release)->classes.jar
- 生成aar文件
在Android Studio中饵逐,在某一個Moudle的Gradle腳本開頭聲明
apply plugin:'com.android.library'
接著編譯該Moudle括眠,編譯完成之后會在Module的build-->outputs-->aar-->xxxx.aar
三、使用
- *.jar文件拷貝到lib目錄中倍权,AndroidStudio項目中添加:
dependencies{
compile fileTree(include: ['*.jar'],[dir:'libs'])
}
重新編譯即可掷豺。
- *.aar文件的使用有兩種方式,一種是在線的薄声,一種是本地添加当船。
- 網(wǎng)絡(luò)加載
直接使用遠程路徑導(dǎo)入 - 本地導(dǎo)入
(1) 將arr文件放在一個目錄內(nèi),例如libs奸柬;
(2) 在app的build.gradle文件添加如下內(nèi)容生年;
repositories {
flatDir {
dirs 'libs'
}
}
(3) 之后只需要添加一句gradle依賴便方便的引用了該aar文件婴程;
dependencies{
compile(name:'test' , ext:'aar')
}
至此廓奕,導(dǎo)入成功。
四档叔、小節(jié)
在什么情況下使用jar什么情況下使用aar呢桌粉?
如果你只是一個簡單的類庫,那么使用簡單生成的.jar文件即可衙四;如果你的是一個UI庫铃肯,包含一些自己寫的控件布局以及字體等資源文件就只能使用.aar文件。
文章來源:
https://blog.csdn.net/zxw136511485/article/details/52777286