在很多的工程中安卓工程中,有许多底层代码都是用C/C++写的, 且很多会封装成库,因为C/C++的代码效率高,所以就有一个问题是如何生成安卓可调用的动态库即so文件, 下面一一到来
下载NDK
如果国外官网的下载速度太慢,可以找一些国内的网站
http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform-sdk-download-mirror.html
http://blog.csdn.net/gyh198/article/details/75036686
或者可以复制下载链接用迅雷下载
我下载的是这个版本 android-ndk-r16-windows-x86_64 非安装版本的-
解压文件。
设置系统变量,在系统变量PATH添加刚才解压的NDK文件路径
设置成功后在CMD中执行
ndk-build
会出现如下
否则会提示找不到命令
注意:
(1)NDK的路径一定要选到这一层
(2)系统变量有时候刚设置完后并不会使能,可能需要重启电脑
- 创建Android.mk文件以及Application.mk文件
Android.mk文件内容如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)
其中第三行hello为要输出的文件名称,第四行为要编译的文件,如果是多个文件用 \ 换行,每行一个C/C++文件
这个文件的具体语法可以参考这篇文章
http://blog.csdn.net/ymangu666/article/details/23657565
http://blog.csdn.net/qq_695538007/article/details/44339643
下面是Application.mk 文件
APP_STL := stlport_static
如果系统中只有C文件的话,这个文件可以不要。
具体的语法参考如下文章
http://blog.csdn.net/wang_shaner/article/details/41479721
NDK目录下新建JNI文件夹
把要编译的C/C++文件,上面建的两个文件,都放入其中在CMD窗口下,切换到NDK目录下
然后执行
ndk-build
编译成功后,会自动生成两个文件夹libs, 和obj
libs下就是针对不同平台生成的so动态库文件
任务圆满完成!