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



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

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

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

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

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

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

最新更新