文档章节

Android Studio NDK项目中的编译配置

C
 Chendj
发布于 2017/02/10 15:46
字数 633
阅读 157
收藏 1

如果要入门Android NDK的开发,那么就要好好的学习如何的配置底层代码的编译环境了。

1,首先肯定是要有NDK的包,去http://developers.google.cn谷歌的中国官方网站上面去下。

2,到Android Studio 中新建项目,特别注意,一开始新建项目的地方有个勾选框,提示是否要添加c++支持,这里不需要勾选。

3,新项目创建好之后,要点击查看SDK Location的下方,有个Android NDK location 将这里的路径设置成之前的NDK包解压的路径。

4,这里开始进行关键步骤的设置。首先在新建项目的src/main目录中添加jni目录,这个目录的新建要特别注意,不要自己手动的添加。鼠标右击main目录,如下图

然后在main项目目录中就会添加一个jni的目录,在这个目录里,添加c/c++文件。

5,最重要的一步,添加Android.mk和Application.mk的项目编译配置文件。

这两个文件网络上很多相关的介绍说明,这里不多说,将这两个文件自己新建并添加到jni目录中去,ndk-build 命令开始编译的时候会读取这两个配置文件。

6,在配置好上述第五点的两个编译配置文件后,到项目jni项目的build.gradle文件中,修改一下。如图:

上面的sourceSet中的设置,主要是为了设定jni文件编译后生成的动态库so文件存放的位置。

还有下方的externalNativeBuild的设置,需要指定Android.mk文件的具体位置。完成上面的步骤之后。

7,使用Android studio 中的Terminal命令行进入到jni目录下,然后ndk-build命令输入,回车。编译好的so动态库文件,就在libs目录中躺好了,等你使用。嘿嘿嘿。

 

8,在引用jni动态库的项目中,如何引入编写好的动态库文件?首先把之前生成好的SO动态库文件的所有目录,如图:

把这些文件夹全部拷贝到使用库的新建项目中的libs文件夹中。如图:

在使用库的新建项目的build.gradle文件中添加:

sourceSets.main.jniLibs.srcDirs = ['libs']

 如图:

这样,新建的项目就能正常的使用之前写好的底层库了。

 

 

© 著作权归作者所有

共有 人打赏支持
C
粉丝 7
博文 24
码字总数 7791
作品 0
福州
Android工程师
最新靠谱可用的 Mac 环境下 FFmpeg 环境搭建

大家好,我是光源。 最近在尝试搭建 FFmpeg 开发环境时遇到一个蛋疼的事,Google 了 N 篇文章竟然没有一篇是可以跑起来的! 少部分教程是给出了自我矛盾的配置(是的,按照贴出来的代码和配置...

光源_Android
05/13
0
0
[Android] 环境配置之Android Studio开发NDK

======================================================== 作者:qiujuer 博客:my.oschina.net/u/1377710 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://my.osc......

Qiujuer
2014/12/21
0
8
在android studio中集成javah, ndk-build进行JNI开发

最近在搞一个android上控制LED灯闪烁的功能,用到了串口编程,搜索了一下,发现Google发布了一个demo,android-serialport-api。有现成的代码和APK,要想自己改JNI也比较简单,就一个C文件。...

LeoLiang
08/04
0
0
Android JNI学习(二)——实战JNI之“hello world”

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法...

隔壁老李头
05/09
0
0
Android Studio 使用NDK开发

Android Studio 使用NDK编程 使用Android Studio有半年多了,感觉很好用,不就感觉费劲的就是NDK的支持一直不是很好,再Bate版的时候好像0.4.x之前可以使用NDK,当然本身Android Studio本身是...

HaidyCao
2014/12/21
0
17

没有更多内容

加载失败,请刷新页面

加载更多

docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
22分钟前
1
0
SQL_Server2000示例数据库NorthWind的分析(转)

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称 数据类型 长度 允许为空 CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ...

QQZZFT
25分钟前
1
0
laravel 5.5 Session store not set on request.

laravel 5.5 数据存入session,会出现Session store not set on request.错误。查了下laravel 5.5将session放到global middleware中,需要laravel的文件 ./app/Http/Kernel.php中的加上一句:...

MichaelShu
今天
1
0
OpenCV VideoCapture.get()参数详解

param define cv2.VideoCapture.get(0) 视频文件的当前位置(播放)以毫秒为单位 cv2.VideoCapture.get(1) 基于以0开始的被捕获或解码的帧索引 cv2.VideoCapture.get(2) 视频文件的相对位置(...

NateHuang
今天
0
0
java基础知识,小栗子

来操作一下数组.....注意带参数的变长数组的使用. package com.avatus;import java.util.Random;import java.util.Scanner;public class Main { public static void main(St...

Oh_really
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部