2011-04-08 81 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製作安裝文件夾(你可以看到)。

我希望這對你有所幫助。