Can't run Cocos Creator Game on real android device, runs fine on emulators

Hey, I’m pretty inexperienced with using Cocos Creator and also in general, but I’ve tried to compile two projects from Cocos Creator, and they both work great in android studio’s emulator but I can’t get them to run in my real device. Both .apks crash at start up. This is the error I got from Android Studio:

04/25 01:57:02: Launching PuzzlesAndProgrammers
$ adb push E:\CocosProjects\PuzzlesAndProgrammers\build\jsb-default\frameworks\runtime-src\proj.android-studio\app\build\outputs\apk\PuzzlesAndProgrammers-debug.apk /data/local/tmp/org.cocos2d.PuzzlesAndProgrammers
$ adb shell pm install -r "/data/local/tmp/org.cocos2d.PuzzlesAndProgrammers"
	pkg: /data/local/tmp/org.cocos2d.PuzzlesAndProgrammers
Success
$ adb shell am start -n "org.cocos2d.PuzzlesAndProgrammers/org.cocos2dx.javascript.AppActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 28644 on device samsung-sm_t561-3801bdc8596a6300
D/ActivityThread: handleBindApplication:org.cocos2d.PuzzlesAndProgrammers
I/InstantRun: Instant Run Runtime started. Android package is org.cocos2d.PuzzlesAndProgrammers, real application class is null.
E/InstantRun: Could not find slices in APK; aborting.
W/InstantRun: No instant run dex files added to classpath
W/ApplicationPackageManager: getCSCPackageItemText()
D/DisplayManager: DisplayManager()
D/AndroidRuntime: Shutting down VM
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41d93bc0)
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: org.cocos2d.PuzzlesAndProgrammers, PID: 28644
                  java.lang.UnsatisfiedLinkError: Couldn't load cocos2djs from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.cocos2d.PuzzlesAndProgrammers-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.cocos2d.PuzzlesAndProgrammers-1, /vendor/lib, /system/lib]]]: findLibrary returned null
                      at java.lang.Runtime.loadLibrary(Runtime.java:358)
                      at java.lang.System.loadLibrary(System.java:526)
                      at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:249)
                      at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:265)
                      at org.cocos2dx.javascript.AppActivity.onCreate(AppActivity.java:40)
                      at android.app.Activity.performCreate(Activity.java:5447)
                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
                      at android.app.ActivityThread.access$800(ActivityThread.java:166)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:136)
                      at android.app.ActivityThread.main(ActivityThread.java:5590)
                      at java.lang.reflect.Method.invokeNative(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:515)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                      at dalvik.system.NativeStart.main(Native Method)
Application terminated.

Please any help is greatly appreciated.

Hi @S4Trace ,

thanks for the hint, I tried to compile my game with Android Studio 2.3.1 and it was able to create the APK file, but I can confirm that it crashes on real device…

I have no idea what to do.

Best regards,
Zsolt

The problem still persists. Any ideas?

1 Like

Android-studio will not compile native files, you need first compile the project in the CocosCreator.
CocosCreator 1.5 will support creating an android-studio project which can also compile native files.

Hi @jyinkailej,

what is the planned release date of CC 1.5?

Best regards,
Zsolt

We plan to release 1.5 in mid May, but it also depends on the test progress. :slight_smile:

Hi @jyinkailej,

I would like to test it! :slight_smile:

Best regards,
Zsolt

So, any ideas why my .apk doesn’t work on a real device and crashes on start up? I’ve also got the same issue with compiling and building the demos. They work fine on an emulator but crash on a start up on a real device.

Please unzip the apk to check if you compile the .so to .apk successfully.

I think they are successfully compiled, here’s a screenshot:

However, when I try to build with android-19 I get an error that makes my build fail (Doesn’t happen with android-22). By going to the log file I get the following error message:

E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCActionGrid3D.cpp:510: error: undefined reference to 'rand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCActionGrid3D.cpp:511: error: undefined reference to 'rand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCActionGrid3D.cpp:514: error: undefined reference to 'rand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCActionTiledGrid.cpp:88: error: undefined reference to 'rand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCActionTiledGrid.cpp:280: error: undefined reference to 'srand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCActionTiledGrid.cpp:606: error: undefined reference to 'srand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCTMXXMLParser.cpp:647: error: undefined reference to 'atof'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCTMXXMLParser.cpp:653: error: undefined reference to 'atof'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCTMXXMLParser.cpp:696: error: undefined reference to 'atof'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/2d/CCTMXXMLParser.cpp:690: error: undefined reference to 'atof'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/base/CCConsole.cpp:1207: error: undefined reference to 'srand'
E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/cocos2d-x/cocos/base/CCConsole.cpp:1236: error: undefined reference to 'srand'
collect2.exe: error: ld returned 1 exit status
make.exe: *** [obj/local/armeabi-v7a/libcocos2djs.so] Error 1
make.exe: Leaving directory `E:/CocosProjects/PuzzlesAndProgrammers/build/jsb-default/frameworks/runtime-src/proj.android-studio/app'
Error running command, return code: 2.

So I noticed that make.exe returns error 1 at libcocos2djs.so, any ideas?

Maybe your ndk version is too new. Can you try r10e ?

Hi S4Trace, I solved the problem by deleting the folder “build” of the project and then build and compile the project with the level of api android-19 from Cocos Studio.

I use android-ndk-r10e.

With this solution the error is no longer present “undefined reference to ‘rand’”