Martin N
Martin N

Reputation: 21

No pending exception expected: java.lang.NoSuchMethodError: no static or non-static method "Lorg/libsdl/app/SDLActivity;.onNativeSoftReturnKey()Z

My app crashes on startup. Happens only when i try to deobfuscate. I am a total noob, but i know i have to add some exception into proguard-rules.pro. Problem is, i have no idea what to add there. Can anyone please help? The error log is here:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/oriole/oriole:12/SQ1D.220205.004/8151327:user/release-keys'
Revision: 'MP1.0'
ABI: 'arm64'
Timestamp: 2022-07-19 09:20:23.796556106-0700
Process uptime: 0s
Cmdline: com.XXX.demo
pid: 19614, tid: 19614, name: SDLActivity  >>> com.XXX.demo <<<
uid: 10233
tagged_addr_ctrl: 0000000000000001
signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
Abort message: 'No pending exception expected: java.lang.NoSuchMethodError: no static or non-static method "Lorg/libsdl/app/SDLActivity;.onNativeSoftReturnKey()Z"
  at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader, java.lang.Class) (Runtime.java:-2)
  at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:1121)
  at void java.lang.Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.Class, java.lang.String) (Runtime.java:1075)
  at void java.lang.Runtime.loadLibrary0(java.lang.Class, java.lang.String) (Runtime.java:998)
  at void java.lang.System.loadLibrary(java.lang.String) (System.java:1656)
  at void c.a.c(java.lang.String) (SourceFile:-1)
  at void org.libsdl.app.SDLActivity.m() (SourceFile:-1)
  at void org.libsdl.app.SDLActivity.onCreate(android.os.Bundle) (SourceFile:-1)
  at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:8050)
  at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:8030)
  at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1329)
  at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:3608)
  at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent) (ActivityThread.java:3792)
  at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:103)
  at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:135)
  at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:95)
  at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:2210)
  at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
  at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
  at void android.os.Looper.loop() (Looper.java:288)
  at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:7839)
  at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
  at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:548)
  at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1003)
'
    

Upvotes: 2

Views: 634

Answers (1)

Chugunov Victor
Chugunov Victor

Reputation: 33

Good afternoon. Could you please:
1.Uninstall apk from device - if it was installed
2.Clean project
3.Then add these rules to proguard-rules.pro

-keepclassmembers class org.libsdl.app.** { 
   public static *** **(...); 
   public *** **(...); 
}

So, for all classes in package org.libsdl.app all public and static methods with any number of parameters will be kept, including SDLActivity::onNativeSoftReturnKey
4.Then build and install

To check you could build release or add this configuration to build.gradle

buildTypes {
        debug {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
...

Upvotes: 2

Related Questions