允许在所有CPU上安装apk,并在应用程序中使用仅ARM的lib

时间:2017-10-28 14:06:41

标签: android architecture android-ndk arm

我正在使用一些C ++功能(通过NDK)构建Android应用程序。这些功能不是强制性的(我有一个较慢的回退解决方案,不使用NDK)。为了保持apk轻量级,我想为ARM构建我的ndk lib,并将其我的后备解决方案用于其他平台。

有可能吗?如果是这样,怎么样?默认情况下,如果我仅为ARM提供lib,则运行x86(例如)设备的用户将无法安装该应用程序。

1 个答案:

答案 0 :(得分:1)

我曾对类似情况感到好奇,并通过在其他cpu架构中放置以正确的.so格式重命名的空文件并在加载库捕获异常时处理它。

try{
    System.loadLibrary("some_library");
} catch (Throwable e){
    //switch to fallback mode
}

调用本机方法时,您可能还需要捕获异常。

我不确定0 kB文件是否有效。但小文件> 0KB有效。至少通过删除所有代码来构建不同的.so文件应该生成非常小的.so文件,这肯定会起作用。