2011-04-08 60 views
5

我正在使用NDK将我的C/C++代码移植到Android游戏中,但我无法入门。我该如何解决这个致命异常?

我已经从developer.android.com下载了NDK-r5b,并且已经安装了Cygwin。

我甚至无法运行NDK示例中提供的Hello-jni程序。

当我运行:

$ cd /cygdrive/c/android/android-ndk-r5b/samples/hello-jni 
$ ndk-build 

我得到一个ERROR: You are using a non-Cygwin compatible Make program

我试着安装GNUMake 3.81,但问题仍然存在。


我试图通过Eclipse IDE在NDK中运行HELLO-JNI示例程序。在Android AVD上有一个关闭的力量,logcat显示如下的异常:

04-08 12:32:11.609: ERROR/AndroidRuntime(274): FATAL EXCEPTION: main 
04-08 12:32:11.609: ERROR/AndroidRuntime(274): 
java.lang.ExceptionInInitializerError 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
java.lang.Class.newInstanceImpl(Native Method) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
java.lang.Class.newInstance(Class.java:1429) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 
2577) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 
2679) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.os.Handler.dispatchMessage(Handler.java:99) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.os.Looper.loop(Looper.java:123) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
android.app.ActivityThread.main(ActivityThread.java:4627) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
java.lang.reflect.Method.invokeNative(Native Method) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
java.lang.reflect.Method.invoke(Method.java:521) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
com.android.internal.os.ZygoteInit 
$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
dalvik.system.NativeStart.main(Native Method) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274): Caused by: 
java.lang.UnsatisfiedLinkError: Library hello-jni not found 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
java.lang.Runtime.loadLibrary(Runtime.java:461) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
java.lang.System.loadLibrary(System.java:557) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  at 
com.example.hellojni.HelloJni.<clinit>(HelloJni.java:67) 
04-08 12:32:11.609: ERROR/AndroidRuntime(274):  ... 15 more 
04-08 12:32:11.678: WARN/ActivityManager(59): Force finishing 
activity com.example.hellojni/.HelloJni 
04-08 12:32:12.340: WARN/ActivityManager(59): Activity pause timeout 
for HistoryRecord{44f925c8 com.example.hellojni/.HelloJni} 

我该如何做这项工作?

回答

3

我有这个问题。事实证明,当我安装Cygwin时,没有安装GNU工具链,并且正在从构建机器上安装的另一个SDK中找到make。修复方法是重新安装Cygwin并检查Gnu工具是否已安装。 (我认为Cygwin设置中的标题是'Devel',默认不安装,更改为'install')。 HTH

4

我有同样的问题,我想通了。导致它搞砸的东西是在项目属性 - > C/C++生成 - >生成命令:被设置为'bash ndk-build'而不是'bash C:\ android-ndk-r6 \ ndk-建设”

1

我在Eclipse中解决了这个通过执行以下操作:

  1. 右键点击项目名称,并选择‘属性’
  2. 在‘C/C++编译’,选择‘建设者节’然后在“构建器”组中将以下内容放在“构建命令”文本框中:

    bash“_cygwin_home_ \ home \ android-ndk-r6b \ ndk-build”

    • 替换“_cygwin_home_”与你的实际路径的cygwin,
    • 我把主文件夹内的文件夹NDK在cygwin制作安装文件夹(你可以看到)。

我希望这对你有所帮助。