【Andriod學習記錄】使用AndroidStudio 打包jar

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裏面
在這裏插入圖片描述

結果反編譯看一下,沒有問題
在這裏插入圖片描述

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