【问题标题】:How to force Android application to use either 32bit or 64 bit libraries如何强制 Android 应用程序使用 32 位或 64 位库
【发布时间】:2019-01-06 18:29:50
【问题描述】:

在具有 64 位 ARM 的 Android 设备上,会有许多库的两种变体,32 位和 64 位,它们的性能可能不同。我想知道是否有办法强制应用程序使用 32 位或 64 位库。

【问题讨论】:

  • without native code to run in a specific mode.? 32 bit and 64 bit driver libraries with你在说什么?
  • 已编辑的问题,现在有意义吗?

标签: android android-testing


【解决方案1】:

安装apk时可以指定ABI。

adb install --abi <path to apk>

如果是 ARM 设备,

要在 32 位模式下运行安装使用,

adb install --abi armeabi-v7a <path to apk>

要在 64 位模式下运行安装使用,

adb install --abi arm64-v8a <path to apk>

【讨论】:

  • 很好的答案,但是如果我必须将它作为系统应用推送到有根设备中怎么办?
【解决方案2】:
    1234563你的应用要在 32 位模式下运行,你可以创建一个虚拟的 *.so 文件并将其放在 <your apk name>/libs/armeabi/ 下,以强制 AndroidRuntime 为你的应用创建一个 32 位 VM
  1. 如果你的apk的某些功能是用jni编写的(<your apk name>/libs/文件夹中有*.so文件),你可以使用以下命令使其在64位或32位VM中运行:

    • 要在 32 位模式下运行,因为只会安装 32 位本机库

    adb shell install --abi armeabi-v7a <path to your apk>

    • 要在 64 位模式下运行,因为只会安装 64 位本机库

    adb shell install --abi arm64-v8a <path to your apk>

【讨论】:

  • 这与@Kanna 的回答有何不同?
  • @VC.One 不同之处在于我提供了一种强制纯 java apk 在 32 位或 64 位模式下运行的方法。
【解决方案3】:

https://source.android.com/source/64-bit-builds.html

在你身上试试这个Android.mk

LOCAL_MULTILIB := 32 // or 64

【讨论】:

  • 我猜这个问题还不清楚。如果我有使用 GLES api 的 android 应用程序。系统将同时具有 32 位和 64 位库。我的应用程序是纯java。如何运行我的应用程序以使其使用 32 位库?我猜默认情况下它会选择首选abi。对不起,如果我没有多大意义,我对 Android 不是很熟悉。
猜你喜欢
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 2011-03-08
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
相关资源
最近更新 更多