【问题标题】:How can I fix this fatal exception?我该如何解决这个致命的异常?
【发布时间】:2011-08-01 07:04:06
【问题描述】:

我正在使用 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} 

我怎样才能做到这一点?

【问题讨论】:

    标签: android cygwin android-ndk gnu-make


    【解决方案1】:

    我在 Eclipse 中通过以下方式解决了这个问题:

    1. 右键单击项目名称并选择“属性”
    2. 在“C/C++ Build”中选择“builder section”,然后在“builder”组的“build command”文本框中输入以下内容:

      bash "_cygwin_home_\home\android-ndk-r6b\ndk-build"

      • 将“_cygwin_home_”替换为您到 cygwin 的实际路径,
      • 我将 ndk 文件夹放在 cygwin 安装文件夹的主文件夹中(如您所见)。

    希望对你有所帮助。

    【讨论】:

      【解决方案2】:

      我有同样的问题,我想通了。导致它搞砸的事情是在 Project Properties -> C/C++ Build -> Build command: 设置为 'bash ndk-build' 而不是 'bash C:\android-ndk-r6\ndk-构建'

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-22
          • 2013-02-12
          相关资源
          最近更新 更多