在Eclipse中安装和使用Android NDK

45

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

如果有任何好的教程,真心希望得到帮助。

编辑:好的,现在我安装了NDK(我想),但是有没有人知道如何使用它?我已经按照这个链接(here)的步骤走到了这一步:

运行终端

cd ~/android-ndk-1.5_r1

make APP=hello-jni

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

Android NDK:定义了APP变量但应用程序未知: hellojni
Android NDK:您可能想使用以下之一:
build/core/main.mk:81: *** Android NDK:中止。停止。

有什么想法吗?


Eclipse在开发NDK应用程序时非常有帮助。这个教程已经过时了,最好查看最新的NDK。 - ognian
太好了,谢谢你提供的信息,我不知道在Eclipse中这是可能的。 - Donal Rafferty
1
我在这里编写了一份逐步教程。http://www.permadi.com/blog/2011/09/setting-up-android-jni-projects-in-windows-eclipse-and-sequoyah/ 希望能对你有所帮助。 - user943858
这个链接不起作用,有人找到了另一个相同内容的链接吗? - Jeegar Patel
最新版本(年份:2016)[教程在这里](http://artichowicz.net/2016/03/18/how-to-set-up-android-ndk-and-run-hellojni-on-windows/)。 - Misery
显示剩余8条评论
5个回答

24
尽可能简单地描述,从Eclipse内部构建使用NDK的Android应用需要两个步骤。
首先,在终端中,您需要在项目上运行NDK构建脚本。进入项目目录的根目录,然后在该目录中执行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++编写的代码进行通信。
最后,我不知道任何可以帮助NDK开发的Eclipse插件。我所知道的关于NDK的一切都是从官方的Android NDK documentation中学习的。请随时评论并让我知道是否有任何问题需要澄清。

2
嘿,谢谢。我几年前写了这个问题,但从未真正研究过它,所以我会在几天后尝试一下。谢谢 +1 - ingh.am
1
谢谢...我看到了很多矛盾的答案,但这个对我有用。 - Kalle
1
此答案中的信息已经过时。正如@HamidFadishei在下面指出的那样,现在有一个Eclipse插件可以添加NDK支持。 - James

12

自ADT版本20起,Eclipse环境中引入了本地开发和调试支持。http://tools.android.com/recent/usingthendkplugin

  • 从Eclipse首选项->Android->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安装一起工作。

1
我完全错过了这个 - 谢谢你提醒我! - slott

5
NDK中的文档目录有关于如何使用NDK本身的非常好的信息。阅读概述、Application.mk和Android.mk HTML文档。在继续之前,您需要Google Sun JNI PDF并学习JNI的所有内容,因为仅仅使用NDK将一堆C / C ++代码编译成库只是过程的一部分。您必须编写调用您的C / C ++的本机Java代码,并创建符合JNI约定的C / C ++包装函数,以便本机Java代码可以调用它们。JNI已经存在很长时间了,它不是特定于Android的。因此,您可以通过遵循针对JNI的教程,使用像javah和javac这样的命令行工具来学习它,并在了解基础知识后返回到与NDK集成。(要查看这些C shims的示例,请查看NDK中的hello-jni示例;其中的C源文件向您展示了这些shims通常的外观。使用javah生成这些shims是最好的方法,您创建具有本地方法的Java类,用javah处理它们,它会为您生成C头文件,然后您编写符合生成的函数原型的C函数)。
注意:虽然 NDK 文档要求您从命令行手动构建,然后进入 Eclipse 构建应用程序(这是一系列繁琐的步骤,特别是如果您正在更改 C/C++ 代码),但事实证明,您可以轻松地与 Eclipse 集成,以便每次从 Eclipse 构建时都运行 NDK。如何操作,请在此处阅读

3

1
为了直接回答这个问题 - 你需要在项目文件夹中的本地代码文件夹中运行ndk-build。这将创建在Eclipse的文件资源树下jni中找到的.so文件。如果代码中的语法正确,这些函数现在可以从您的java代码中调用。
当安装和使用Android开发工具和NDK时,我找到了许多帮助来源。我写了一篇博客文章来分享我的经验,并希望能够回馈帮助我达到目标的社区,这可能有助于理解我的答案: blog post http://workingmatt.blogspot.co.uk/2013/03/set-up-android-sdk-and-ndk.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接