(本文内容来源:http://www.eoeandroid.com/thread-52127-1-1.html 转载请注明出处!!)
今天我们接着昨天介绍的关于Android NDK入门学习的基本步骤继续介绍:欢迎大家有问题多多沟通交流
第 0 步:下载工具 [Android NDK开发]
好了,现在就开始吧!你需要下载 Android NDK。先来开始下载,因为在下载的过程中你可以检查一下,确保所需要用到的其余工具的版本都正确。
从 Android 网站下载适合你的操作系统的 NDK。
现在,对照下列检查你的工具版本:
1、如果在 Windows 下,Cygwin 1.7 或更高版本
2、将 awk 升级到最新版本(我们使用的是 20070501)
3、GNU Make 3.81 或更高版本(我们使用的是 3.81)
如果其中任何一个的版本太旧,请在继续之前先升级。
第 1 步:安装 NDK
既然 Android NDK 已经下载完成(没错吧?),你就需要解压缩它。解压后将它放入合适的目录中。要把它放在和 Android SDK 相同的目录下。记住你把它放在哪里了。
现在,你也许想要在路径设置中添加 NDK 工具。如果你在 Mac 或 Linux 下,你可以用你的原生路径设置来完成。如果你在 Windows 下的 Cygwin,你就需要设置 Cygwin 的路径设置。
第 2 步:创建项目
创建一个常规的 Android 项目。为了避免日后的问题,你项目的路径必须不包含空格。作者的项目有个叫做“com.mamlambo.sample.ndk1”的包,带有一个叫做“AndroidNDK1SampleActivity”的默认 Activity——你之后还会看到它们。
在这个项目的顶层创建一个叫做“jni”的目录——这是你放置原生代码的地方。如果你很熟悉 JNI,那你就会知道 Android NDK 很大程度上基于 JNI 的概念——它本质上是个只有有限的 C 语言编译头文件的 JNI。
第 3 步:添加一些 C 语言代码
现在,在 jni 文件夹中,创建一个叫做 native.c 的文件。一开始将以下 C 语言代码写入该文件,我们以后再添加另一个函数: [Android开发交流]
- #include
- #include
- #include
- #define DEBUG_TAG "NDK_AndroidNDK1SampleActivity"
- void Java_com_mamlambo_sample_ndk1_AndroidNDK1SampleActivity_helloLog(JNIEnv * env, jobject this, jstring logThis)
- {
- jboolean isCopy;
- const char * szLogThis = (*env)->GetStringUTFChars(env, logThis, &isCopy);
- __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", szLogThis);
- (*env)->ReleaseStringUTFChars(env, logThis, szLogThis);
- }
这个函数实际上非常浅显。它获取一个 Java 对象的字符串参数,将它转换为 C-string,然后将它写入到 LogCat 中。 [eoeAndroid开发交流]
不过该函数的名字很重要。它遵循了以“Java”的特定字样开头,后面跟着包名称,然后类名称,然后方法名称,和 Java 中定义的一样。每一部分都由一根下划线隔开,而不是点。
该函数的头两个参数也很重要。第一个参数是 JNI 环境,它与 helper 函数会被频繁调用。第二个参数是该函数所属的Java 对象。
第 4 步:从 Java 中调用原生代码
既然你已经写好了原生代码,让我们回头看看 Java 这边。在默认的 Activity 中,按照你的喜好创建一个按钮,并添加一个按钮处理器。从按钮处理器中,对 helloLog 作调用:
- helloLog("This will log to LogCat via the native call.");
然后你必须在 Java 这边添加函数声明。在你的 Activity 类中添加如下声明:
- private native void helloLog(String logThis);
它告诉编译和链接系统该方法将在原生代码中实现。
最后,你需要加载原生代码最终编译到的库。在 Activity 类中添加如下的静态初始化程序来根据名称加载库(库的名字随你决定,在下一步还会用到):
- static {
- System.loadLibrary("ndk1");
- }
第 5 步:添加原生代码的 Make 文件
在 jni 文件夹中,现在你需要添加在编译中要用到的 makefile。该文件必须以“Android.mk”命名,如果你之前命名的文件为 native.c,库为 ndk1,那么 Android.mk 的内容就应该是这样:
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_LDLIBS := -llog
- LOCAL_MODULE := ndk1
- LOCAL_SRC_FILES := native.c
- include $(BUILD_SHARED_LIBRARY)
(更多Android开发交流访问:http://www.eoeandroid.com/forum.php)
相关推荐
学习Android_NDK入门很简单学习Android_NDK入门很简单学习Android_NDK入门很简单学习Android_NDK入门很简单
Android NDK入门
Android NDK开发的环境配置以及例子说明开发过程
android ndk 开发入门。看代码学习android ndk是怎么回事!希望对大家有用!
该资源包含了一个AndroidNDK入门项目实战,包括代码和注释,简单易懂!
Android NDK编程入门笔记 开发环境的搭建
androidNDK编程入门.pdf
androidndk入门.pdf
入门的NDK学习文档,很适合刚学android的同学
超强NDK入门项目实战 你只知道 用java编 android吗 试试 c语言的吧 android 游戏必学
此资源为“ANDROID NDK 开发入门步骤示范”文章的附件
Android NDK 开发教程 二 概述
Android NDK 安装以及 HelloWorld!测试
Android NDK入门 实例 详解
android jni NDK 经典入门
详细讲述了win下配置开发 Android NDK 程序过程
android NDK基本操作步骤说明 NDK入门教程。
这个虽然只是个简单的jnidemo、但是涵盖了Android.mk 和Application.mk 的原理 重点是Android NDK编译的理解 mac 系统下 切换到jni目录,然后呢个 ndk-build
androidNDK编程入门[定义].pdf