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架构依赖