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目录,如图:

android studio 2.x ndk开发一android studio 2.x ndk开发一

把刚才下好的opencv源码中sdk目录下的native文件夹全部copy到你刚才创建的jni目录下

android studio 2.x ndk开发一android studio 2.x ndk开发一


创建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 studio 2.x ndk开发一android studio 2.x ndk开发一

如果你未配置Android ndk的环境变量,这里告诉你另外一种编译的方式,通过Android studio添加External Tools,我这里已经添加了了两个工具

android studio 2.x ndk开发一android studio 2.x ndk开发一

android studio 2.x ndk开发一android studio 2.x ndk开发一

android studio 2.x ndk开发一android studio 2.x ndk开发一

android studio 2.x ndk开发一android studio 2.x ndk开发一


这样你点击上面图片中ndk-build后,工程就开始编译了。

后面的效果就不多说了。


源码地址:http://download.****.net/download/jxgzycxyxhp/10103483