文章目錄
- 1 概述
- 2 方法總結
-
- 2.1 直接将之前的apk 打包為jar
- 2.2 通過建立module生成jar
-
- 2.2.1 傻瓜式一件生成jar
- 2.2.2 稍微複雜一點的指令行方法
1 概述
最近需要将某個java 檔案或者項目打包成jar。在網上搜尋了幾個文章,都不好使,摸索了半天,自己總結了各種目前比較好用的方法
參考文章
Android Studio打包生成jar
由于androidstudio 版本的問題,上面的這個連結裡面的路徑有問題,我這裡做一個修改
基本上所有的文章都是這麼搞的,在我的android studio 版本都用不了了。
一般不需要指令行,下面有一個傻瓜式的打包方法
2 方法總結
2.1 直接将之前的apk 打包為jar
使用android studio 可以将目前的工程直接打包為jar。在目前的工程下:
生成的結果儲存在下面的這個路徑:
app\build\intermediates\app_classes\release\bundleReleaseClasses
最後檢視結果沒有問題
2.2 通過建立module生成jar
2.2.1 傻瓜式一件生成jar
參考文章:Android之AndroidStudio生成jar
1、在工程下建立一個module
選擇:Android Library
在android studio 工程右邊,執行
最終生成:build/intermediates/packaged-classes/release/classes.jar
檢視最後結果,結果沒有問題
2.2.2 稍微複雜一點的指令行方法
參考文章
Android Studio打包生成jar
由于androidstudio 版本的問題,上面的這個連結裡面的路徑有問題,我這裡做一個修改
1、在工程下建立一個module
選擇:Android Library
2、記下目前的module name
3、修改目前工程的build.gradle
添加以下内容:
implementation project(":test")
//test為建立的工程名
最終結果變成如下内容
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation project(":testpush")
}
4、修改目前module下的build.gradle
添加這段内容:原部落格這裡的路徑不對,需要注意
task makeJar(type:Copy) {
//删除存在的jar
delete "lib/test.jar"
//設定拷貝檔案
from("build/intermediates/packaged-classes/debug/")
//打進jar後檔案目錄
into("libs/")
//将classes.jar放入libs目錄下
//include,exclude參數來設定過濾
include("classes.jar")
//重命名為test.jar
rename("classes.jar","test.jar")
}
makeJar.dependsOn(build)
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 28
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
task makeJar(type:Copy) {
//删除存在的jar
delete "lib/test.jar"
//設定拷貝檔案
from("build/intermediates/packaged-classes/debug/")
//打進jar後檔案目錄
into("libs/")
//将classes.jar放入build/libs目錄下
//include,exclude參數來設定過濾
include("classes.jar")
//重命名為test.jar
rename("classes.jar","test.jar")
}
makeJar.dependsOn(build)
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
3 然後在Terminal中執行Gradlew makeJar指令
之後生成一個jar在libs裡面
結果反編譯看一下,沒有問題