【发布时间】:2022-10-01 00:17:37
【问题描述】:
我正在 Flutter 上开发一个应用程序。 Flutter 代码中有这个按钮,当我按下它时,我会转到 Android 上的本机活动,因为它使用仅在那里可用的特定库(JCenter repo)。
当我将手机插入 PC 并通过 Android studio 运行它时,这工作得很好,但是当我创建 APK 时,将其安装在同一部手机上并按下按钮转到它崩溃的本机活动。当发生这种情况时,我已经运行了adb logcat,我看到的可能导致崩溃的错误是NoSuchMethodError: no static method "libraryName;methodName"。
我想 APK 不会从 JCenter 加载特定库,但我找不到会发生这种情况的单一原因,也找不到如何使其工作。或者也许我完全错了,这不是正在发生的事情,但我不知所措。
有谁知道为什么会发生这种情况,或者如何找到更多可以帮助我修复它的信息?
编辑:
该图书馆名为wifination。错误的方法是OnSave2ToGallery。我还发现了我的代码中崩溃的确切位置(从他们的示例代码中复制),当我在 Activity 的 onCreate() 方法中执行 wifination.appContext=getApplicationContext() 时。 appContext 是 wifination 类中的 public static Context appContext。
更多的错误:
09-29 18:19:32.853 30468 30468 D AndroidRuntime: Shutting down VM
09-29 18:19:32.853 30468 30468 E AndroidRuntime: FATAL EXCEPTION: main
09-29 18:19:32.853 30468 30468 E AndroidRuntime: Process: com.my.app, PID: 30468
09-29 18:19:32.853 30468 30468 E AndroidRuntime: java.lang.NoSuchMethodError: no static method "Lcom/joyhonest/wifination/wifination;.OnSave2ToGallery(Ljava/lang/String;I)V"
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at java.lang.Runtime.nativeLoad(Native Method)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at java.lang.Runtime.nativeLoad(Runtime.java:1121)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1075)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:998)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1656)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at com.joyhonest.wifination.wifination.<clinit>(Unknown Source:15)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at com.my.app.MyActivity.onCreate(Unknown Source:36)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8057)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:8037)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1344)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3688)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3864)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2253)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7870)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:550)
09-29 18:19:32.853 30468 30468 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
09-29 18:19:32.856 1340 7072 W ActivityTaskManager: Force finishing activity com.my.app/.MyActivity
09-29 18:19:32.856 1340 30620 I DropBoxManagerService: add tag=data_app_crash isTagEnabled=true flags=0x2
09-29 18:19:32.858 1340 7072 W ActivityTaskManager: Force finishing activity com.my.app/.MainActivity
09-29 18:19:32.859 1340 1562 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
09-29 18:19:32.860 1340 1562 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
【问题讨论】:
-
确保符号没有被 R8 / ProGuard 混淆。
-
@Michael 我考虑过这个,但是在
build.gradle中的buildTypes > release里面只有signingConfig signingConfigs.debug。我在任何地方都看不到 R8/ProGuard 配置,而且我自己也没有做过。 -
也许您应该发布完整的错误消息,包括真实的库和方法名称。还要检查在您的应用程序中发生错误的打印堆栈跟踪。如果代码是你写的,你也应该把它贴出来。
-
@Robert 图书馆名为
wifination。错误的方法是OnSave2ToGallery。我还确切地发现了我的代码崩溃的确切位置(从他们的示例代码中复制),并且是在我执行wifination.appContext=getApplicationContext()时崩溃的。appContext在课堂上是public static Context appContext。 -
正如我所写,请更新您的问题 - cmets 对新代码不利。在问题中,您可以包含更大的代码部分。
标签: java android flutter apk jcenter