在Android前期的開發時,我們使用的IDE工具大多是Eclipse,所以對其熟練度相信大家都是OK的,所以對於如何將一個項目導出爲jar包,供其它項目使用的操作都是沒問題的。
那麼現在問題來了,谷歌新提供的Android Studio工具,也都已經update到2.x版本了,到目前爲止,不知道有多少人懂得對module進行打包?至少在我寫下這篇文字之前,我都只關心寫代碼!
現在,個人實際寫了個Demo來證明自己研究過,並且得到了想要的結果。
GitHub地址:點擊我可獲得Demo
現在創建一個項目爲MakeJarDemo,並New Module爲common,項目結構如下圖:
其中,app 爲主工程,common是要將其打包成jar包的module
步驟1:實現依賴
可在app module中的build.gradle中編寫
compile project(':common')
實現app module對common module的依賴,完整代碼如下:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
compile project(':common')
}
也可以通過下圖步驟實現:
步驟1:在Module中編寫task
在我們編譯完工程之後,對應module中的所有java文件都已經生成了包含class 的classes.jar包,所在目錄如下圖:
由於要打包的是common module,所以在common的build.gradle中增加如下代碼:
//Copy類型
task makeJar(type: Copy) {
//刪除存在的
delete 'build/libs/mysdk.jar'
//設置拷貝的文件
from('build/intermediates/bundles/release/')
//打進jar包後的文件目錄
into('build/libs/')
//將classes.jar放入build/libs/目錄下
//include ,exclude參數來設置過濾
//(我們只關心classes.jar這個文件)
include('classes.jar')
//重命名
rename ('classes.jar', 'mysdk.jar')
}
makeJar.dependsOn(build)
//在終端執行生成JAR包
// gradlew makeJar
該task實現將對應的classes.jar 導出到對應Module的build/libs/下,並修改名字爲mysdk.jar ( 名字隨意)。
在完成以上步驟後,在android studio 提供的Terminal中鍵入 gradlew makeJar
回車看到如下所示就表示導出成功:
:commonutils:assembleReleaseUnitTest
:commonutils:testReleaseUnitTest
:commonutils:test
:commonutils:check
:commonutils:build
:commonutils:makeJar
BUILD SUCCESSFUL
Total time: 29.936 secs
D:\Developer\WorkspaceLocal\MakeJar>
其中打包出來的mysdk.jar所在目錄如下圖:
再此,一個可以提供給其他項目使用的jar包就實現了,那麼在其他項目中的引用,只需把該jar包放在對應module中的libs中,並添加依賴即可使用。
聲明:打出來的jar只有源代碼的.class 文件,不包含資源文件