文档章节

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

1071954237
 1071954237
发布于 2017/01/11 17:37
字数 300
阅读 106
收藏 0

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')
}

 

© 著作权归作者所有

1071954237
粉丝 3
博文 97
码字总数 36187
作品 0
程序员
私信 提问
Android Studio NDK开发

android studio 1.3以前 参考文章:http://www.codeceo.com/article/android-studio-ndk-jni.html http://yanbober.github.io/2015/02/14/androidstudiojni_1/ 一、主要步骤: 1、写带有nat......

GalaxyBruce
2016/03/30
70
0
Cygwin+Eclipse+Android NDK ---Windows

近几天看JNI的问题,都说要怎么编译,要输入很多命令行的东西。我觉得既然有IDE应用开发环境,就会有相应的JNI开发,很方便的不必输入什么命令行的。 SDK应用常用的编译环境是Eclipse,然后就...

刘遇安
2013/03/30
2.7K
0
Android NDK学习笔记---自定义动态链接库

一、创建一个类叫JNI.java 二、进入dos下,切换到项目下的binclasses文件夹,使用javah命令编译JNI.class javah com.demo.ndkdemo.JNI 编译成功后,会出现一个头文件 comdemondkdemo_JNI.h 三...

yuewawa
2016/03/17
66
0
Mario_Q/jnitool

@jnitool version 1.0 工具的需求 这是一个代码生成工具是为了方便,自定义的Java结构体转成C++结构体方便C++的调用,通过对JNI的封装了方便C++和Java结构体之间的交互. 对自定义java结构体访...

Mario_Q
2014/12/12
0
0
深入了解android平台的jni---注册native函数

注册native函数有两种方法:静态注册和动态注册。 1、静态注册方法 根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联...

mfcai
2013/10/15
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0
实战项目-学成在线(八)

在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。 注册中心作用: 1、微服务数量众多,要进行远程调用就需要知...

lianbang_W
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部