ndk操作流程

(一)NDK安装及环境配置
1.下载相应版本的android ndk
目前我基于android-ndk-r14b-linux-x86_64.zip进行开发
2.解压到Ubuntu下的mnt文件中,可以创建个文件夹为ndk,所以目前ndk的绝对路径为/mnt/ndk
3. 解压命令为: unzip android-ndk-r14b-linux-x86_64.zip
4. 解压完后需配置环境变量
(1) $sudo gedit ~/.bashrc 打开配置文件
(2) 在文件末尾添加以下代码:
 export ANDROID_NDK_HOME=/mnt/ndk/android-ndk-r14b
 export ANDROID_NDK_ROOT=/mnt/ndk/android-ndk-r14b
 export NDK=/mnt/ndk/android-ndk-r14b
 export PATH =${PATH}:$NDK
 保存信息
(3) source ~/.bashrc 使其修改的文件生效
(4) ndk-build 查看配置环境变量是否成功

//如果在界面上出现
Android NDK:Could not find application project directory!
Android NDK: Please define the NDK_PROJECT_PATH ...
则证明ndk安装成功
(二)NDK中jni操作

1.在项目文件夹中建立jni文件夹
(1)创建include文件夹,可以把C/C++的头文件全放入到include
(2)将所有c/c++文件放到jni文件夹下或者创建src文件夹将c/c++文件放入其中
(3)在jni文件夹下创建Android.mk,Application.mk两个文件
(4)在Android.mk中填写文件信息格式如下
#符号为注释符合
LOCAL_PATH := $(call my-dir)  #当前路径
include $(CLEAR_VARS)
LOCAL_MODULE :=libencrypt_m   #加载第三方动态库的名称
LOCAL_SRC_FILES := firsts/libencrypt_m.so #指定第三方库的具体路径
LOCAL_EXPORT_C_INCLUDES := include/openssl  #加载第三方库的头文件路径
include $(PREBUILT_SHARED_LIBRARY)   #加载第三方库为动态库  SHARED为动态库

include $(CLEAR_VARS)
LOCAL_MODULE := libiconv           #加载第三方静态库的名称
LOCAL_SRC_FILES := firsts/libiconv.a  #指定第三方静态库的具体路径
LOCAL_EXPORT_C_INCLUDES :=include/iconve #加载第三方静态库的头文件路径
include $(PREBUILT_STATIC_LIBRARY)     #加载第三方库为静态库 STATIC为静态库
#当前想要设置的模块
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := \                 #设置头文件路径
                   include \
                   include/openssl \
                   include/iconve \
                   include/libxml
LOCAL_SRC_FILES := ghasd.cpp \    #加载需要编译的c/c++文件

LOCAL_MODULE    := Sellib     #生成库的文件名,自己定义
LOCAL_STATIC_LIBRARIES :=libiconv    #关联第三方静态库,
LOCAL_SHARED_LIBRARIES := libencrypt_m  libPDI_CPP #关联第三方动态库
LOCAL_LDLIBS += -lz  -llog -lm -ldl   #关联系统自带的系统库,log是android打印的日志关联的库
LOCAL_CPPFLAGS += -std=c++11          #设置c++编译标准为c++11
include $(BUILD_SHARED_LIBRARY)      #构建的库为动态库,如果构建的库为静态库则为BUILD_STATIC_LIBRARY

(5)在Application.mk中填写文件信息格式如下

APP_ABI := armeabi-v7a  x86  #指定生成库的版本armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64
                             #APP_ABI:= all 仅能生成当前版本支持的ABI信息库文件,如果需要生成最新的必须更新相应的NDK版本。
APP_STL := gnustl_static     #c++编译支持,如果不设置STL模板将会因使用c++ string的STL模板报错
APP_CFLAGS += -Wno-error=format-security   #设置格式忽略些,设置为安全状态
APP_PLATFORM: = android-14    #设置android编译的平台


(6)在命令行输入ndk-build则进行编译
(7)编译完后将会在jni同层生成libs,obj文件,libs中包含了生成的动态库信息,obj属于中间日志信息,表示编译时添加的信息

 

 

 

 

 

 

 

 

 
 
    

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值