文档章节

Android Studio NDK项目中的编译配置

C
 Chendj
发布于 2017/02/10 15:46
字数 633
阅读 193
收藏 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
粉丝 8
博文 24
码字总数 7791
作品 0
福州
Android工程师
私信 提问
最新靠谱可用的 Mac 环境下 FFmpeg 环境搭建

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

光源_Android
2018/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
2018/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的常用方法...

隔壁老李头
2018/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

没有更多内容

加载失败,请刷新页面

加载更多

金丝雀发布、滚动发布、蓝绿发布到底有什么差别?关键点是什么?

根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术...

问题终结者
33分钟前
2
0
Kubernetes Client-go Informer 源码分析

几乎所有的Controller manager 和CRD Controller 都会使用Client-go 的Informer 函数,这样通过Watch 或者Get List 可以获取对应的Object,下面我们从源码分析角度来看一下Client go Informe...

阿里云官方博客
今天
3
0
传统IDC部署网站(三)

11. 重置密码 密钥和密码都支持远程登陆, 二选一 两个都可以登陆, 密钥相对于密码来说,相对安全一点 本地登陆无法是用密钥 修改密码 root 用户 passwd root 修改普通用户 passwd usernam...

miko0089
今天
6
0
bash特性

1.支持别名 alias 2.命令替换 $(COMMANS) 或者 `COMMAND` 3. bash支持的引号: `` :命令替换 "":弱引用,可以实现变量替换 '':强引用,不实现变量替换 4.文件名通配 globbing:(man 7 glo...

忙碌的小蜜蜂
今天
3
0
以语音评测的PC端demo代码为例,讲解口语评测如何实现

本文由云+社区发表 作者:腾讯智慧教育 概述 腾讯云智聆口语评测(英文版)(Smart Oral Evaluation-English,SOE-E)是腾讯云推出的语音评测产品,是基于英语口语类教育培训场景和腾讯云的语...

腾讯云加社区
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部