在我当前的项目中,我使用了多个.so文件.这些位于armeabi和armeabi-v7a文件夹中.不幸的是,其中一个.so文件是6MB,我需要减小文件大小.我想使用armeabi文件并删除armeabi-v7a文件夹,而不是有一个胖的APK文件.
根据NDK文档,armeabi-v7a代码是扩展的armeabi代码,可以包含额外的CPU指令.这一切都超出了我的专业知识,但我怀疑为什么人们想要同时拥有armeabi-v7a和armeabi代码.两者都有充分的理由,对吗?
在我的测试设备上,这一切看起来都很好.这些都有ARM v7 CPU.假设现在一切正常可以安全吗?
我有一些Android的C代码,可以进行大量的低级数字运算.我想知道我应该使用哪些设置(例如我的Android.mk和Application.mk),以便生成的代码可以在所有当前的Android设备上运行,但也可以利用特定芯片组的优化.我正在寻找使用良好的默认Android.mk和Application.mk设置,我想避免使用#ifdef分支丢弃我的C代码.
例如,我知道ARMv7有浮点指令,一些ARMv7芯片支持NEON指令,默认ARM不支持这些指令.是否可以设置标志,以便我可以使用NEON,没有NEON的ARMv7和默认的ARM构建来构建ARMv7?我知道如何做后两者但不是全部3.我对我使用的设置持谨慎态度,因为我认为当前默认设置是最安全的设置以及其他选项有哪些风险.
对于GCC特定的优化,我使用以下标志:
LOCAL_CFLAGS=-ffast-math -O3 -funroll-loops
Run Code Online (Sandbox Code Playgroud)
我检查了所有这三个加速了我的代码.还有其他我可以添加的常见内容吗?
我的另一个提示是将"LOCAL_ARM_MODE:= arm"添加到Android.mk以加快更新的手臂芯片(尽管我对这件事以及旧芯片上发生的事情感到困惑).