NDK实战
文章平均质量分 53
从入门到精通,NDK开发大揭秘
_江南一点雨
Java攻城狮
展开
-
NDK开发之Application.mk文件详解
做过NDK开发的同学应该都知道有个Application.mk文件,这是android NDK构建系统使用的一个可选构建文件。它的目的是描述应用程序需要哪些模块,也定义了所有模块的一些通用变量。主要有以下几个变量。APP_MODULES,默认情况下,ndk会构建在android.xk文件中声明的所有模块。但是这个变量可是覆盖上述行为。 假如我们的android.mk文件是这样的:LOCAL_PAT原创 2015-09-03 13:32:18 · 5175 阅读 · 1 评论 -
NDK开发之ndk-build命令详解
毫无疑问,通过执行ndk-build脚本启动android ndk构建系统。 默认情况下,ndk-build脚本在工程的主目录中执行,如: 我们可以用使用-C参数改变上述行为,-C指定工程的目录,这样我们就可以在任何目录执行ndk-build脚本了。 如果源文件没有被修改,那么android ndk构建系统不会重新构建目标,这时我们可以使用参数-B来强制重新构建所有源代码。 如果想要清理生成原创 2015-09-03 19:46:58 · 21460 阅读 · 1 评论 -
NDK开发之JNIEnv参数详解
即使我们Java层的函数没有参数,原生方法还是自带了两个参数,其中第一个参数就是JNIEnv。 如下:native方法: public native String stringFromC(); public native String stringFromCpp();原生方法:jstring Java_com_example_jni_MainActivity_s原创 2015-09-04 13:07:06 · 5198 阅读 · 0 评论 -
NDK开发之字符串操作
在JNI中,Java字符串被当作一个引用来处理。这些引用类型并不像原生C字符串一样可以直接使用,JNI提供了Java字符串与C字符串之间转换的必要函数,因为Java字符串对象是不可变的(如果对这里有异议,请复习Java SE),因此JNI不提供任何修改现有的Java字符串内容的函数。JNI支持两种编码格式的字符串,分别是Unicode和UTF-8。好了,废话说完了,下面按部就班来。一、创建字符串我们原创 2015-09-04 15:13:01 · 3127 阅读 · 0 评论 -
NDK开发之数组操作
JNI把Java数组当作引用类型来处理,JNI提供了必要的函数来访问和处理Java数组。下面一个一个来看。1.创建数组 我们可以使用NewArray函数在原生代码中创建数组实例,其中可以是Int、Char、和Boolean等,例如NewIntArray,使用这些函数时应该以参数的形式给出数组的大小。看下面一段代码:先定义一个jintArray数组,然后定义一个jint数组,将jint数组的内容提交原创 2015-09-04 21:02:23 · 4476 阅读 · 1 评论 -
NDK开发之日志打印
要在NDK中打印日志,只需要以下三步:一、在Android.mk中添加以下内容:LOCAL_LDLIBS := -lm -llog注意,这行代码要添加在include $(CLEAR_VARS)之后,否则没有效果。二、引用头文件#include <android/log.h>三、定义变量//定义TAG之后,我们可以在LogCat通过TAG过滤出NDK打印的日志#define TAG "JNITES原创 2015-09-05 10:24:29 · 11398 阅读 · 0 评论 -
NDK开发之访问域
Java有两类域,实例域和静态域。类的每个实例都有自己的实例域副本,而一个类的所有实例共享一个静态域(Java SE基础)。JNI提供了相应的函数来访问这两类域,总体步骤是这样的:1.通过对象引用获得类 2.通过类获得域ID 3.通过域ID获取域下面我们按步骤一步一步来: 我们的Java类中有两个域,一个静态域,一个实例域: private static String staticFil原创 2015-09-05 12:14:47 · 3015 阅读 · 0 评论 -
NDK开发之调用方法
与NDK开发之访问域中介绍的一样,Java中的方法也是分为两类:实例方法和静态方法。JNI提供了访问两类方法的函数,下面我们一起来看看怎么在C中访问Java中的方法。 我们的MainActivity中有两个方法,分别是: private String instanceMethod(){ return "Instance Method"; } private s原创 2015-09-05 13:50:08 · 3190 阅读 · 0 评论 -
NDK开发之获得域和方法描述符
在NDK开发之调用方法和NDK开发之访问域两篇博客中,我们在获得域ID和方法ID时都需要一个叫做描述符的参数,那么在实际开发中我们怎么知道我们要调用的域或者方法的描述符呢?一个简单的方法就是使用Java提供的javap命令JDK提供的命令行方式下的Java类文件反汇编程序称为javap,该工具可以从编译的文件中解压缩域和方法的描述符。使用方法: 在cmd命令行,首先进入到当前工程的主目录:java原创 2015-09-05 14:17:49 · 2743 阅读 · 0 评论