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 ,因此需要修改。
参考: