Mon jeu Android est construit avec cocos2dx 3.0, et il fonctionne bien sur mon Nexus 5. Cependant, mes amis qui ont un Galaxy S4 disent que le jeu se plante à l'ouverture.
Modifier : testé avec plus d'appareils. Fonctionne sur Nexus 5 Lollipop et Nexus 7 Lollipop. Ne fonctionne pas sur Galaxy S4 KitKat, Galaxy Note 3 KitKat et Nexus 5 KitKat. Il semble que cela fonctionne sur l'API 21 mais pas sur la 19. Cependant, j'ai réglé les deux minSDKversion
et la version cible à 19 qui est KitKat)
J'ai donc téléchargé l'émulateur Genymotion pour simuler sur le Galaxy S4 puisque l'émulateur Android SDK ne semblait pas avoir le Galaxy S4 dans la liste. Puis j'ai découvert que Genymotion ne fonctionne pas avec les APKs construits pour ARM. Par conséquent, j'ai ajouté la ligne APP_ABI := armeabi armeabi-v7a x86
en application.mk
pour que l'APK supporte les trois architectures.
Aussi, j'ai modifié le code de cocos2dx pour traiter Genymotion comme émulateur.
if (product != null) {
isEmulator = product.equals("sdk") || product.contains("_sdk") || product.contains("sdk_") || product.contains("vbox");
} // vbox part is the added part
Maintenant, lorsque j'installe et exécute l'APK sur l'émulateur S4, il se bloque avec l'erreur disant
12-22 22:22:34.502: D/Cocos2dxActivity(1280): model=Samsung Galaxy S4 - 4.4.4 - API 19 - 1080x1920
12-22 22:22:34.506: D/Cocos2dxActivity(1280): product=vbox86p
12-22 22:22:34.506: D/Cocos2dxActivity(1280): isEmulator=true
12-22 22:22:34.510: D/dalvikvm(1280): Trying to load lib /data/app-lib/com.DoomChitGames.LittleSnake-2/libcocos2dcpp.so 0xa508c970
12-22 22:22:34.514: E/dalvikvm(1280): dlopen("/data/app-lib/com.DoomChitGames.LittleSnake-2/libcocos2dcpp.so") failed: dlopen failed: library "/system/lib/libhoudini.so" not found
12-22 22:22:34.514: D/AndroidRuntime(1280): Shutting down VM
12-22 22:22:34.514: W/dalvikvm(1280): threadid=1: thread exiting with uncaught exception (group=0xa4d00b20)
12-22 22:22:34.514: E/AndroidRuntime(1280): FATAL EXCEPTION: main
12-22 22:22:34.514: E/AndroidRuntime(1280): Process: com.DoomChitGames.LittleSnake, PID: 1280
12-22 22:22:34.514: E/AndroidRuntime(1280): java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libhoudini.so" not found
12-22 22:22:34.514: E/AndroidRuntime(1280): at java.lang.Runtime.loadLibrary(Runtime.java:364)
12-22 22:22:34.514: E/AndroidRuntime(1280): at java.lang.System.loadLibrary(System.java:526)
12-22 22:22:34.514: E/AndroidRuntime(1280): at org.cocos2dx.lib.Cocos2dxHelper.init(Cocos2dxHelper.java:94)
12-22 22:22:34.514: E/AndroidRuntime(1280): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:84)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.Activity.performCreate(Activity.java:5231)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.ActivityThread.access$800(ActivityThread.java:135)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.os.Looper.loop(Looper.java:136)
12-22 22:22:34.514: E/AndroidRuntime(1280): at android.app.ActivityThread.main(ActivityThread.java:5001)
12-22 22:22:34.514: E/AndroidRuntime(1280): at java.lang.reflect.Method.invokeNative(Native Method)
12-22 22:22:34.514: E/AndroidRuntime(1280): at java.lang.reflect.Method.invoke(Method.java:515)
12-22 22:22:34.514: E/AndroidRuntime(1280): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
12-22 22:22:34.514: E/AndroidRuntime(1280): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
12-22 22:22:34.514: E/AndroidRuntime(1280): at dalvik.system.NativeStart.main(Native Method)
12-22 22:22:38.490: I/Process(1280): Sending signal. PID: 1280 SIG: 9
Quelqu'un sait-il quel est le problème ?