Eclipse中的Android NDK ::(无法运行程序“ndk-build”:未知原因)

时间:2012-03-08 15:40:10

标签: android eclipse android-ndk eclipse-cdt

我正在试图使用CDT插件从eclipse构建我的NDK项目,我得到了错误: -

NDK (Cannot run program "ndk-build": Unknown reason)

应用程序运行但我松开了构建过程的所有控制台输出,这在尝试编译时是一个噩梦,我必须在命令行上执行此操作。

这就是我到达那里的方式: -

I Downloaded and installed the CDT plugin for Eclipse.

然后:

Added my JNI folder and also your Android.mk in the JNI directory.

然后:

Go FILE / NEW / OTHER /C/C++ / ( Convert to a C/C++ Project )

在设置构建目标时:

Check the project, choose MakeFile Project and Other Toolchain click NEXT

最后在项目属性中:

PROJECT / PROPERTIES / C/C++ uncheck " use default build command" replace "make" with "ndk-build" 

然后在构建时将错误吐出到控制台。虽然它编译并使得在设备上运行的构建我看不到任何构建输出。

我的.bash_profile中有“ndk-build”,其中包含以下变量:

:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_NDK

我可以使用命令行中的ndk-build编译。似乎Eclipse无法看到我的路径:

这是在Mac OSX上,在Helios版本2中。

编辑:好的,所以这个编译很好,而且构建的输出实际上隐藏在这条消息的下面,这远非理想,因为当我需要审查已构建的项目时我不能掩盖它。我怎么摆脱它?

10 个答案:

答案 0 :(得分:13)

就我而言,我必须在eclipse中给出我的ndk-build命令的完整路径才能构建它:

Eclipse - >你的Prj - >右键单击 - > C / C ++ Build - > "生成器" group:" Build命令"的值应该是完整的路径,如下所示(而不仅仅是" ndk-build")

/ Users / vshakya / MySoftware / android-ndk-r8 / ndk-build

我希望将来能帮助别人,因为我浪费了30分钟来解决这个问题。

答案 1 :(得分:5)

请参阅此链接以获取android

中的NDK配置

http://odroid.foros-phpbb.com/t181-how-to-install-android-ndk

答案 2 :(得分:4)

这可能看起来很愚蠢,但你要检查一下是否有几个游戏机?我可以想象你引用的消息有一个,构建输出的另一个消息。

另见this:答案有一个有趣的链接,处理设置但也与eclipse集成有关。

答案 3 :(得分:4)

我遇到了同样的问题,尽管在http://developer.android.com/tools/sdk/ndk/index.html#Installing处安装NDK的描述很好,但它并不能解决这个常见问题。

Eclipse似乎允许您在多个位置配置内容,您可以通过“窗口”菜单或项目特定配置通过“属性”选项进行全局修改。最简单的是在{Properties;}中为ndk-build(windows的ndk-build.cmd)添加完整路径。 C / C ++ Build}构建命令框。

答案 4 :(得分:3)

更简单的解决方案,使用eclipse项目路径中的命令ndk-build构建:

$PROJECT>ndk-build

每当您更改本机代码时。

要在eclipse上编译,我按照接下来的步骤进行操作:

  • 创建eclipse项目。
  • 在jni文件夹
  • 中添加本机代码(.cpp)
  • 按照典型结构
  • 创建Android.mk和Application.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := $$Add source files$$

LOCAL_LDLIBS := -lpcap

LOCAL_MODULE := libtest

LOCAL_C_INCLUDES := $$Path of the header files used$$

include $(BUILD_SHARED_LIBRARY)

----------------

Aplication.mk depends that the type of options you want
  • 当eclipse抛出警告时,将鼠标放在jni代码部分,并检查选项:“将项目转换为本机代码”,并自动转换项目。

下次编译时,将调用ndk-build V = 1,编译本机代码,然后编译Android部件。

注:

您必须能够在系统上的所有文件夹中使用ndk-build。该命令检测已调用的位置,并查找jni文件夹,以使用Android.mk编译所有本机代码。

寻找的基本结构是:

  • $ PROJECT> JNI /
    • /Android.mk
    • /Application.mk
    • /code.cpp

但您可以修改Android.mk以查找其他路径中的代码。

我希望它可以帮到你!

答案 5 :(得分:3)

Sequoya是你的朋友。自Indigo发布以来,它就是Eclipse的一部分。

http://www.eclipse.org/sequoyah/

答案 6 :(得分:3)

就我而言,我必须在eclipse中给出我的ndk-build.cmd命令的完整路径才能构建它:

Eclipse - >你的Prj - >右键单击 - > C / C ++ Build

C:\ Prateek \ android-ndk-r9 \ ndk-build.cmd

答案 7 :(得分:2)

万一你以某种方式只看到你的stdout而不是stderr,试着将你的stderr重定向到stdout。

ndk-build 2>& 1

答案 8 :(得分:1)

确保在windows中使用“absolutepath \ ndk-build.cmd”而不是“absolutepath \ ndk-build”。 它添加.cmd后无错误编译

答案 9 :(得分:0)

除了系统环境。

在Eclipse中,您还需要转到首选项 - > c / c ++ Build - >环境。添加名为“NDKROOT”的新变量,并将值设置为NDK安装路径。

这适合我。