Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
允许在所有CPU上安装apk,并在应用程序中使用仅限ARM的库 我正在使用一些C++特性(通过NDK)构建Android应用程序。这些功能不是强制性的(我有一个较慢的回退解决方案,不使用NDK)。为了保持apk的轻量级,我只想为ARM构建ndk库,并为其他平台使用我的回退解决方案_Android_Architecture_Android Ndk_Arm - Fatal编程技术网

允许在所有CPU上安装apk,并在应用程序中使用仅限ARM的库 我正在使用一些C++特性(通过NDK)构建Android应用程序。这些功能不是强制性的(我有一个较慢的回退解决方案,不使用NDK)。为了保持apk的轻量级,我只想为ARM构建ndk库,并为其他平台使用我的回退解决方案

允许在所有CPU上安装apk,并在应用程序中使用仅限ARM的库 我正在使用一些C++特性(通过NDK)构建Android应用程序。这些功能不是强制性的(我有一个较慢的回退解决方案,不使用NDK)。为了保持apk的轻量级,我只想为ARM构建ndk库,并为其他平台使用我的回退解决方案,android,architecture,android-ndk,arm,Android,Architecture,Android Ndk,Arm,有可能吗?如果是,怎么做?默认情况下,如果我只为ARM提供我的lib,那么运行x86(例如)设备的用户将无法安装该应用程序。我曾经对类似情况感到好奇,并通过将空文件以正确的方式重命名来处理它。因此,在其他cpu体系结构中格式化,并在加载库时捕获异常 try{ System.loadLibrary("some_library"); } catch (Throwable e){ //switch to fallback mode } 调用本机方法时,可能还需要捕获异常 我不确定0

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

我曾经对类似情况感到好奇,并通过将空文件以正确的方式重命名来处理它。因此,在其他cpu体系结构中格式化,并在加载库时捕获异常

try{
    System.loadLibrary("some_library");
} catch (Throwable e){
    //switch to fallback mode
}
调用本机方法时,可能还需要捕获异常


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

好主意,但有一点需要注意:我不是在构建应用程序,而是在构建SDK。想象一下,一个应用程序使用我的SDK和NDK,为所有架构提供了。如果我只提供armeabi-v7并尝试在armv8设备上运行,Android将看到一些.so是为armv8提供的,并且将无法加载我的armv7.so文件。所以不要为armv8设置伪so文件。只是不要为armv8分发任何so文件,Android将尝试使用您的v7.Nope的so文件,如果使用my SDK的开发人员为armv8提供.so文件,Android将只在armv8文件夹中查找,即使my.so不是这样,请将.so文件保存在assets或raw目录中,并尝试使用.so文件的绝对路径加载库。由于我有一个文件,所以暂时不工作。因此,请参考另一个。当试图加载第一个。所以,Android似乎试图加载另一个。所以在通常的文件夹中(它们不在那里)。也许我可以把这些都打包成一个,我需要做一些研究。