gpt4 book ai didi

启用proguard时的java.lang.UnsatisfiedLinkError : No implementation found for java. lang.String

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:02:33 26 4
gpt4 key购买 nike

启用混淆器时出现以下错误。

java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String com.osolutions.otv.utilities.al.b() (tried Java_com_osolutions_otv_utilities_al_b and Java_com_osolutions_otv_utilities_al_b__)
at com.osolutions.otv.utilities.al.b(Native Method)
at com.osolutions.otv.utilities.al.<clinit>(Unknown Source)
at com.osolutions.otv.activity.SplashScreenActivity.a(Unknown Source)
at com.osolutions.otv.activity.y.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7331)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

我也使用

初始化了 Cpp 类
static {
System.loadLibrary("baseUrl");
}

如果我禁用混淆器,它会正常工作。这是启用混淆器时的情况。

最佳答案

正如@Botje 所建议的,您的情况看起来问题在于 Java 端的 native 名称和方法定义不同步,可以这么说。

ProGuard 将您的 public native String myMethod(); 更改为 public native String b();,但您的 native 实现保留原始名称。这就是 Java 运行时无法找到它的原因。

您需要将以下内容添加到您的 ProGuard 文件中:

-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}

请不要将此答案标记为解决方案,因为它是@Botje 提出的(我只是进一步阐述了解释)。

@Botje 请添加您自己的答案,以便他将其标记为解决方案。

关于启用proguard时的java.lang.UnsatisfiedLinkError : No implementation found for java. lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56948049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com