Android Studio2.2之后直接可以在创建工程时添加NDK支持了,添加之后,main文件夹下会多出一个native-lib.cpp这个文件,如果只为了一个简单的NDK接口,貌似这就结束了。直接在native-lib.cpp下编程即可。
但是,如果使用第三方库,就得重新配置了。到目前为止,网上大半文章都是.mk的配置方法,按照他们的步骤,在AS上一步一步做下去好像很难成功。
Android Studio2.2使用Cmake作为跨平台编译工具,创建完一个工程后,JNI的配置都由Cmake来管理,在priject文件夹下的CmakeList文件中。
CMake有一套自己的编写规则,按照引入方式的不同,先写两个demo
1,native-lib文件调用第三方库
第三方库是被编译成so库直接调用的,配置so库的时候,对应的头文件也要添加上
#譬如加载一个FFMPEG模块
1 include_directories(${pathToFFMPEG}/include) #添加ffmpeg对应的头文件目录,${pathToFFMPEG}为前面配置过的路径,可以替换为include_directories(E:/ffmpeg/include)这种路径格式
2 add_library( ffmpeg SHARED IMPORTED) #添加库文件,实际上就是引入so文件,IMPORT代表从第三方引入的意思
3 set_target_properties( ffmpeg PROPERTIES IMPORTED_LOCATION ${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libffmpeg.so#这句话是ffmpeg对应的so文件,so文件是放到JNILibs这个文件夹中
4 target_link_libraries( $\{log-lib} native-lib ffmpeg) #为native-lib加载ffmpeg库.
这样配置好就可以在native-lib里调用ffmpeg模块了
2,自己编写的cpp文件
#加载coreAlg核心代码
add_library(coreAlg SHARED src/main/cpp/coreAlg.cpp )#添加库文件,这种实际上是有AS给编译成so文件了
target_link_libraries(native-lib ${log-lib} coreAlg)#native-lib里调用coreAlg
android Studio(3.2.1) NDK配置
1.创建as工程 2. 创建class类 3. 生成头文件 3.1 配置命令工具 添加工具: 配置工具: Program: $JDKPath$\bin\javah.exe Arugments:-d j ...
关于Android Studio中使用jni进行opencv配置开发环境的要素秘诀
使用jni进行opencv开发可以快速地将PC端的opencv代码移植到手机上,但是如何在android studio下进行配置,网上几乎找不到教程,大多都是eclipse下使用mk文件的方法,找不到 ...
在Android studio中进行NDK开发
在Android studio中进行NDK开发 分类: Android平台 软硬件环境 ubuntu kylin 14.04 红米note增强版 Android studio 0.8.6 ndk ...
如何在Android Studio中指定NDK位置?
如何在Android Studio中指定NDK位置? 问题描述 NDK已经手工下载解包在本地: D:\Portable\android-ndk-r13b 每次创建支持C++项目时,都提示NDK没配置, ...
Android studio 中的配置编译错误总结
1.编译Andorid 工程的时候,有时候出现gradle 报下面的错误. Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : U ...
Android Studio中配置及使用OpenCV示例
Android Studio配置及使用OpenCV 前言:最近在做项目移植,项目较大,在Eclipse中配置的Jni及OpenCV环境没任何问题,但是迁移到Studio中就问题一大堆,网上也找了一些资 ...
浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联
看到网上很多关于svn环境配置和关联Android-Studio的很多博文,发现很零散,想集大家所长整理一下: 在AndroidStudio中开发版本控制中,除了Git就是SVN,和Eclipse不同 ...
浅谈Kotlin(一):简介及Android Studio中配置
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
【新手指南】Android Studio中应用App的相关配置
前言: 注意这是一个对于Android开发入门学习者而言的一个教程,因为自己平时很少使用Android进行原生应用的开发,对于使用Android Studio配置Android App应用的一些参数( ...
随机推荐
linux服务器做网关
首先创建两张路由表,只需要添加到相应的文件中即可,Linux一共支持255个路由表,rt_tables文件中默认已经存在了三张路由表,分别是: 255 local 254 main ...
【转】UGUI实现unity摇杆
http://blog.csdn.net/onafioo/article/details/46403801 http://www.winig.cc/archives/348 好久没有写文章了,最近在做 ...
POJ 3096 Surprising Strings(STL map string set vector)
题目:http://poj.org/problem?id=3096 题意:给定一个字符串S,从中找出所有有两个字符组成的子串,每当组成子串的字符之间隔着n字符时,如果没有相同的子串出现,则输出 &qu ...
[Javascript + rxjs] Using the map method with Observable
Like an array, Observable has a map method that allows us to transform a sequence into a new Observa ...
docker 保存更改的镜像:
保存更改的镜像: docker:/root# docker commit -m &quo ...
play1.x vs play2.x 对比(转)
个人看到对比play1.x和play2.x比较的文章中,写的最深入,最清晰的一个.转自:http://freewind.me/blog/20120728/965.html 为了方便群中的Play初学者 ...
微信小程序语音识别服务搭建全过程解析(项目开源在github)
silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...
react初学之render返回加括号的问题
刚在学习react的初始阶段,跑了一段代码 var Mydom = React.createClass({ render:function(){ return
day1--一个简单的登录接口
_usrename = "Yvan"_password = "abc123"count=0while count <3: username = in ...