1.首先明白一個道理。
Android Studio編譯的時候會自動將項目生成jar和aar的,我一開始以為jar需要自己單獨生成,其實AS已經自動生成了,網上找的很多資料都是一個復制的過程而已。
只不過在AS3.1以前是放到build/intermediates/bundles文件夾里面。
然而現在換成了build\intermediates/packaged-calsses文件夾里面了,以后也不知道會放哪兒了,這是一坑。
2.通常第一步都是一個新建一個module。
如果直接從已經完成的項目出發,可以直接修改build.gradle第一行,改成apply plugin:'com.android.library';
但是這么一修改,可能會出現很多錯誤,什么參數錯誤,什么資源文件有問題等。
保險起見,從“0”開始。
新建一個module,注意選擇Android Library類型。
把一些需要打包的文件統統寫到這個library里面,如果有什么錯誤的話,就一個一個去解決吧。
將module完善之后,就開始打包了。
3.在module的build.gradle配置生成jar的方案。
在文末添加如下代碼:
//修改jar名字+將指定jar生成的地方 task makeJar(type:Copy){ //如果之前存在,則先刪除 delete 'build/libs/test.jar' //設置拷貝的文件 from('build/intermediates/packaged-classes/debug/') //生成jar包后的文件目錄位置 into('build/libs/') //include,exclude參數來設置過濾 include('classes.jar') //重命名 rename('classes.jar','test.jar') } makeJar.dependsOn(build)
4.利用命令行執行該方案。
在AS最下方的Terminal中輸入命令即可。
如果是MAC電腦:./gradlew makeJar
如果是Windows電腦: gradlew makeJar
如果報錯,一般都是沒有配置gradle環境,谷歌一下解決方案唄。
幸運的話,可以在build/libs文件夾下看到生成的jar文件了。
5.簡單理解一下jar和aar的區別吧。
在Build Success后,在module的build/outputs/aar文件夾下會有一個aar文件。
在module的build/libs或自己定義的其他位置下會有一個jar文件。
二者區別:
jar: 只包含了class文件與清單文件 ,不包含資源文件,如圖片等所有res中的文件。
aar: 包含jar包和資源文件,如圖片等所有res中的文件。
aar編譯完就自動生成了,所以不同擔心資源問題。
6.如何使用aar文件。
很簡單。
i.將aar文件拷貝至目標項目的app/libs文件夾下。
ii.在app下的build.gradle中添加如下代碼:
分別是這兩塊:
repositories{ flatDir{ dirs 'libs' } }
implementation(name:'librarydemo-release',ext:'aar')
Sync Now一下,如果沒有報錯,應該就是成功引用了。
看一下依賴的外部類,已經有了剛才我們引用的library了。
7.如何引用jar文件。
這個網上搜一大把。方法也是類似的,更加簡單。
先將jar拷貝至目標項目的app/libs文件夾下。
mac電腦操作如下:右鍵->add as library->選擇當前mudule->OK.
windows電腦類似的。
8.其實jar文件也是可以使用資源文件的。
稍微有點麻煩。
首先將jar包中用到的資源文件放到自己的項目中。
然后在自己的項目中利用反射獲取。參考文章點我。