Pau*_*ulT 139 android arm android-ndk armv7
在我当前的项目中,我使用了多个.so文件.这些位于armeabi和armeabi-v7a文件夹中.不幸的是,其中一个.so文件是6MB,我需要减小文件大小.我想使用armeabi文件并删除armeabi-v7a文件夹,而不是有一个胖的APK文件.
根据NDK文档,armeabi-v7a代码是扩展的armeabi代码,可以包含额外的CPU指令.这一切都超出了我的专业知识,但我怀疑为什么人们想要同时拥有armeabi-v7a和armeabi代码.两者都有充分的理由,对吗?
在我的测试设备上,这一切看起来都很好.这些都有ARM v7 CPU.假设现在一切正常可以安全吗?
Nik*_*kov 158
取决于您的本机代码的作用,但v7a支持硬件浮点运算,这会产生巨大的差异.armeabi可以在所有设备上正常工作,但速度会慢很多,并且不会利用新设备的CPU功能.请为您的特定应用程序采取一些基准测试,但删除armeabi-v7a二进制文件通常不是一个好主意.如果您需要减小大小,您可能希望为旧(armeabi)和较新(armeabi-v7a)设备提供两个单独的apks.
psi*_*lia 59
EABI =嵌入式应用程序二进制接口.它是可执行程序必须符合的规范,以便在特定的执行环境中执行.它还指定了用于ARM体系结构的工具链之间互操作所需的编译和链接的各个方面.在这种情况下,当我们谈论armeabi时,我们谈论ARM架构和GNU/Linux OS.Android遵循小端ARM GNU/Linux ABI.
armeabi应用程序将在ARMv5(例如ARM9)和ARMv6(例如ARM11)上运行.如果使用适当的GCC选项构建应用程序,可以使用浮点硬件,例如-mfpu = vfpv3 -mfloat-abi = softfp,它告诉编译器为VFP硬件生成浮点指令并启用软浮点调用约定.armeabi不支持硬浮点调用约定(这意味着FP寄存器不用于包含函数的参数),但仍支持HW中的FP操作.
armeabi-v7a应用程序将在Cortex A8设备(如Cortex A8,A9和A15)上运行.它支持多核处理器,它支持-mfloat-abi = hard.因此,如果使用-mfloat-abi = hard构建应用程序,则许多函数调用将更快.
归档时间: |
|
查看次数: |
102585 次 |
最近记录: |