NDK 导入.a

自 android studio 2.2 +后就集成了ndk开发, 自带cmake 编译器.  编写ndk时候,配置很简单。再也不需要用android.mk配置文件。


新建一个带ndk开发项目的结构是这样的,




言归正传,那么要添加第三方的xx.a链接库呢?

通常我们把第三方提供的h文件夹,放在cpp的include里面。这是规范,不是必须。而xxx.a库放在src/main/jniLibs/armeabi目录下。

本文章以添加libjsoncpp.a连接库做例子

首先在cpp目录下建立一个include文件夹,把jsoncpp官方提供的头文件文件夹拷贝到include里面(我这个项目有3个链接库,jsoncpp, curl , openssl,另外2个仅做参考作用,与其无关





第二步, 在app的src目录的main下,建立一个文件夹,jniLibs,然后在jniLibs里面再建立一个armeabi文件夹。

然后把libjsoncpp.a链接库拷贝进去。




第三步, 动态库与头文件拷贝进去时候,是需要告诉编译器做关联的在app目录的src文件夹下有个CMakeLists.txt文件,我们通过它编写配置信息。


jsoncpp头文件所在目录告诉编译,在里面添加

include_directories( src/main/cpp/include/jsoncpp)


如果有多个链接库,那么可以这样
例如有三个链接库,jsoncpp, currl , openssl.


include_directories( src/main/cpp/include/jsoncpp
                     src/main/cpp/include/curl
                     src/main/cpp/include/openssl
                     )
然后告诉编译器,libjsoncppp.a在哪个目录下,并指定链接库的名称

接着添加

#添加json库
add_library(jsoncpp STATIC IMPORTED)
set_target_properties(jsoncpp
  PROPERTIES IMPORTED_LOCATION
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libjsoncpp.a)


然后修改target_link_libraries,加多一行jsoncpp

target_link_libraries(native-lib
                      jsoncpp
                      ${log-lib})






如果有多个,那么可以多次添加。如
#添加json库
add_library(jsoncpp STATIC IMPORTED)
set_target_properties(jsoncpp
  PROPERTIES IMPORTED_LOCATION
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libjsoncpp.a)

#添加curl网络请求
add_library(curl STATIC IMPORTED)
set_target_properties(curl
  PROPERTIES IMPORTED_LOCATION
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libcurl.a)

#添加加密工具(md5, base64, des, aes , asa) part-1
add_library(crypto STATIC IMPORTED)
set_target_properties(crypto
  PROPERTIES IMPORTED_LOCATION
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libcrypto.a)

#添加加密工具(md5, base64, des, aes , asa) des加密 part-2
add_library(ssl STATIC IMPORTED)
set_target_properties(ssl
  PROPERTIES IMPORTED_LOCATION
  ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libssl.a)
target_link_libraries(native-lib
                      jsoncpp
                      curl
                      crypto
                      ssl
                      ${log-lib}) 

然后gradle编译就可以使用了。是不是很简单?











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值