【Andriod学习记录】使用AndroidStudio 打包jar

文章目录

  • 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 版本都用不了了。
【Andriod学习记录】使用AndroidStudio 打包jar_第1张图片

一般不需要命令行,下面有一个傻瓜式的打包方法

2 方法总结

2.1 直接将之前的apk 打包为jar

使用android studio 可以将当前的工程直接打包为jar。在当前的工程下:
【Andriod学习记录】使用AndroidStudio 打包jar_第2张图片

生成的结果保存在下面的这个路径:

app\build\intermediates\app_classes\release\bundleReleaseClasses

最后查看结果没有问题
【Andriod学习记录】使用AndroidStudio 打包jar_第3张图片

2.2 通过创建module生成jar

2.2.1 傻瓜式一件生成jar

参考文章:Android之AndroidStudio生成jar
1、在工程下创建一个module
选择:Android Library
【Andriod学习记录】使用AndroidStudio 打包jar_第4张图片
在android studio 工程右边,执行
【Andriod学习记录】使用AndroidStudio 打包jar_第5张图片
在这里插入图片描述
最终生成:build/intermediates/packaged-classes/release/classes.jar

查看最后结果,结果没有问题
【Andriod学习记录】使用AndroidStudio 打包jar_第6张图片

2.2.2 稍微复杂一点的命令行方法

参考文章
Android Studio打包生成jar
由于androidstudio 版本的问题,上面的这个链接里面的路径有问题,我这里做一个修改
1、在工程下创建一个module
选择:Android Library
【Andriod学习记录】使用AndroidStudio 打包jar_第7张图片
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
【Andriod学习记录】使用AndroidStudio 打包jar_第8张图片
添加这段内容:原博客这里的路径不对,需要注意

    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里面
【Andriod学习记录】使用AndroidStudio 打包jar_第9张图片

结果反编译看一下,没有问题
【Andriod学习记录】使用AndroidStudio 打包jar_第10张图片

你可能感兴趣的:(Android,安全)