Android studio 3.0+ 编译 .jar 和 .so

1. 前言:

       接近年底反而越多项目,天天加班,都要求年前做完。最近销售接一个项目,领导安排给做,客户需求也是奇葩,让人烦躁。客户需求是需要我们全部提供底层接口,支持平台有Windows .dll 和 Android 平台 .jar 和. so、Linux .so,看到这个需求时,真心想跟领导吐槽,真想不干了,什么都要我做,工资就那一份 o(╥﹏╥)o,但是想到今年和明年经济低迷,顿时把话咽回口中。o(* ̄︶ ̄*)o关于Android jar包这方面还真的没有做过,没有办法,只能找资料学习,于是,写了这篇文章记录调试过程,防止以后忘记了,可与重新翻看。

 

2. 将Android app代码编译成jjar 包

2.1 新建Android jni 样例工程,目录如下,

2.2. 编写C/C++ JNI 代码

2.3  点击菜单,Build -> Rebuild project 编译代码,生成.so 

成功编译,可以发现,在app -> build -> intermediates -> cmake -> debug -> obj

成功编译,可以发现,在app -> build -> intermediates -> cmake -> release -> obj

两个目录下,生成.so 文件

 

3. 编译app 中的,java 文件,生成jar包

3.1 修改app moudle 中的build.gradle 文件,

如下图所示:

注释 

apply plugin: 'com.android.application'

 applicationId "radio.activity"

修改成,编译为library 而不是 application文件。

 

3.2  在app module 的build.gradle 文件的 android 节点下,增加编译库的代码

 task makeJar(type: Copy) {
        //删除存在的
        delete 'build/libs/RadioSerialPortLib.jar'
        //设置拷贝的文件
        from('build/intermediates/packaged-classes/debug')
        //打进jar包后的文件目录
        into('build/libs/')
        //将classes.jar放入build/libs/目录下
        //include ,exclude参数来设置过滤
        //(我们只关心classes.jar这个文件)
        include('classes.jar')
        //重命名
        rename ('classes.jar', 'RadioSerialPortLib.jar')
    }

    makeJar.dependsOn(build)

注意:from 这单词不要错了,由于平时写C# 的winform 用的多,所以习惯性的将 from 打成 form ,因此,排错了一个多小时

才发现打错的单词,o(╥﹏╥)o o(╥﹏╥)o。

 

3.3 点击同步,sync 同步一下工程代码,

可以发现编译通过

 

3.5 打开Terminal控制台,输入指令 gradlew makejar

 gradlew makejar

首次生成会慢一点,需要时间长一点,可能需要1分钟左右。

成功编译完成如下,

最终,编译的jar

完成,2020年第一篇文章,好记忆不如烂笔头,加油。O(∩_∩)O哈哈~

/**
 *         ┏┓   ┏┓+ +
 *        ┏┛┻━━━┛┻┓ + +
 *        ┃       ┃
 *        ┃   ━   ┃ ++ + + +
 *        ████━████ ┃+
 *        ┃       ┃ +
 *        ┃   ┻   ┃
 *        ┃       ┃ + +
 *        ┗━┓   ┏━┛
 *          ┃   ┃
 *          ┃   ┃ + + + +
 *          ┃   ┃    Code is far away from bug with the animal protecting
 *          ┃   ┃ +     神兽保佑,代码无bug
 *          ┃   ┃
 *          ┃   ┃  +
 *          ┃    ┗━━━┓ + +
 *          ┃        ┣┓
 *          ┃        ┏┛
 *          ┗┓┓┏━┳┓┏┛ + + + +
 *           ┃┫┫ ┃┫┫
 *           ┗┻┛ ┗┻┛+ + + +
 *
 * @author chenxi
 * @date 2020-1-6 22:18:03
 */
————————————————
 

2020年1月9日16:56:13 新增:

1.今天在公司编译jar 又遇到一个问题,

FAILURE: Build failed with an exception.

* What went wrong:
Gradle 5.1.1 requires Java 8 or later to run. You are currently using Java 7.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

 

查看,错误,可以发现是电脑JDK 1.7 版本低,,与Gradle 5.1.1 要求最低为1.8  ,因此需要修改。

 

参考:

AndroidStudio 3.0 生成jar包的方法 - 星朝 - 博客园

 

 

 

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