文档章节

Android Studio NDK项目中的编译配置

C
 Chendj
发布于 2017/02/10 15:46
字数 633
阅读 121
收藏 1
点赞 0
评论 0

如果要入门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
博文 23
码字总数 7791
作品 0
福州
Android工程师
最新靠谱可用的 Mac 环境下 FFmpeg 环境搭建

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

光源_Android ⋅ 05/13 ⋅ 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

Cocos2d-x 2.2.3 使用NDK配置编译环境

https://blog.csdn.net/wwj_748/article/details/30072379 2014年6月11日 Cocos2d-x 3.0以下的开发环境的配置恐怕折磨了很多人,使用cygwin配置编译环境足够让初学者蛋疼一阵子了。本篇博客就...

tropicofcancer9 ⋅ 04/19 ⋅ 0

使用 Ubuntu 编译哔哩哔哩开源播放器最新 ijkplayer 0.8.8 源码

0x0000 安装 Ubuntu 我用的是 Oracle VM VirtualBox 虚拟机来安装 Ubuntu 64位,不会对已安装的系统造成什么影响。在新建的虚拟机时配置内存要选用大一点的,第一次我安装全是默认项,卡的要...

克里迪亚 ⋅ 05/23 ⋅ 0

ffmpeg使用NDK编译时遇到的一些坑

跟着网络上的教程一步一步的走,编写编译脚本,然而总是出现错误,这里记录一下 一、提示头文件未找到 编译时报错: In file included from libavfilter/aeval.c:26:0:./libavutil/avassert....

luo0xue ⋅ 04/23 ⋅ 0

用Android Studio进行NDK编程入门实例

参考了网上各种教程,跌跌撞撞最终才把流程走通,特此记录一下: 有必要先交代下开发环境: 操作系统:Win7 Android Studio 3.0.1 gradle 3.0.1 首先,新建一个Android项目,然后在MainActiv...

analogous_love ⋅ 04/17 ⋅ 0

解决JNI在Windows环境下因长路径导致编译失败问题

之前听一个朋友反馈LuaScriptoCore在Windows下编译会报错,今天特意跑到Windows环境下测试了一番,果然是存在问题。得到了下面的编译报错信息: Build command failed. Error while executin...

杰嗒嗒的阿杰 ⋅ 05/04 ⋅ 0

使用Android Studio编译cocos2dx的测试用例

最近笔者在学习如何为游戏引擎添加Android平台的支持。首先从已有的游戏引擎开始研究,将引擎中的示例用Android Studio打包成apk文件。笔者选用了目前风头正紧的cocos2dx,版本是最新的3.16,...

闪电的蓝熊猫 ⋅ 04/06 ⋅ 0

【Mac】Caffe-android-lib 编译so文件记录

【Mac】Caffe-android-lib 编译so文件记录 1、下载Caffe-android-lib github地址是:https://github.com/lichong951/caffe-android-lib 2、下载编译环境:NDK android-ndk-r11c-darwin-x8664......

lichong951 ⋅ 05/17 ⋅ 0

Android NDK开发的一点尝试

写在前面 笔者是一个“原始”的C++开发者,对Java编程虽说不上抵触但也没有C++那么顺手。而且,作为一个游戏引擎,不管是在什么地方,效率总是第一位的,尤其是在移动平台这样资源吃紧的环境...

闪电的蓝熊猫 ⋅ 04/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 29分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 49分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 54分钟前 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

文件压缩和打包zip、tar

第六章 文件压缩和打包 6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意:...

弓正 ⋅ 今天 ⋅ 0

vuex

一、状态对象如何赋值给内部对象。三种方式: 1、使用computed赋值,一定要写this,不然找不到$store。 computed:{ count(){ return this.$store.state.count; }} 2、通...

大美琴 ⋅ 今天 ⋅ 0

javaScript 设计模式

1、构造函数模式 ` /** 构造一个动物的函数 */ function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; } } // 实例一个对象 ......

fangPeng_ ⋅ 今天 ⋅ 0

日常嘚瑟:TeamCity构建中解压和打包tar

要弄一个新的构建,很简单,从两个构建的tar格式Artifact中分别取一部分,重新打一个tar。 所以,我去写个脚本用curl下载两个依赖的Artifact,然后解压移动重新打个tar? 开什么玩笑,我的技...

谷永权 ⋅ 今天 ⋅ 0

Istio官方文档中文版

阅读目录 Istio官方文档中文版 回到目录 Istio官方文档中文版 http://istio.doczh.cn/ https://istio.io/docs/concepts/what-is-istio/goals.html 为什么要使用Istio? 在从单体应用程序向分...

xiaomin0322 ⋅ 今天 ⋅ 0

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

系统环境 操作系统:CentOS 7GitLab:gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el......

admin_qing ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部