【问题标题】:Installing & using the Android NDK in Eclipse在 Eclipse 中安装和使用 Android NDK
【发布时间】:2011-03-29 00:29:53
【问题描述】:

我在 Eclipse (MAC OSX) 中运行 Android SDK 已经有一段时间了。我已经下载了 NDK 并在 Eclipse 中安装了 C/C++ 工具,但是有人可以指导我使用 NDK 吗?例如,我是否只是像正常一样创建一个 Android 项目并使用 NDK 构建它?

如果有人知道的话,真的可以提供一个像样的教程。

编辑:好的,我现在已经安装了 NDK(我想),但是有人知道如何使用它吗?我到此为止(取自here):

运行终端

cd ~/android-ndk-1.5_r1

制作 APP=hello-jni

为了运行 hello-jni 示例应用程序,但我在终端中收到错误提示:

Android NDK:APP 变量定义为 未知应用程序:hellojni
Android NDK:您可能想使用 以下之一:
构建/核心/main.mk:81: *** Android NDK:中止。停下来。

有什么想法吗?

【问题讨论】:

标签: android android-ndk installation


【解决方案1】:

正如我所描述的那样,从 Eclipse 中构建一个使用 NDK 的 Android 应用程序需要两个步骤。

首先,在您的终端中,您需要在您的项目上运行 NDK 构建脚本。 cd 进入项目目录的根目录,然后在该目录中执行 ndk-build 脚本。

例如:

cd ~/workspace/hello-jni
./~/android-ndk-1.5_r1/ndk-build

完成此操作后,您应该会看到一些输出,这些输出会导致在您的项目目录中的 obj 目录中创建一个 *.SO 文件。

获得 *.SO 文件后,通过 Eclipse 使用 Android NDK 构建应用程序的最后一步是像构建任何其他应用程序一样使用 Eclipse 构建它,然后部署它以进行测试。

如果您对 C/C++ 代码进行任何更改,您需要重复第一步并重新生成 *.SO 文件,然后再从 Eclipse 中构建和部署您的应用程序。

我想指出,通过使用 Android NDK,您的 Android 应用程序仍然基于 Java。他们只是通过Java Native Interface 与用 C/C++ 编写的代码进行通信。

最后,我不知道有任何 Eclipse 插件可以帮助 NDK 开发。我所知道的关于 NDK 的一切我都了解了官方Android NDK documentation。请随时发表评论,让我知道我的回复中是否有任何可以澄清的地方。

【讨论】:

  • 嘿,谢谢,我在几年前写了这个问题,但从未真正研究过,所以我会在几天左右尝试一下。谢谢+1
  • 谢谢...我见过很多相互冲突的答案,而这个答案是为我做的。
  • 此答案中的信息已过时。正如@HamidFadishei 在下面指出的那样,现在有一个添加了NDK 支持的eclipse 插件。
【解决方案2】:

本机开发和调试支持从 ADT 版本 20 开始进入 Eclipse 环境。http://tools.android.com/recent/usingthendkplugin

  • 从 Eclipse Preferences -> Android -> NDK 设置 NDK 的路径
  • 右键单击您的项目并选择 Android 工具 -> 添加本机支持

developer.android.com 声明您还需要 Cygwin。

http://developer.android.com/tools/sdk/ndk/index.html#Contents

所需的开发工具

  • 对于所有开发平台,都需要 GNU Make 3.81 或更高版本。较早版本的 GNU Make 可能有效,但尚未经过测试。
  • 还需要最新版本的 awk(GNU Awk 或 Nawk)。
  • 对于 Windows,需要 Cygwin 1.7 或更高版本。 NDK 不适用于 Cygwin 1.5 安装。

【讨论】:

  • 我完全错过了这个 - 谢谢提醒!
【解决方案3】:

NDK 中的 docs 目录有一些关于如何使用 NDK 本身的非常好的信息。阅读概述、Application.mk 和 Android.mk HTML 文档。您需要在 Google 上搜索 Sun JNI PDF,下载它,并了解 JNI 的全部内容,然后再进一步了解。这是因为简单地使用 NDK 将一堆 C/C++ 代码编译到库中只是该过程的一部分。您必须编写调用 C/C++ 的本机 Java 代码,并且必须在 C/C++ 中创建包装函数,这些函数遵守本机 Java 代码可以调用的 JNI 约定。 JNI 已经存在很长时间了,无论如何它都不是特定于 Android 的。因此,要了解它,您可以深入学习面向 JNI 的教程,使用 javah 和 javac 等命令行工具,然后在了解基础知识后返回与 NDK 集成。 (有关这些 C 垫片的示例,请查看 NDK 中的 hello-jni 示例;那里的 C 源文件通常会向您展示垫片的外观。使用 javah 生成这些垫片是可行的方法,您创建具有本地方法的 Java 类,使用 javah 处理它们,它会为您生成 C 头文件,然后您编写符合生成的函数原型的 C 函数)。

注意:虽然 NDK 文档会让您从命令行手动构建,然后进入 Eclipse 来构建您的应用程序(当然,这是一系列费力的步骤,尤其是在您更改 C/C++ 代码时),但它事实证明,您可以轻松地与 Eclipse 集成,以便每次从 Eclipse 构建时运行 NDK。想知道怎么做,read here

【讨论】:

    【解决方案4】:

    这是为了其他想要从 Eclipse 中从头开始创建项目的人的利益:我按照此博客中提到的步骤操作,效果很好:http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

    【讨论】:

      【解决方案5】:

      要尝试直接回答问题 - 您需要在包含项目文件夹中本机代码的文件夹中运行 ndk-build。这将创建在 Eclipse 中 jni 下的文件资源管理器/资源树中找到的 .so 文件。如果代码中的语法正确,这些函数现在可以从您的 java 代码中调用。

      在安装和掌握 Android 开发者工具和 NDK 时,我发现了许多帮助资源。我写了一个blog post 来分享我的经验,并希望回馈帮助我到达那里的社区,这可能有助于理解我的答案:http://workingmatt.blogspot.co.uk/2013/03/set-up-android-sdk-and-ndk.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-16
        • 1970-01-01
        • 2015-01-14
        • 2017-09-05
        • 2019-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多