2011-04-08 8 views
5

Estoy portando mi código C/C++ en un juego de Android usando el NDK, pero estoy teniendo problemas para comenzar.¿Cómo puedo solucionar esta excepción fatal?

He descargado el NDK-r5b de developer.android.com y he instalado Cygwin.

Ni siquiera puedo ejecutar el programa Hello-jni incluido en las muestras de NDK.

cuando corro:

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

Obtengo un ERROR: You are using a non-Cygwin compatible Make program.

Intenté instalar GNUMake 3.81 pero el problema persiste.


Me trataron de ejecutar el programa HELLO-JNI muestra en el NDK través de Eclipse IDE. Hay una fuerza de cerca la AVD Android, y Logcat estaba mostrando una excepción de la siguiente manera:

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} 

Como puedo hacer este trabajo?

Respuesta

3

Tuve este problema. Resultó que la cadena de herramientas de GNU no estaba instalada cuando instalé Cygwin, y make se recogió de otro SDK instalado en mi máquina de compilación. La solución fue reinstalar Cygwin y verificar que las herramientas Gnu estuvieran instaladas. (Creo que el título es 'Devel' en la configuración de Cygwin. El valor predeterminado es no instalar, cambiar a 'instalar'). HTH

4

Tuve este mismo problema y lo descubrí. Lo que estaba causando que me arruinara fue en Project Properties -> C/C++ Build -> Comando Build: se configuró en 'bash ndk-build' en lugar de 'bash C: \ android-ndk-r6 \ ndk- construir'

1

abordé esta en Eclipse haciendo lo siguiente:

  1. Haga clic derecho sobre el nombre del proyecto y seleccione 'propiedades'
  2. en la 'C/C++ Build' elegir 'la sección constructor' a continuación, en el grupo "generador", coloque lo siguiente en el cuadro de texto "comando de compilación":

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

    • reemplazar "_cygwin_home_" con su ruta real a cygwin,
    • coloco la carpeta NDK dentro de la carpeta de inicio en la carpeta Installtion cygwin (como se puede ver).

espero que esto ayude.

Cuestiones relacionadas