java.lang.UnsatisfiedLinkError 有意外的 e_machine: 40

use*_*079 5 java android epson

我正在尝试使用适用于 Android 的 ePOS-Print SDK。

它在 ARM 设备上运行良好。只是不在 x86 设备上。

该库仅适用于 ARM 设备还是有办法使其适用于 x86 设备?

04-17 09:11:53.390 10989-12211/at.test.test E/art: dlopen("/data/app/test.test-2/lib/x86/libeposprint.so", RTLD_LAZY) failed: dlopen failed: "/data/app/at.test.test-2/lib/x86/libeposprint.so" has unexpected e_machine: 40

Process: at.calyx.calyxpos, PID: 10989
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/at.test.test/lib/x86/libeposprint.so" has unexpected e_machine: 40
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:989)
at com.epson.eposprint.Builder.<clinit>(Builder.java:17)
Run Code Online (Sandbox Code Playgroud)

Dan*_*n M 6

我尝试在 Android x86 上运行 ARM 应用程序时遇到了非常类似的错误。我可以通过安装绕过它libhoudini

  1. 在安卓上:Settings -> Apps Compatibility -> Enable Native Bridge
  2. 启动终端仿真器(或按Alt-F1
  3. 以 root 身份登录:su -
  4. 跑步 cd ~ /system/bin/enable_nativebridge
  5. 通过检查日志验证是否成功:logcat -T 10
  6. 重新启动并重新安装您的 ARM 应用程序

更多细节

  • 这节省了我的时间。在 android x86 9.0 上,用于配置 **Enable Native Bridge** 的菜单位于 **Android x86 Options** 下。 (2认同)

Ree*_*ena 1

我想这会对你有帮助

放入 gradle.properties 这行

android.useDeprecatedNdk=true;
Run Code Online (Sandbox Code Playgroud)

并在 app/build.gradle 中 defaultConfig 字段中的这一行

   ndk {
                abiFilters "armeabi", "armeabi-v7a","x86"
        }
Run Code Online (Sandbox Code Playgroud)