004androidStudio ndk开发环境

android studio中编译C/C++源代码

1. 配置ndk.dir

在 local.properties 添加如下配置:

sdk.dir=path_of_android-sdk
ndk.dir=path_of_android-ndk

android studio中有对ndk环境的设置:

【File】->[Project Struct]->Android NDK Location

在如上位置设置ndk的安装位置。

2.Gradle配置NDK模块

参考如下:

android {

compileSdkVersion 23

buildToolsVersion "23.0.1"

    defaultConfig {
applicationId "com.frank.smart.smarthome"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk {
moduleName "SmartSocket"
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}

ndk还可以配置更多选项,如下:

ndk {
moduleName "myEpicGameCode"
cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" // Define some macros
ldLibs "EGL", "GLESv3", "dl", "log" // Link with these libraries!
stl "stlport_shared" // Use shared stlport library
}

3.添加C/C++源代码

默认情况下,你需要把C/C++源代码放在 [module]/src/main/jni/ 路径下。效果如下图所示:

当然,你也可以自定义源代码路径:

android {

  // .. android settings ..

  sourceSets.main {
jni.srcDirs 'src/main/source'
}
}

4.分平台配置编译(可选)

这一步不是必须的,你可以根据需要,对各个平台进行不同的编译配置,可以设置覆盖前面的编译选项(例如 cFlags )。例如你只想编译指定平台的.so,而不是所有的平台。如下:

android {
// .. android settings ..
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
}
arm {
ndk {
abiFilter "armeabi-v7a"
}
}
mips {
ndk {
abiFilter "mips"
}
}
}
} // android

5. 一个编译错误的解决

android studio 根据Gradle配置自动生成Android.mk 位于app\build\intermediates\ndk\debug下

如果只有c/cpp文件,直接这样编译的话,会报错,这应该是android studio 在这种情况自动生成Android.mk 时的一个bug,见编译错误。

Error:Execution failed for task ':nativeactivity:compileDebugNdk'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\android-ndk-r10\ndk-build.cmd'' finished with non-zero exit value 2

解决方法:

   在jni文件下建一个空的empty.c文件 编译运行即可

如果还运行不了,在当前model的build.gradle下添加

android{

   …………
sourceSets.main {
jni.srcDirs = []
}
}

参考链接

  1. Android Studio中NDK开发
  2. NDK错误 org.gradle.process.internal.ExecException: Process 'command with non-zero exit value 2

004androidStudio ndk开发环境的更多相关文章

  1. android NDK开发环境搭建

    android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...

  2. Android SDK +Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建

    Android SDK+Eclipse+ADT+CDT+NDK 开发环境在windows 7下的搭建 这几天一直在研究 Android SDK  C/C++平台的搭建,尽管以前有成功在Windows ...

  3. android 串口开发第一篇:搭建ndk开发环境以及第一个jni调用程序

    一:ndk环境搭建 1:开发环境 我使用的是android studio 2.3.3版本,搭建ndk开发环境比较简单,打开File----Settings----Appearance&Beha ...

  4. Android下NDK开发环境搭建

    Android下NDK开发环境搭建 1.     AndroidNDK安装与配置 1.1  NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...

  5. android Jni NDK开发环境搭建及其简单实例的编写

    android  Jni  NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...

  6. Windows下搭建Android NDK开发环境及命令行编译

    首先说明本文内的相关安装操作参考<Pro Android C++ with the NDK>一书. 安装 Windows搭建Android NDK开发环境需要安装如下部分(同时需要配置对应 ...

  7. Eclipse下Android的NDK开发环境配置

    编辑2016年7月26日——增加了下载网址,修改了一些错误. 摸索了一周,走了很多弯路,磕磕绊绊,总算是弄好了NDK的开发环境,在这里总结一下吧. 一.Android NDK开发环境 首先下载安装JR ...

  8. Android JNI和NDK学习(01)--搭建NDK开发环境(转)

    本文转自:http://www.cnblogs.com/skywang12345/archive/2013/05/23/3095013.html 本文主要介绍“JNI”.“Android NDK”以及 ...

  9. Android Studio 2.2 NDK开发环境搭建

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52763192 本文出自: [HansChen的博客] Android应用程序使用ND ...

随机推荐

  1. kubernetes环境下私有仓库搭建

    前期在客户那里搭建了基本运行环境,鉴于很多企业的环境都是内部网无法连接外部,因此搭建私有仓库是逃避不开的问题,按照网上的步骤搭建,虽然遇到一些问题,但还好都算容易解决了,下面大致把步骤记录一下便于下次 ...

  2. Coherence的集群成员的离开和加入机制研究

    最近在客户那里环境中coherence集群不稳定,所以找出一些文档,需要搞清楚Coherence内部的一些机制 1.集群成员的离开 关于状态的检测,官方的说法是: Death detection is ...

  3. Yii2 使用十二 配合ajaxFileUpload 上传文件

    1.js $("input#upload").change(function () { $.ajaxFileUpload({ url: '/members/web-members- ...

  4. 如何让Firefox清除它记下的网站登录名和密码

  5. Tomcat:IOException while loading persisted sessions: java.io.EOFException 解决

    转自:http://www.blogjava.net/apple0668/archive/2007/10/12/152383.html Tomcat启动时如下错误: 严重: IOException w ...

  6. 经验总结54--搭建linux虚拟机环境

    好久没写博客了.写一篇环境搭建吧. 自己做java,有时会接触linux环境,自己能够搭建一个,方便自己做实验和学习. 1.下载VM11. 下载并依照VM:http://rj.baidu.com/so ...

  7. 【DB2】经典SQL写法

    1.环境准备 CREATE TABLE DataInfo( ID_1 ), ID_2 ) ) INSERT INTO DataInfo VALUES('A','Oracle'); INSERT INT ...

  8. linux crontab执行python脚本问题

    在工作中我们经常会写一个python脚本,然后想通过定时任务去执行,这时我们会想到crontab. 通过 crontab -e去设置crontab 例如:0     0       *       * ...

  9. Swift 泛型參数

    原文:http://www.cocoachina.com/newbie/basic/2014/0612/8802.html 本页内容包含:泛型形參语句和泛型实參语句 本节涉及泛型类型.泛型函数以及泛型 ...

  10. (二)Linux——Linux常用指令

    1. 文件目录操作命令 ls 显示文件和目录列表     -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 ...