AndroidStudio NDK入门小结(1)

在Android Studio进行NDK开发,有两种方式:

1 使用已经编译好的.so动态库;

2 使用c/c++源代码开发。

1.1 使用预编译好的.so动态库

用ndk-build工具先编译好.so,然后在Android Studio中引用。

.so存放的路径:

【module name】\src\main\jnilibs\armeabi

如果不想把.so放在上面默认路径,可以在buid.gradle中进行如下配置:

android {

// .. android settings ..

sourceSets.main {

jniLibs.srcDir ‘‘ // <-- 你的.so库的实际路径

}

}

}

1.2 编译C/C++源代码

1.2.1 需要配置NDK的路径;

打开module设置中,设置NDK的路径。

也可以在文件中local.properties中直接设置:

ndk.dir=E:\jni\android-ndk-r10

1.2.2 Gradle配置NDK模块

Build.gradle中配置:

android {
    defaultConfig {
        ndk{
            moduleName "two"            //生成的so名字
            ldLibs "log", "z", "m"  //添加依赖库文件,因为有log打印等
            abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定abi体系结构下的so库
        }
    }
}

当然可以配置更多选项,如下:

ndk {

moduleName “myEpicGameCode”

// Define some macros

cFlags “-DANDROID_NDK -D_DEBUG DNULL=0”

// Link with these libraries

ldLibs “EGL”, “GLESv3”, “dl”, “log”

// Use shared stlport library

stl “stlport_shared” }

}

1.2.3 添加C/C++源代码

默认情况下,你需要把C/C++源代码放在[module]/src/main/jni/路径下。

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

Build.gradle中配置:

android {

// .. android settings ..

productFlavors {

x86 {

ndk {

abiFilter “x86”

}

}

arm {

ndk {

abiFilter “armeabi-v7a”

}

}

mips {

ndk {

abiFilter “mips”

}

}

}

} // android

1.2.5 错误汇总

报错1:

make.exe: * No rule to make target

解决方案;

在Windows下NDK一个bug,当仅仅编译一个文件时出现会出现此问题,解决方法就是再往jni文件夹加入一个空util.c文件即可

参考:http://blog.csdn.net/sodino/article/details/41946607

报错2:

java.lang.UnsatisfiedLinkError: Couldn’t load from loader dalvik.system.PathClassLoader

解决方案;

在libs文件夹下,新建armeabi-v7a,然后将armeabi下的那些.so文件拷贝过去就行了

参考:http://www.cnblogs.com/freexiaoyu/p/4046431.html

其他方案:http://blog.csdn.net/hj563308597/article/details/50395469(没有验证)

源码:https://github.com/alifeidao/TestNdK

时间: 2024-11-05 21:00:05

AndroidStudio NDK入门小结(1)的相关文章

jni ndk 入门

1. Linux环境模拟,下载sygwin 安装,选择devl 和shell -> install sygwin 中的配置ndk环境,进入安装目录c:/cygwin64 etc/profile文件配置ndk的环境 //37行 PATH="/usr/local/bin:/usr/bin:/cygdrive/d/android-ndk-r9d-windows-x86_64/android-ndk-r9d${PATH:+:${PATH}}" 2. 下载ndk 3. 开发,参考于ndk/

线段树入门小结

QUE:线段树? 称谓: 从刘汝佳的书中得知,"这种数据结构在学术界没有统一的术语,但线段树是最常见的叫法.其他叫法包括区间树(interval tree).范围树(range tree)等,但这些属于在特定的场合(如计算几何)中有着特殊的意义".怎么叫看读者的心情,以下统一用线段树称呼. 先来作一些了解: 线段树是一棵二叉树,它的左右儿子也都是一棵线段树.(定义) 线段树也叫区间树,为什么叫它区间树呢?因为线段树是一种基于区间的数据结构. 线段树的每个节点代表一个区间 [L,R],其

AndroidStudio快速入门四:打造你的开发工具,settings必备

http://blog.csdn.net/jf_1994/article/details/50085825 前言:这里是使用AS的基本设置,适合新入手的朋友阅读,将这里介绍的设置完基本使用无忧啦. 1.setting介绍 点击菜单栏:File | settings 快捷方式:ctrl+art+s 注意:我们可以在基本设置头部的搜索框直接输入你要设置的关键字直接进入 2.设置主题样式.字体大小 File | settings |Appearance&Behavior|Appearance 如上图中

【译】NDK入门

翻译自官网Getting Started with the NDK NDK入门 文档包含以下内容 下载NDK以及工具 创建或导入一个本地项目 本地开发包(NDK)是一个可以在安卓开发中使用C和C++代码的一个工具集合,你可以使用它提供的 平台库 来管理本地操作和访问物理设备组件,例如传感器和触摸输入.NDK不适合大多数新手Android程序员,他们只需要使用java代码和Framework API来开发app.然后,如果你的情况适合一下原因,NDK将会变的非常有用. 设备发挥最大性能,以实现低延

NDK 入门实例

参考了百度经验里面的部分内容,发现里面还有些细节没有写出来,其中遇到不少问题,所以就在这里写出来和大家分享! 参考链接   Android NDK入门开发实例 1.先下载  android-ndk32-r10b-windows-x86 我是32位的机子,将其放在一个没有空格的路径中,因为之后在配置cygwin的时候要求路径不能有空格. 2.在cygwin官网上下载  cygwin   安装  ,这个网上有教程,注意不要少了make (我在网上看到的一篇教程里面就是少了make) 安装完后进行测试

mybatis入门小结(六)

入门小结---查询 1.1.1.1.1 #{}和${} #{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入. #{}可以接收简单类型值或pojo属性值. 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称. ${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型

Tomcat和Servlet入门小结

Tomcat和Servlet入门小结 Tomcat入门 启动: 进入bin目录,双击startup.bat,运行该文件 访问浏览器,输入:http://localhost:8080 访问自己: ? 输入:http://别人的ip:8080 访问别人(8080为Tomcat的端口号) 启动时可能遇到的问题: 黑窗口一闪而过: *原因:没有正确配置JAVA_HOME变量: 启动报错: *暴力解决:在cmd中输入netstat -ano找到占用端口号的对应进程并杀死 *在Tomcat的config\s

Android NDK 入门之开发环境搭建

既然是要开始学习NDK,那么我们首先来了解一下NDK.Android NDK是Android 软件开发包(SDK)的相关工具集,用来扩展Android SDK的功能,从而使开发人员能够使用机器代码生成的编程语言实现一些对代码性能要求较高的模块并将这些模块嵌入到Android应用程序中.Android NDK不是一个单独的工具:它是一个包含API.交叉编译器.链接程序.调试器.构建工具.文档和示例应用程序的综合工具集. 下面咱们一起来看一下Android NDK的开发环境搭建: 准备工作: (1)

docker入门小结

入职需要学习docker,记录学习随笔.争取两天大致看完docker学习.博客也算是迁移到cnblogs. 学习的链接参考<docker从入门到实践>http://dockerpool.com/static/books/docker_practice/index.html 源码参考https://github.com/tingfengainiaini/docker_practice,已经fork到我自己的github 另外参考许小圣博客http://www.cnblogs.com/openxx