ndk-build NDK_APPLICATION_MK=./Application.mk NDK_DEBUG=1
APP_BUILD_SCRIPT=$(APP_PROJECT_PATH)/cpp/Android.mk(相对于项目的位置)
Application.mk
APP_CPPFLAGS:=-frtti -fexceptionsAPP_ABI:=armeabi armeabi-v7a x86#APP_ABI:=x86APP_OPTIM := debug# In NDK r8e, we have to use GCC 4.7 for C++11 features like thread, mutex, etc.# The default GCC is 4.6, which does NOT define macro _GLIBCXX_HAS_GTHREADS,# so you’ll get errors like "mutex in namespace std does not name a type" etc.#NDK_TOOLCHAIN_VERSION := 4.7# GNU STL implements most C++11 features. Use either gnustl_static or gnustl_shared# Without this your C++ code will not be able to access headers like, APP_STL := gnustl_staticAPP_BUILD_SCRIPT=$(APP_PROJECT_PATH)/cpp/Android.mk
Android.mk
LOCAL_SRC_FILES := ../cpp/native-lib.cpp (相对于jni目录的位置)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) OPENCV_LIB_TYPE:=STATICifeq ("$(wildcard $(OPENCV_MK_PATH))","") #try to load OpenCV.mk from default install locationinclude C:\work-software\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk#include /opt/OpenCV-android-sdk/sdk/native/jni/OpenCV.mkelseinclude $(OPENCV_MK_PATH)endif LOCAL_MODULE := native-lib#MY_CPP_LIST := $(wildcard $(LOCAL_PATH)/*.cpp)#LOCAL_SRC_FILES := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)LOCAL_SRC_FILES := ../cpp/native-lib.cppFILE_LIST := $(wildcard /opt/OpenCV-android-sdk/sdk/native/lib/arm64-v8a/*)LOCAL_LDLIBS := -llogLOCAL_LDLIBS += -ljnigraphicsLOCAL_LDLIBS += -lz # Compression library# C++11 and threading enabling features.# Otherwise c++11, pthread, rtti and exceptions are not enabled by defaultLOCAL_CPPFLAGS := -std=c++11 -pthread -frtti -fexceptionsinclude $(BUILD_SHARED_LIBRARY)
android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.xxx.yyy" versionCode 1 versionName '1.0' minSdkVersion 10 targetSdkVersion 21 } buildTypes { release { minifyEnabled false proguardFiles ('proguard-android.txt') } } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn 'ndkBuild', 'copyJniLibs' } sourceSets { main { jni.srcDirs = [] jniLibs.srcDirs = ['src/main/jniLibs'] } }}task ndkBuild(type: Exec) { def ndkDir = project.plugins.findPlugin('com.android.application').sdkHandler.getNdkFolder() commandLine "$ndkDir/ndk-build.cmd", '-C', 'src/main/jni', "NDK_OUT=$buildDir/ndk/obj", "NDK_APP_DST_DIR=$buildDir/ndk/libs/\$(TARGET_ARCH_ABI)"}task copyJniLibs(type: Copy) { from fileTree(dir: file(buildDir.absolutePath + '/ndk/libs'), include: '**/*.so') into file('src/main/jniLibs')}