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包的方法 - 星朝 - 博客園