編寫生成.a庫
第一步: 創(chuàng)建JNI的hello程序
第二步:在cpp下創(chuàng)建include/calcul.h
calcul.h
//
// Created by Administrator on 2020/11/12.
//
#ifndef JNITEST_CALCUL_H
#define JNITEST_CALCUL_H
int add(int a , int b);
#endif //JNITEST_CALCUL_H
第三步:寫calcul.cpp來實現(xiàn)頭文件calcul.h中的方法
calcul.cpp
#include <jni.h>
#include "include/calcul.h" //引用頭文件,相當于java中實現(xiàn)接口,頭文件為接口,本cpp為實現(xiàn)
int add(int a , int b){
return a + b;
}
第四步: 在CMakeLists.txt中加入calcul.cpp
第五步: 在native-lib.cpp中調(diào)用add方法
第六步: 在MainActivity中調(diào)用
以上是c代碼例子編寫 , 下面生成.a靜態(tài)庫供別人使用
打開CMakeLists.txt文件嘉汰,
將add_library下的SAHRED改為STATIC鞋怀,
將native-lib.cpp刪掉 ,
將MainActivity中native方法刪去
直接運行或者編譯一下都行密似,.a文件就會生成了,別人引用就能直接使用里面的方法
使用.a庫
第一步:將.a文件需要的頭文件放到指定目錄葫盼,這里放在了include/下面
第二步:在main下創(chuàng)建jniLibs把需要的.a文件粘貼進去
![image.png](https://upload-images.jianshu.io/upload_images/24519578-de81ec53ca66f87f.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
第三步:修改CMakeLists.txt
添加include_directories(include/)
, 括號里是.a文件的頭文件
添加
add_library(native-lib STATIC IMPORTED)
set_target_properties(
native-lib #這個一般是.a文件去掉lib和后綴之后的名字残腌,
#可以在生成的時候自己設(shè)置抛猫,
#上次沒改所以還是native-lib,
#與這次項目重名了闺金,
#所以這次項目改成了native-lib123
PROPERTIES IMPORTED_LOCATION
${CMAKE_SOURCE_DIR}/../jniLibs/arm64-v8a/libnative-lib.a #.a文件的路徑讥巡, ${CMAKE_SOURCE_DIR}這個是cpp下的路徑
)
在 target_link_libraries 中添加
target_link_libraries( # Specifies the target library.
native-lib123
native-lib #這個是.a靜態(tài)庫名字
# Links the target library to the log library
# included in the NDK.
${log-lib} )
在 MainActivity 中使用
直接使用add()方法,他的實現(xiàn)在.a靜態(tài)庫中