代码之家  ›  专栏  ›  技术社区  ›  jeck yung

在android应用程序中,是否可以将arm库用于AARC64 cpu?[副本]

  •  2
  • jeck yung  · 技术社区  · 7 年前

    我在github中发现了一个android应用程序,它是由c++编写的,使用jni。在它的jniLibs中,我只找到了“armeabi-v7a”目录,所有jni文件(.so)都存储在这里。我的android手机cpu架构是AARC64(arm-v8a),这个应用程序可以在我的手机上正常运行。但当我在自己的应用程序中移动SDK后,它总是提示错误

    java.lang.UnsatisfiedLinkError:在资源路径()中未找到本机库(com/sun/jna/android-aarch64/libjnidispatch.so)

    但在示例应用程序中,当我删除相同的。所以文件上写着:

    java.lang.UnsatisfiedLinkError:在资源路径()中未找到本机库(com/sun/jna/android arm/libjnidispatch.so)

    那么,会发生什么

    1 回复  |  直到 7 年前
        1
  •  2
  •   cjurjiu    7 年前

    通常,Android设备支持多个ABI,64位设备支持某些32位架构的本机代码构建。

    • Lolipop前: adb shell getprop ro.product.cpu.abi
    • adb shell getprop ro.product.cpu.abilist

    作为命令的结果,您应该会看到几个ABI的列表。

    他们的结论是,当同一个应用程序需要加载64位时,安卓会感到困惑;32位本机库,并且仅尝试加载64位版本,即使依赖项只有其本机代码的32位版本。

    我提到的devblog: https://academy.realm.io/posts/kenneth-geisshirt-tales-developing-sdks-at-scale/

    希望这有帮助