SDL 2.0.8 Android Bug?

I’m a little confused. I just got the following crash on my Samsung S4 when trying to start up my test app. The JNI signature of getManifestEnvironmentVariables() appears to be wrong. This didn’t happen on my N5100 tablet so I’m confused why the phone is behaving differently:

12-13 13:47:20.425 18259-18259/org.libsdl.app V/SDL: nativeSetupJNI()
12-13 13:47:20.425 18259-18259/org.libsdl.app W/dalvikvm: JNI WARNING: JNI function GetStaticMethodID called with exception pending
12-13 13:47:20.425 18259-18259/org.libsdl.app W/dalvikvm:              in Lorg/libsdl/app/SDLActivity;.nativeSetupJNI:()I (GetStaticMethodID)
12-13 13:47:20.425 18259-18259/org.libsdl.app W/dalvikvm: Pending exception is:
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm: java.lang.NoSuchMethodError: no static method with name='getManifestEnvironmentVariables' signature='()V' in class Lorg/libsdl/app/SDLActivity;
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at org.libsdl.app.SDLActivity.nativeSetupJNI(Native Method)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at org.libsdl.app.SDL.setupJNI(SDL.java:13)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at org.libsdl.app.SDLActivity.onCreate(SDLActivity.java:235)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at org.libsdl.app.MainActivity.onCreate(MainActivity.java:82)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.Activity.performCreate(Activity.java:5426)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2483)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.ActivityThread.access$900(ActivityThread.java:171)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.os.Handler.dispatchMessage(Handler.java:102)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.os.Looper.loop(Looper.java:157)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at android.app.ActivityThread.main(ActivityThread.java:5506)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at java.lang.reflect.Method.invokeNative(Native Method)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at java.lang.reflect.Method.invoke(Method.java:515)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
12-13 13:47:20.425 18259-18259/org.libsdl.app I/dalvikvm:     at dalvik.system.NativeStart.main(Native Method)

I fixed (hacked/worked around) it in my SDLActivity.java by renaming getManifestEnvironmentVariables() to getManifestEnvironmentVariablesBool() as follows:

  public static void getManifestEnvironmentVariables() {
    boolean b = getManifestEnvironmentVariablesBool();
  }
  public static boolean getManifestEnvironmentVariablesBool()

Is this a known bug?

Seems like your java sources are out of sync with the native code. The SDL Java sources in your android project need to be from the same SDL as the native code.

Looking from version history the signature of that method was changed from void to boolean about 5 weeks ago in this change: https://hg.libsdl.org/SDL/rev/e4d90d54cb01
So it looks like your native library is using an older version and your java a newer version.

1 Like

OK. I’ll take the https://www.libsdl.org/tmp/SDL-2.0.8-11774.zip snapshot from https://www.libsdl.org/hg.php - I’ve been using Rev 11724. Thanks.