Android studio so文件 配置问题 CPU架构不同 apk缩小

  • android支持的cpu架构(目前是七种)

armeabi第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢   --只支持这个就够了
armeabi-v7a第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能 --只支持这个就够了
arm64-v8a第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit
x86intel 32位,一般用于平板
x86_64intel 64位,一般用于平板
mips少接触
mips64少接触

Android 设备的CPU类型(通常称为”ABIs”)

  1. armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
  2. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
  3. armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
  4. x86: 平板、模拟器用得比较多。
  5. x86_64: 64位的平板。

 

 

  • 问题

这是最新应用的lib下的目录结构,然后同样打旧版本包的lib目录,发现,旧的包只有armeabi-v7a这个文件夹,再查看各个文件夹下的文件,又发现,新版本的包中确实只有在armeabi-v7a文件夹下有libmupdf.so文件,其他文件夹下的都是fresco的so文件,而armeabi-v7a存放的是32位的so文件。

 

只保留某一个abi,比如armeabi

为了包大小的考虑,去掉多余的本地库

build.gradle中

android {
 defaultConfig {
        ndk {
            abiFilters 'armeabi'
            //abiFilters "armeabi","armeabi-v7a" 
        }
    }
}

 

  • 建议

来自于博客:《与 .so 有关的一个长年大坑 》给的建议是:

1.为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致

2.对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹

 

  • 文档

GRADLE构建最佳实践

用GRADLE构建安卓项目已是大势所趋,具体实战中姿势啥的很重要,结合具体应用场景,最佳实践给你最佳的体验

http://www.figotan.org/2016/04/01/gradle-on-android-best-practise/

 

与 .so 有关的一个长年大坑

https://zhuanlan.zhihu.com/p/21359984

 

https://zhuanlan.zhihu.com/p/23102158

转载于:https://my.oschina.net/huqiji/blog/995070

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值