android studio 2.x ndk开发一
在Android studio 2.x以前,ndk开发对于Android studio来说是非常不友好的,没有代码提示,写c/c++代码效率非常低下,很多人还是使用Eclipse去进行ndk开发,我这里就默认你会使用Eclipse开发ndk了,这里介绍的是如何使用Android studio来快速导入到你的工程的,即原先你是使用Eclipse来开发ndk的。这里以一个opencv的简单例子来说明。
1.下载opencv的Android源码
https://opencv.org/opencv-3-3.html,我这里使用的是现在最新的版本
2.新建Android studio项目,注意不用勾选支持c++的选项
在工程目录下创建jni目录和libs目录,如图:
把刚才下好的opencv源码中sdk目录下的native文件夹全部copy到你刚才创建的jni目录下
创建Android.mk和Application.mk文件。
Android.mk:
LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) OpenCV_INSTALL_MODULES := on OpenCV_CAMERA_MODULES := off OPENCV_LIB_TYPE :=STATIC ifeq ("$(wildcard $(OPENCV_MK_PATH))","") #加入opencv的mk配置,这样就不用你去自己写opencv的配置了 include $(LOCAL_PATH)/native/jni/OpenCV.mk else include $(OPENCV_MK_PATH) endif LOCAL_MODULE := OpenCV LOCAL_SRC_FILES := NDKUtils.cpp LOCAL_LDLIBS += -lm -llog include $(BUILD_SHARED_LIBRARY)Application.mk:
APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_PLATFORM := android-26 APP_ABI :=all
接下来就是添加jni的调用了,这里我就不进行说明了,这方面的博客很多,相信Android开发(非初学者)都看的懂,后面我会把我的代码共享出来。我这个demo实现的是图片的灰度处理,是用c/c++的数组方式去进行矩阵变化的,当然了你也完全可以通过java的数组方式去处理矩阵,道理都是一样的。
如果你配置了Android ndk的环境变量,在工程下进入到jni目录下,运行ndk-build,c/c++代码就开始编译了,编译生成的动态链接库在刚创建的libs文件夹下
如果你未配置Android ndk的环境变量,这里告诉你另外一种编译的方式,通过Android studio添加External Tools,我这里已经添加了了两个工具
这样你点击上面图片中ndk-build后,工程就开始编译了。
后面的效果就不多说了。
源码地址:http://download.****.net/download/jxgzycxyxhp/10103483