Cocos2d-x 3.15 crash on launch on Android 4.3

I migrate my project from cocos2d-x 3.10 to cocos2d-x 3.15

On Android 6+ it works find. But when I launch it (same apk) on Android 4.3 I have app crash:

05-24 12:20:44.922 3051-3051/com.myapp I/dalvikvm: Failed resolving Lorg/cocos2dx/lib/Cocos2dxActivity; interface 9414 'Lorg/cocos2dx/lib/Cocos2dxHelper$Cocos2dxHelperListener;'
05-24 12:20:44.922 3051-3051/com.myapp W/dalvikvm: Link of class 'Lorg/cocos2dx/lib/Cocos2dxActivity;' failed
05-24 12:20:44.922 3051-3051/com.myapp W/dalvikvm: Unable to resolve superclass of Lorg/cocos2dx/cpp/AppActivity; (9361)
05-24 12:20:44.922 3051-3051/com.myapp W/dalvikvm: Link of class 'Lorg/cocos2dx/cpp/AppActivity;' failed
05-24 12:20:44.922 3051-3051/com.myapp D/AndroidRuntime: Shutting down VM
05-24 12:20:44.922 3051-3051/com.myapp W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xafab8678)
05-24 12:20:44.932 3051-3051/com.myapp E/AndroidRuntime: FATAL EXCEPTION: main
     java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.myapp/org.cocos2dx.cpp.AppActivity}: java.lang.ClassNotFoundException: Didn't find class "org.cocos2dx.cpp.AppActivity" on path: DexPathList[[zip file "/data/app/com.myapp-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.myapp-2, /vendor/lib, /system/lib]]
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
         at android.app.ActivityThread.access$600(ActivityThread.java:141)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
         at android.os.Handler.dispatchMessage(Handler.java:99)
         at android.os.Looper.loop(Looper.java:137)
         at android.app.ActivityThread.main(ActivityThread.java:5103)
         at java.lang.reflect.Method.invokeNative(Native Method)
         at java.lang.reflect.Method.invoke(Method.java:525)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
         at dalvik.system.NativeStart.main(Native Method)
      Caused by: java.lang.ClassNotFoundException: Didn't find class "org.cocos2dx.cpp.AppActivity" on path: DexPathList[[zip file "/data/app/com.myapp-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.myapp-2, /vendor/lib, /system/lib]]
         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
         at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
         at android.app.ActivityThread.access$600(ActivityThread.java:141) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
         at android.os.Handler.dispatchMessage(Handler.java:99) 
         at android.os.Looper.loop(Looper.java:137) 
         at android.app.ActivityThread.main(ActivityThread.java:5103) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:525) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
         at dalvik.system.NativeStart.main(Native Method) 

Why it don’t see org/cocos2dx/cpp/AppActivity only on Android 4.x ?

build.gradle

import org.apache.tools.ant.taskdefs.condition.Os

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "com.mygame"
        minSdkVersion 16
        targetSdkVersion PROP_TARGET_SDK_VERSION
        multiDexEnabled     true
    }
}

... all other same like in default build.gradle file...

I think your problem is that your build tools version is higher than your compileSdkVersion. Update the android build tools and try:

compileSdkVersion 25
buildToolsVersion “25.0.3”

1 Like

@duksel

That why you getting crash, you need to pass in APP_PLATFORM minsdk 16 in your case not PROP_TARGET_SDK_VERSION variable.

Oh no :smiley: just noticed that u enabled multidex - you should also add one tag into android manifest file otherwise you app will crash on android 4x devices

android.support.multidex.MultiDexApplication

https://developer.android.com/studio/build/multidex.html

Great! It helps me!

Yes. I fixed that too!

@nite @slackmoehrle

I think we need to push fix for it in GIT or make some documentation where make users aware of current issue - it’s really Critical bug with PROP_TARGET_SDK_VERSION - as it’s crashing 99% 4.x phones with incorrect setup of PROP_TARGET_SDK_VERSION.

1 Like