開發(fā)中使用到了各種key、三方賬戶垮庐、CA證書爆袍、算法等安全系數(shù)要求比較高的數(shù)據(jù)首繁,那么如果將這些數(shù)據(jù)存放到Java代碼中,試想安全級別是相當(dāng)?shù)偷脑赡遥挥捎贘ava是基于虛擬機(jī)的編程語言弦疮,更容易被人反編譯,因此越來越多的應(yīng)用將其中的核心代碼以C/C++為編程語言蜘醋,并且以SO文件的形式供上層JAVA代碼調(diào)用胁塞,以保證安全性。
那么本篇文章將介紹如何創(chuàng)建so庫文件及如何將so庫文件打包成aar文件供項(xiàng)目使用堂湖。
開發(fā)環(huán)境:
Java: 1.8.0
IDEA: Android Studio 3.4.1
minSdkVersion 15
targetSdkVersion 29
compileSdkVersion 29
1.創(chuàng)建Native C++項(xiàng)目
選擇Native C++點(diǎn)擊Next
填寫項(xiàng)目名稱及包名點(diǎn)擊Next
Standard默認(rèn)不修改,點(diǎn)擊Finish
ok状土,項(xiàng)目創(chuàng)建完畢无蜂,可以運(yùn)行試一下,項(xiàng)目默認(rèn)創(chuàng)建好了對應(yīng)的c++文件及Android端的調(diào)用
創(chuàng)建好的項(xiàng)目內(nèi)容
運(yùn)行效果
2.創(chuàng)建Module蒙谓,業(yè)務(wù)服務(wù)邏輯將放到此Module中(aar文件將由該Module生成)
在項(xiàng)目中創(chuàng)建 Module
選擇Android library點(diǎn)擊Next
填寫library name 點(diǎn)擊Finish
創(chuàng)建好的lib Module斥季,在app gradle文件中引入lib Module
在lib中創(chuàng)建DataHelper類加載so庫文件并對外暴露方法,alt+enter 生成對應(yīng)的c++代碼
編寫c++代碼累驮,對外提供相關(guān)數(shù)據(jù)
main方法中初始化DataHelper方法驗(yàn)證是否可用酣倾,運(yùn)行...
測試通過
Build - Make Project 生成對應(yīng)的so庫文件
此時(shí)生成的so文件會(huì)很大,可以進(jìn)行包體壓縮配置谤专,在CMakeLists.txt文件中加如下配置
# 壓縮包體
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -s")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -s")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s")
lib 的gradle文件中設(shè)置支持讀取so文件配置
將生成的庫文件拷貝到lib Module中的libs中躁锡,點(diǎn)擊右側(cè)Gradle中的assembleRelease,生成arr文件
在lib-build-outputs-aar 中生成出了arr文件
3.此時(shí)可以在其他項(xiàng)目中使用該arr文件了
引入aar文件置侍,配置gradle
arr文件的使用
效果
Ok映之,至此從so創(chuàng)建到aar的導(dǎo)出再到三方集成已經(jīng)講解完畢,感謝您的瀏覽蜡坊,Thanks