今天公司需求把Android代碼打包成jar包提供給其他部門,以前用Eclipse打包過,Android studio倒還是第一次。雖然網上的文章不計其數,但是紙上得來終覺淺,有必要記錄下自己動手的操作過程。
1.創建一個工程。
過程就略過了。。。
2.工程中創建一個Android Library。
File->New->New Module 如下圖所示。
3.令此工程依賴新建的library。
項目級別gradle (app下的build.gradle)引入該Library。
//老版本
//compile project(':buildjar')
implementation project(':buildjar')
構建一下工程,如果在app文件夾內可以引用到library的方法,即可視爲構建成功。
4. 配置gradle腳本。
最蛋疼的步驟。我們需要在library級別的gradle進行修改。
直接附上gradle代碼。
apply plugin: 'com.android.library'
android {
defaultConfig {
}
buildTypes {
release {}
}
lintOptions {
abortOnError false
}
}
dependencies {}
def SDK_BASENAME = "HEIMA";
def SDK_VERSION = "_V1.0";
def OUTPUT_PATH = "build";
def INPUT_PATH = file('build/intermediates/packaged-classes/release/classes.jar')
//刪除任務
task deleteBuild(type: Delete) {
delete OUTPUT_PATH + SDK_BASENAME + SDK_VERSION + ".jar"
}
//創建任務
task makeJar(type: Jar) {
//需要打包的原始classes.jar
from zipTree(INPUT_PATH)
//將assets目錄打入jar包
from fileTree(dir: 'src/main',includes: ['assets/**'])
//生成文件名字
baseName = SDK_BASENAME + SDK_VERSION
//生成
destinationDir = file(OUTPUT_PATH)
}
makeJar.dependsOn(deleteBuild, build)
注意代碼填寫位置,在android{}和dependencies{}外面。同時這處的代碼有倆種寫法,還有一種是from() 和into(),我沒有試,不做討論。
同時,有坑要注意!關於打包的原始classes.jar的路徑,也就是我定義的INPUT_PATH。不同的Android Studio版本竟然不一致!這個需要自己手動確認下。有的版本可能在'build/intermediates/bundles/release/classes.jar'下。
5.運行。
第一步:重新build該project 。
第二步:點開右邊的gradle目錄->other->makeJar 。
6.最後在自定義的路徑下就會生成我們需要的jar包了。親測可用~
直接看demo的同學可以直接去我的github下載代碼,省金幣,簡單實用。