安卓 java。lang.UnsatifiedLinkError:找不到java的实现。启用proguard时的lang.字符串
当我启用proguard时,出现以下错误
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 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:7331)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
我还使用
static {
System.loadLibrary("baseUrl");
}
如果我禁用proguard,它可以正常工作。这是启用proguard时的情况
# 1 楼答案
正如@Botje所建议的,您的案例中的问题似乎是Java端的本地名称和方法定义不同步
ProGuard会将
public native String myMethod();
更改为public native String b();
,但本机实现保留原始名称。这就是Java运行时找不到它的原因您需要将以下内容添加到ProGuard文件中:
请不要将这个答案标记为解决方案,因为是@Botje带来的(我只是进一步解释了一下)
@Botje请添加您自己的答案,以便他将其标记为解决方案