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

 

 

 

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