CPU架构的指令兼容性
mips(已被废弃)
- mips64
armeabi
- armeabi-v7a
- arm64-v8a
- x86
- X86_64
- armeabi-v7a
兼容模式运行的一些问题
兼容模式运行的Native库无法获得最优性能
兼容模式容易出现一些难以排查的内存问题
系统优先加载对应架构目录下的so库
为App提供不同架构的Native库
例如:
libs
Armeabi-v7a
libmath.so
libmath_v8a.so
libui.so
线上监控问题,针对性提供Native库
非启动加载的库可云端加载
优化so体积
默认隐藏所有符号,只公开必要的
- fvisibility=hidden
禁用C++Exception & RTTI
- -fno-exceptions -fno-rtti
- 不要使用iostream,优先使用Android Log
- 使用gc-sections去除无用代码
- LOCAL_CFLAGS +=-ffuntion-sections -fdata-sections
- LOCAL_LDFLAGS += -Wl, –gc-sections
构建时分包
1 | splits{ |
通过CPU架构分发安装包
开发者需要注意
- 尽量不在Native层开发,降低问题跟踪维护成本
- 尽量优化Native库体积,降低开发者的使用成本
- 必须提供完整的CPU架构依赖