【问题标题】:Is it possible to transfer android jni library from x86 to x64 without having its source code?是否可以在没有源代码的情况下将 android jni 库从 x86 传输到 x64?
【发布时间】:2019-06-26 12:12:33
【问题描述】:

我有一个应用程序,它依赖于一些 ARM 32 位本机库以及我自己的本机库。由于新的 64-bit requirement 我需要在我的 APK 中同时拥有 32 位和 64 位库,但我无法访问这些库的源代码,因此无法编译它们以满足此需求。

我查找了我所依赖的库的 64 位版本,并且确信它们不存在。是否有可能以某种方式将二进制文件从 32 位转换为 64 位,或者创建根本不会加载的假库?

【问题讨论】:

  • 仔细检查一下您是指 Intel x86 到 x64 还是 ARM-32 到 ARM-64。
  • ARM-32 到 ARM-64
  • “或者创建根本不会加载的假库?” 他们被加载。如果您的应用同时包含 32 位和 64 位版本的库,并且它在 64 位设备上运行,则将加载 64 位库。我认为即使尝试显式加载 32 位版本也会失败,但我可能记错了。

标签: android java-native-interface


【解决方案1】:

不,这是不可能的。您的问题类似于: Linking 32-bit library to 64-bit program

遗憾的是,此类问题的解决方案已经很糟糕,即 32 位和 64 位应用程序之间的进程间通信将无法正常工作,因为运行本机代码的应用程序需要是 64 位的。

This solution 将不再起作用,请参阅底部的声明。

所以你只有以下选择:

  • 联系库的发布者/所有者并请求 64 位二进制文​​件。
  • 寻找可能替代当前库的另一个库。
  • 自己重新编码所需的功能。您可能想为此拆解原始库。
  • 在服务器上运行 32 位库并使应用程序与服务器通信。可能非常慢,并且需要永久的互联网连接。

我很确定提供“假”的 64 位二进制文​​件会违反 PlayStore 的服务条款,因此即使它首先被接受,您的应用也可能随时被删除。

但是,如果您愿意冒险,您可以创建自己的 64 位版本的库,您只需要确保链接器得到满足。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多