Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
openCV 3为Android删除不必要的cpu架构_Android_Opencv - Fatal编程技术网

openCV 3为Android删除不必要的cpu架构

openCV 3为Android删除不必要的cpu架构,android,opencv,Android,Opencv,在Android Studio中添加openCV 3.0作为库之后,我观察到我的apk文件已经增长到50MB以上,这显然是不理想的 解压apk文件显示lib目录中有多个目标体系结构,即arm64-v8a、armeabi、armeabi-v7a、mips、mips64、x86、x86\u 64。它们每个都占用10+MB的空间 从我的源jniLibs目录中删除一些目标体系结构以减小apk大小是否安全?如果是,我应该删除哪些目标?我瞄准的是相对较新的设备,所以只要它在较新的设备上运行,我就可以使用它。

在Android Studio中添加openCV 3.0作为库之后,我观察到我的apk文件已经增长到50MB以上,这显然是不理想的

解压apk文件显示
lib
目录中有多个目标体系结构,即
arm64-v8a、armeabi、armeabi-v7a、mips、mips64、x86、x86\u 64
。它们每个都占用10+MB的空间


从我的源
jniLibs
目录中删除一些目标体系结构以减小apk大小是否安全?如果是,我应该删除哪些目标?我瞄准的是相对较新的设备,所以只要它在较新的设备上运行,我就可以使用它。

根据受欢迎程度对体系结构的总体排名是ARM、x86,然后是MIPS。问题是64位是未来面临的,所以取决于您是否愿意放弃它们,这意味着64位体系结构上的32位代码可能会受到一些性能影响

或者,使用Google Play中的支持向用户提供正确的体系结构APK,以减少大小/下载时间,同时降低相关的复杂性

已更新

第3.3.1节强制要求在64位体系结构上支持32位代码

MUST support the equivalent 32-bit ABI if any 64-bit ABI is supported

谷歌不希望新的64位设备破坏32位二进制文件,因为生态系统中有相当多的32位代码(即游戏)

因此,如果我删除了
x86_64
,那么如果我有
x86
,应用程序仍然可以在
x86_64
上运行?我不介意性能下降,因为它不是主要功能。对于具有
arm64-v8a、armeabi、armeabi-v7a
的arm,可以安全地删除
arm64-v8a
?如果是这样,哪一个会被认为是32位等效的?您可以删除
arm64-v8a
。实际上,
armeabi
armeabi-v7a
都是32位的。第一个用于较旧的ARMv6,而后者用于ARMv7。大多数较新的手机都是ARMv7。如果不包括,Play store应该排除armeabi,但我会检查并告诉用户它不会在该设备上运行。