自定义Application.mk Android.mk jni目录

ndk-build NDK_APPLICATION_MK=./Application.mk  NDK_DEBUG=1

APP_BUILD_SCRIPT=$(APP_PROJECT_PATH)/cpp/Android.mk(相对于项目的位置)

Application.mk

APP_CPPFLAGS:=-frtti -fexceptions
APP_ABI:=armeabi armeabi-v7a x86
#APP_ABI:=x86
APP_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 <thread>, <mutex>
APP_STL := gnustl_static
APP_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:=STATIC
ifeq ("$(wildcard $(OPENCV_MK_PATH))","")  
#try to load OpenCV.mk from default install location
include C:\work-software\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk
#include /opt/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk
else
include $(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.cpp

FILE_LIST := $(wildcard /opt/OpenCV-android-sdk/sdk/native/lib/arm64-v8a/*)
LOCAL_LDLIBS := -llog
LOCAL_LDLIBS += -ljnigraphics
LOCAL_LDLIBS += -lz # Compression library
# C++11 and threading enabling features.
#  Otherwise c++11, pthread, rtti and exceptions are not enabled by default
LOCAL_CPPFLAGS := -std=c++11 -pthread -frtti -fexceptions
include $(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')
}

 

转载于:https://my.oschina.net/leonardtang/blog/823182

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值