Android studio 打包jar包

  在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 文件,不包含資源文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章