`

跟着做 Android NDK学习入门如此简单(二)

阅读更多

      (本文内容来源: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开发交流]

  1. #include
  2. #include
  3. #include
  4. #define DEBUG_TAG "NDK_AndroidNDK1SampleActivity"
  5. void Java_com_mamlambo_sample_ndk1_AndroidNDK1SampleActivity_helloLog(JNIEnv * env, jobject this, jstring logThis)
  6. {
  7. jboolean isCopy;
  8. const char * szLogThis = (*env)->GetStringUTFChars(env, logThis, &isCopy);
  9. __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", szLogThis);
  10. (*env)->ReleaseStringUTFChars(env, logThis, szLogThis);
  11. }

      这个函数实际上非常浅显。它获取一个 Java 对象的字符串参数,将它转换为 C-string,然后将它写入到 LogCat 中。  [eoeAndroid开发交流]

        不过该函数的名字很重要。它遵循了以“Java”的特定字样开头,后面跟着包名称,然后类名称,然后方法名称,和 Java 中定义的一样。每一部分都由一根下划线隔开,而不是点。

        该函数的头两个参数也很重要。第一个参数是 JNI 环境,它与 helper 函数会被频繁调用。第二个参数是该函数所属的Java 对象。

第 4 步:从 Java 中调用原生代码

        既然你已经写好了原生代码,让我们回头看看 Java 这边。在默认的 Activity 中,按照你的喜好创建一个按钮,并添加一个按钮处理器。从按钮处理器中,对 helloLog 作调用:

  1. helloLog("This will log to LogCat via the native call.");

       然后你必须在 Java 这边添加函数声明。在你的 Activity 类中添加如下声明:

  1. private native void helloLog(String logThis);
复制代码

      它告诉编译和链接系统该方法将在原生代码中实现。

      最后,你需要加载原生代码最终编译到的库。在 Activity 类中添加如下的静态初始化程序来根据名称加载库(库的名字随你决定,在下一步还会用到):

  1. static {
  2. System.loadLibrary("ndk1");
  3. }
复制代码

第 5 步:添加原生代码的 Make 文件
        
       在 jni 文件夹中,现在你需要添加在编译中要用到的 makefile。该文件必须以“Android.mk”命名,如果你之前命名的文件为 native.c,库为 ndk1,那么 Android.mk 的内容就应该是这样:

  1. LOCAL_PATH := $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_LDLIBS := -llog
  4. LOCAL_MODULE := ndk1
  5. LOCAL_SRC_FILES := native.c
  6. include $(BUILD_SHARED_LIBRARY)

    (更多Android开发交流访问:http://www.eoeandroid.com/forum.php

分享到:
评论

相关推荐

    androidndk入门.pdf

    "Android NDK 入门指南" Android NDK (Native Development Kit) 是 Android 平台中的一款工具集,允许开发者使用 C 语言和 C++ 语言编写原生代码,并将其集成到 Java 应用程序中。通过使用 NDK,开发者可以充分利用...

    Android NDK 开发入门例子

    **Android NDK 开发入门详解** Android NDK(Native Development Kit)是Google提供的一款用于在Android平台上进行原生代码开发的工具集。它允许开发者使用C++和其他本地语言编写部分应用,以实现高性能计算或者...

    AndroidNDK入门项目实战

    **Android NDK 入门项目实战** Android NDK(Native Development Kit)是Google提供的一套工具,允许开发者在Android应用中使用C/C++代码。它为Android应用开发提供了原生代码的支持,使得开发者可以利用高性能的...

    学习Android_NDK入门很简单

    《学习Android NDK入门很简单》这篇教程主要针对想要掌握Android NDK开发的初学者,旨在指导如何入门并开始使用NDK。NDK是Android开发中的一个重要工具,它允许开发者使用C/C++原生代码来编写部分应用,尤其适用于...

    Android NDK入门

    Android NDK是Android Native Development Kit的缩写,它是一组工具,允许开发者使用C和C++等原生代码来编写部分Android...学习并掌握NDK,意味着你将能够更好地驾驭Android应用的底层技术,提升开发的灵活性和效率。

    Android NDK编程入门笔记

    ### Android NDK编程入门知识点详解 #### 一、Android NDK简介及应用场景 **知识点1:** **Android NDK(Native Development Kit)**是Google提供的一套工具集,允许开发者使用C或C++语言为Android平台开发原生...

    android NDK 入门项目 实战 详细文档

    Android NDK(Native Development Kit)是...通过这个项目实战,你可以从实践中学习到NDK的各个方面,不仅理解原理,还能掌握实际操作技巧,这对于成为一名全面的Android开发者,特别是对于游戏开发,是极其有价值的。

    Android NDK环境配置

    Android NDK环境配置是Android应用开发中的一个重要环节,它允许开发者使用C或C++编写高性能的原生代码,这些代码可以被编译成动态库并与Java应用一同打包成APK。NDK集成了交叉编译器,使得开发者能够针对不同的CPU...

    android-ndk(android-ndk-r23b-linux.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++库开发工具集。这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android...

    android NDK 开发入门

    在Android应用开发中,NDK主要应用于需要高性能计算的游戏引擎、音视频处理、机器学习库等场景。下面我们将深入探讨Android NDK开发的基础知识。 1. **NDK的引入** Android系统通常使用Java或Kotlin作为主要编程...

    android-ndk(android-ndk-r25b-windows.zip)

    1. **编译工具链**:NDK包含了一套针对不同架构(如armeabi-v7a, arm64-v8a, x86, x86_64等)的编译工具,可以将C/C++源代码编译为适合Android设备的二进制库。 2. **预编译库**:NDK包含了一些预编译的库,如...

    androidndk开发实战

    最后,“Android NDK入门进阶文档”是一个综合性的学习资料,可能包含了NDK的基本概念,如本地模块创建,CMake或ndk-build的使用,以及更高级的主题,如多线程编程、内存管理、性能优化等。这部分内容对于初学者和有...

    Android NDK 开发教程二

    #### 二、Android NDK 基础概念 ##### 2.1 Android NDK 介绍 Android NDK 是一套工具集合,它可以让开发者在 Android 平台上使用 C 和 C++ 编写应用程序。这些原生代码可以通过 Java Native Interface (JNI) 与 ...

    android-ndk(android-ndk-r23b-windows.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C/C++开发工具集。这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用...

    Android_ NDK编程入门笔记

    #### 二、Android NDK入门学习过程 ##### 1. 开发环境的搭建 - **Linux环境**:由于需要生成能在ARM架构设备上运行的.so动态链接库文件,这通常需要通过交叉编译来实现,而交叉编译器通常在Linux环境下更为成熟...

    Android NDK开发轻松入门.pdf

    ### Android NDK 开发轻松入门知识点详解 #### 一、Android NDK 概述 **Android NDK**(Native Development Kit)是 Android SDK 的一个重要组成部分,它为开发者提供了使用 C 或 C++ 编写应用程序的功能,使...

    android-ndk(android-ndk-r25b-linux.zip)

    Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++库开发工具集。这个“android-ndk-r25b-linux.zip”文件是NDK的一个特定版本,即r25b,专为Linux操作系统设计。在Android...

    android NDK 入门例子

    对于想要学习Android NDK的开发者来说,这是一个很好的起点,可以帮助他们快速理解NDK的工作原理和实践方法。通过实际操作和调试这个例子,开发者可以深入理解Android应用如何与原生代码交互,从而更好地利用NDK提升...

    android-ndk(android-ndk-r26b-windows.zip)

    3. **交叉编译**:NDK包含了一系列交叉编译工具链,能够将源代码编译为不同架构(如armeabi, armeabi-v7a, arm64-v8a, x86, x86_64等)的二进制文件,以适应不同类型的Android设备。 4. **性能优化**:对于计算密集...

Global site tag (gtag.js) - Google Analytics