是否可以在没有源代码的情况下将Android jni库从x86转移到x64?

时间:2019-02-01 21:49:50

标签: android java-native-interface

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

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

1 个答案:

答案 0 :(得分:0)

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

不幸的是,对于这类问题,已经很糟糕的解决方案是32位和64位应用程序之间的进程间通信将无法正常工作,因为运行本机代码的应用程序必须为64位。

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

因此,您只有以下选项:

  • 联系图书馆的出版商/所有者,并请求64位二进制文​​件。
  • 寻找另一个可以替换当前库的库。
  • 自己重新编码所需的功能。您可能想要为此拆卸原始库。
  • 在服务器上运行32位库,并使应用程序与服务器通信。可能超级慢,并且需要永久的Internet连接。

我非常确定提供“伪造”的64位二进制文​​件会违反PlayStore的ToS,因此即使首先接受它,您的应用也可能随时被删除。

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