java.lang.UnsatisfiedLinkError:未找到 void org.libsdl.app.SDLActivity.nativeSetenv 的实现

问题描述 投票:0回答:2

我正在尝试运行使用 buildozer 生成的 APK。尝试在物理和虚拟的多个设备上运行后,我总是遇到相同的错误:

2022-02-08 18:05:17.702 10070-10070/org.test.butterfly E/AndroidRuntime: FATAL EXCEPTION: main
        Process: org.test.butterfly, PID: 10070
        java.lang.UnsatisfiedLinkError: No implementation found for void org.libsdl.app.SDLActivity.nativeSetenv(java.lang.String, java.lang.String) (tried Java_org_libsdl_app_SDLActivity_nativeSetenv and Java_org_libsdl_app_SDLActivity_nativeSetenv__Ljava_lang_String_2Ljava_lang_String_2)
            at org.libsdl.app.SDLActivity.nativeSetenv(Native Method)
            at org.kivy.android.PythonActivity$UnpackFilesTask.onPostExecute(PythonActivity.java:157)
            at org.kivy.android.PythonActivity$UnpackFilesTask.onPostExecute(PythonActivity.java:102)
            at android.os.AsyncTask.finish(AsyncTask.java:771)
            at android.os.AsyncTask.access$900(AsyncTask.java:199)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:223)
            at android.app.ActivityThread.main(ActivityThread.java:7656)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

这是我第一次使用Android Studio,到目前为止我还没有找到针对此错误的正确解决方案。我将不胜感激任何帮助。

您可以在以下链接下载APK:

https://drive.google.com/file/d/1B8D2fbUg5-3nlkJHFDJHrwAciKPtftkF/view?usp=sharing
android apk buildozer
2个回答
2
投票

错误消息

No implementation found for void org.libsdl.app.SDLActivity.nativeSetenv(java.lang.String, java.lang.String) (tried Java_org_libsdl_app_SDLActivity_nativeSetenv and Java_org_libsdl_app_SDLActivity_nativeSetenv__Ljava_lang_String_2Ljava_lang_String_2)
表示您的应用程序加载的
.so
库均未提供实现本机方法
org.libsdl.app.SDLActivity.nativeSetenv
的匹配方法。

因此,您的应用程序的一个库必须分别导出名为

Java_org_libsdl_app_SDLActivity_nativeSetenv
的方法
Java_org_libsdl_app_SDLActivity_nativeSetenv__Ljava_lang_String_2Ljava_lang_String_2
,并且必须使用
System.loadLibrary
加载该库,然后才能调用本机方法。

比较libs子文件夹,很明显APK有问题:

lib\arm64-v8a\libtensorflowlite_jni.so
lib\armeabi-v7a\libcrypto1.1.so
lib\armeabi-v7a\libffi.so
lib\armeabi-v7a\libhidapi.so
lib\armeabi-v7a\libmain.so
lib\armeabi-v7a\libpython3.8.so
lib\armeabi-v7a\libSDL2.so
lib\armeabi-v7a\libSDL2_image.so
lib\armeabi-v7a\libSDL2_mixer.so
lib\armeabi-v7a\libSDL2_ttf.so
lib\armeabi-v7a\libsqlite3.so
lib\armeabi-v7a\libssl1.1.so
lib\armeabi-v7a\libtensorflowlite_jni.so
lib\x86\libtensorflowlite_jni.so
lib\x86_64\libtensorflowlite_jni.so

正如您所看到的,

armeabi-v7a
文件夹中的库比其他架构的文件夹中的库多得多。这意味着对于除 armv7 之外的所有架构,您的应用程序都会缺少大量库。所以你需要一个支持除armv7之外的其他架构的libsdl版本。


0
投票

我得到了这个:java.lang.UnsatisfiedLinkError:找不到 void com.roblox.engine.jni.NativeGLInterface.setIrisJoinTimeEnabled() 的实现(尝试了 Java_com_roblox_engine_jni_NativeGLInterface_setIrisJoinTimeEnabled 和 Java_com_roblox_engine_jni_NativeGLInterface_setIrisJoinTimeEnabled__) - 是否已加载库,例如系统.loadLibrary? 在 com.roblox.engine.jni.NativeGLInterface.setIrisJoinTimeEnabled(本机方法) 在 com.roblox.client.ActivityNativeMain.onCreate(SourceFile:41) 在 android.app.Activity.performCreate(Activity.java:8538) 在 android.app.Activity.performCreate(Activity.java:8502) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1437) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3878) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4043) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2437) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loopOnce(Looper.java:211) 在 android.os.Looper.loop(Looper.java:300) 在 android.app.ActivityThread.main(ActivityThread.java:8294) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1028) java.lang.UnsatisfiedLinkError:找不到 void com.roblox.engine.jni.NativeGLInterface.setIrisJoinTimeEnabled() 的实现(尝试了 Java_com_roblox_engine_jni_NativeGLInterface_setIrisJoinTimeEnabled 和 Java_com_roblox_engine_jni_NativeGLInterface_setIrisJoinTimeEnabled__) - 是否加载了库,例如系统.loadLibrary? 在 com.roblox.engine.jni.NativeGLInterface.setIrisJoinTimeEnabled(本机方法) 在 com.roblox.client.ActivityNativeMain.onCreate(SourceFile:41) 在 android.app.Activity.performCreate(Activity.java:8192) 在 android.app.Activity.performCreate(Activity.java:8159) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1341) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3765) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3952) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:106) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2327) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loopOnce(Looper.java:211) 在 android.os.Looper.loop(Looper.java:300) 在 android.app.ActivityThread.main(ActivityThread.java:8285) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074) 每次我打开 Roblox

© www.soinside.com 2019 - 2024. All rights reserved.