首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

APK 瘦身优化

该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a。..."      }     armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生)....而许多基于 x86设备也可运行 armeabi-v7a 和 armeabi NDK 二进制文件。对于这些设备,主要 ABI 将是 x86,辅助 ABI 是 armeabi-v7a。...如果适配版本高于4.1版本,可以直接上面这样写,当然,如果armeabi-v7a不是设备主要ABI,那么会在性能上造成一定的影响。...删除翻译资源,保留中英文 尝试将andorid support库彻底踢出你的项目。 尝试使用动态加载so库文件,插件化开发。 将大资源文件放到服务端,启动后自动下载使用。

1.4K20

Android性能优化之APK瘦身详解(瘦身73%)

APK包结构如下: 1. lib/:包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。...: 看上面图分析,armeabi-v7主要不支持ARMv5(1998年诞生)和ARMv6(2001年诞生).目前这两款处理器的手机设备基本不在我公司的适配范围(市场占比太少)。...而许多基于 x86设备也可运行 armeabi-v7a 和 armeabi NDK 二进制文件。对于这些设备,主要 ABI 将是 x86,辅助 ABI 是 armeabi-v7a。...对了,别问我为什么assets文件夹下为什么还有12.6M资源,因为很多.mp3都是第三方的人脸识别必备配置文件,我也很无奈。 ? 2. 优化res,assets文件大小 1....删除翻译资源,保留中英文 尝试将andorid support库彻底踢出你的项目。 尝试使用动态加载so库文件,插件化开发。 将大资源文件放到服务端,启动后自动下载使用。 3.

93940

深入探索 Android 包瘦身(下)——终篇

目前,Android 一共 支持7种不同类型的 CPU 架构,比如常见的 armeabi、armeabi-v7a、X86 等等。...2、So 移除方案优化版 上面我们说到了想要完美支持所有类型的设备代价太大,那么,我们能不能采取一个 折中的方案,就是 对于性能敏感的模块,它使用到的 So,我们都放在 armeabi 目录当中随着 Apk...发出去,然后我们在代码中来判断一下当前设备所属的 CPU 类型,根据不同设备 CPU 类型来加载对应架构的 So 文件。...这里我们举一个小栗子,比如说我们 armeabi 目录下也加上了 armeabi-v7 对应的 So,然后我们就可以在代码当中做判断,如果你是 armeabi-v7 架构的手机,那我们就直接加载这个 So...3)、So:保留 Armeabi、更优方案。

2K10

android开发 加载so库的解析和出现的各种错误分析

七.为什么一般的项目中看到armeabi文件夹? 因为所有的x86/x86_64/armeabi-v7a/arm64-v8a设备支持armeabi架构的.so文件。...八.那我们是不是放一种armeabi就够了? 事实上并不是:这不只影响到函数库的性能和兼容性。x86设备能够很好的运行ARM类型函数库,并不保证100%不发生crash,特别是对旧设备。...CPU之间的架构兼容 ARMv5 设备支持armeabi ARMv7 设备支持 armeabi 和 armeabi-v7a ARMv8 设备支持 armeabi-v7a、armeabi 和 arm64...-v8a X86 设备支持 armeabi(性能有所损耗) 和 x86 x86_64 设备支持 x86 和 x86_64 mips 设备: 支持 mips mips_64 设备支持 mips 和...设备上系统会把apk中libs目录下x86的SO,拷贝到应用的私有目录下。

2.2K10

再谈Android动态链接库

简介 早期的Android系统几乎支持ARMv5的CPU架构,不过到目前为止支持7种不同的架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8...在x86设备上,libs/x86目录中如果存在.so文件的 话,会被安装,如果不存在,则会选择armeabi-v7a中的.so文件,如果也不存在,则选择armeabi目录中的.so文件(因为x86设备也支...ABI和CPU的关系 在使用so库应该注意:很多设备支持多于一种的ABI,当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。...你不应该从你的应用程序中读取它,因为Android包管理器安装APK时,会自动选择APK包中为对应系统ABI预编译好的.so文件。...支持 支持 ARMv7 支持 支持 支持 MIPS 支持 MIPS64 支持 支持 x86 支持 支持 支持 x86_64 支持 支持 支持 说明

2.4K70

安卓so库你应该注意的事

下面就来扯一下安卓cpu 早期的Android系统几乎支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!...很多设备支持多于一种的ABI。例如ARM64和x86设备也可以同时运行armeabi-v7a和armeabi的二进制包。...最好是针对特 定平台提供相应平台的二进制包,这种情况下运行时就少了一个模拟层(例如x86设备上模拟arm的虚拟层),从而得到更好的性能(归功于最近的架构更新, 例如硬件fpu,更多的寄存器,更好的向量化等...在x86设备上,libs/x86目录中如果存在.so文件的 话,会被安装,如果不存在,则会选择armeabi-v7a中的.so文件,如果也不存在,则选择armeabi目录中的.so文件(因为x86设备也支...事实上并不是:这不只影响到函数库的性能和兼容性。 x86设备能够很好的运行ARM类型函数库,并不保证100%不发生crash,特别是对旧设备

1.1K20

成功逆袭:越来越胖怎么能忍,我的APK瘦身之路!

,目前有ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi资源文件夹,可根据自己app的用户设备选择支持2-3种即可(当然一套也行) 高版本的gradle已不再支持通过resConfigs...保留"zh-rCN", "zh-rHK", "zh-rTW", "en" 减少不必要的语言(80种减到5种,有一个default)apk可减少0.61M ?...架构支持 Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64.../arm64-v8a设备支持armeabi架构的.so文件,x86设备能够很好的运行ARM类型函数库,并不保证100%不发生crash,特别是对旧设备。...比如:微信、微博、QQ保留了armeabi,Facebook、Twitter、Instagram保留了armeabi-v7a 假设支持了armeabi,如果有特殊要求(比如视频应用)需要用到部分armeabi-v7a

65320

关于so文件你需要知道的知识「建议收藏」

很多设备支持多于一种的ABI,例如ARM64和x86设备也可以同时运行armeabi-v7a和armeabi的二进制包。...最好是针对特定平台提供相应平台的二进制包,这种情况下运行时就少了一个模拟层(例如x86设备上模拟arm的虚拟层),从而得到更好的性能(归功于最近的架构更新,例如硬件fpu,更多的寄存器,更好的向量化等...我们可以通过Build.SUPPORTED_ABIS得到根据偏好排序的设备支持的ABI列表。...5.2 针对x86 目前市面上的x86机型,为了兼容arm指令,基本都内置libhoudini模块,即二进制转码支持,该模块负责把ARM指令转换为x86指令,所以如果是出于Apk包大小的考虑,并且可以接受一些性能损失...6.2 手机设备没有空间 在so正确生成情况下,会根据设置的支持so库框架生成对应的库。

2.2K10

Android的NDK开发中的UnsatisfiedLinkError

仔细一看,我的jniLibs中确实只有一个armeabi-v7文件夹,于是我添加了如下的文件夹: image.png 然后在各个文件夹中,都把我的so文件放了一份。..."(后面还可以加其他的,但是我这里加了x86就可以跑了) } } buildTypes { …… } sourceSets.main { jni.srcDirs = ['src..."(后面还可以加其他的,但是我这里加了x86就可以跑了) } 之后,等于对原来的jni中的文件夹做了一个筛选,选入了这里标识的"armeabi-v7a"和"x86",所以不会再导入arm64...中的文件,因此也不会出错了(arm64中的自然都应该是64位的库,而"armeabi-v7a"和"x86"则可以是32位的) 不过我还是很疑惑,为什么这个破手机提示我在下面的文件夹中没有找到so库,然而我加的文件夹是...x86啊,跟这些文件夹也搭不上关系…不知道为啥就能跑起来了。

97140

APK瘦身全面总结——如何从32.6M到13.6M

为什么要使用TinyPNG? PNG是有用的,因为它是唯一广泛支持的格式,可以存储部分透明的图像。格式使用压缩,但是文件仍然可能很大。使用TinyPNG缩小您的应用程序和网站的图像。...结果:更好的PNG文件100%支持透明度。有你的蛋糕,吃它了! 它支持到处吗? TinyPNG生成的文件在所有现代浏览器(包括移动设备)上完美显示。仍然需要支持Internet Explorer 6?...x86:支持基于硬件的浮点运算的 IA-32 指令集。...小结 如果项目包含了 armeabi,那么在所有Android设备都可以运行; 如果项目包含了 armeabi-v7a,除armeabi架构的设备外都可以运行; 如果项目包含了 x86,那么armeabi...架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi, armeabi-v7a和x86, 所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案

92760

Android系统目前支持CPU架构都有哪些

代早期的ARM处理器 armeabi-v7a (ARM v7):32位cpu 属于 第7代的 ARM 处理器 从2010年起 arm64-v8a (ARM v8): 第8代、64位ARM处理器 x86...如果连这个文件夹也没有,就抛出异常 如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,注意:如果没有找到,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常 由于向下兼容的特性 高版本的设备可以使用低版本...armeabi的so库, 但是低版本不支持高版本库, 这也就是为什么很多开发商包括微信保留了armeabi的so库,从而兼容市面上所有的设备 保留armeabi存在的问题 所有的x86/x86_64.../armeabi-v7a/arm64-v8a设备支持armeabi架构的.so文件,因此似乎移除其他ABIs的.so文件是一个减少APK大小的好技巧。...事实上并不是:这不只影响到函数库的性能和兼容性 64位设备(arm64-v8a, x86_64, mips64)能够运行32位的函数库,但是以32位模式运行,在64位平台上运行32位版本的ART和Android

2.9K31

Android APK瘦身全面总结——如何从32.6M到13.6M

为什么要使用TinyPNG? PNG是有用的,因为它是唯一广泛支持的格式,可以存储部分透明的图像。格式使用压缩,但是文件仍然可能很大。使用TinyPNG缩小您的应用程序和网站的图像。...结果:更好的PNG文件100%支持透明度。有你的蛋糕,吃它了! 它支持到处吗? TinyPNG生成的文件在所有现代浏览器(包括移动设备)上完美显示。仍然需要支持Internet Explorer 6?...x86:支持基于硬件的浮点运算的 IA-32 指令集。...小结 如果项目包含了 armeabi,那么在所有Android设备都可以运行; 如果项目包含了 armeabi-v7a,除armeabi架构的设备外都可以运行; 如果项目包含了 x86,那么armeabi...架构和armeabi-v7a的Android设备是无法运行的; 如果同时包含了 armeabi, armeabi-v7a和x86, 所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案

1.8K20

谷歌弃用APK包格式,转而使用AAB格式

1, 为何要从 APK 转变为 AAB 一直以来,Android 首选的应用程序包就是 APK,那为什么Android要将安装包的格式从APK转变为AAB呢?有人说是为了应对鸿蒙。...不仅如此,为了兼容更多的设备,一个APK还需适配不同的屏幕密度(320dpi、480dpi 等)、处理器(ARM、ARM64、x86等等。...但在这种情况下,应用开发者便承受太多:不仅要开发应用,还要管理许多 APK支持大量设备。 因此为了省时省力,大多数开发者都会选择构建一个通用 APK,即包含语言包、代码等在内的所有资源。...其次,AAB 的 Play Feature Delivery 功能可自定义将哪些功能模块交付给哪个设备支持安装时交付、按条件交付和按需交付等三种模式。...即使用 Play Asset Delivery 的游戏可通过纹理压缩格式作为交付条件,以便用户获取适合其设备的资源,避免浪费空间或带宽。

1.5K40

Android arm64-v8a、armeabi-v7a、armeabi详解「建议收藏」

一、架构介绍 早期的Android系统几乎支持ARMv5的CPU架构,后面发展到支持七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012...同理方案一,只是又筛掉了一部分老旧设备,在性能和兼容二者中比较平衡 适配 arm64-v8 优点: 性能最佳 缺点: 只能运行在arm64-v8上,要放弃部分老旧设备用户 这三种方案都是可以的...此时最稳妥的方式,就是针对最终打包生成的 APK 文件进行分析,来判断是否需要提供 64 位架构的支持。...第三方aar文件,如果这个sdk对abi的支持比较全,可能会包含armeabi、armeabi-v7a、x86、arm64-v8a、x86_64五种abi,而你应用的其它so支持armeabi、armeabi-v7a...,arm64-v8a这3个包下的so库都打包到一个apk,而不像splits会每一个包打一个apk.

14.6K21

64 位适配黑科技:一键检索未适配的 so 文件

的 ABI 不同的 Android 设备使用不同的 CPU,不同 CPU 支持的 ABI 也不同。...目前,Android 设备支持的 ABI 类型如下: 不同 CPU 支持的 ABI 情况如下: 提示: 通过 Build.SUPPORTED_ABIS 可以得到设备支持的 ABI 列表,并且是按照偏好排序的...为 Android 设备适配 64 位架构 2.1 64 位架构适配的时间节点 海外应用市场早在 19 年就在推进 64 位架构的适配,从 2019 年 8 月 1 日起,在 Google Play 上发布的应用就必须支持...,将接收 64 位版本的 APK; 至 2023 年 12 月底,硬件将仅支持 64 位 APK 2.2 Android 系统 ABI 管理 在安装应用时,PMS 服务将扫描 APK 文件,从中查找出...这两种方法基本可以满足要求,操作上太费时间,也无法直接提示 so 文件是通过哪个组件来集成的 (例如,push.aar 内部集成了 libc++_shared.so,通过 APK 分析无法知晓该 so

75020

ERROR: Conflicting configuration : arm64-v8a in ndk abiFilters cannot be present when split...

添加 64 位的应用版本不仅可以提升性能、为未来创新创造条件,还能针对仅支持 64 位架构的设备做好准备。 按照Android 官网提示进行配置本来很简单的一件事,但是确话费了我好长时间。...在这里记录一下这个错误,防止自己以后再犯 ^ _ ^ 优化ApK大小之ABI Filters 和 APK split 想要打出的 apk 包含多个架构的 so库 需要下面的配置: android {...// 设为true,才能启用ABI拆分机制在打包时根据架构生成不同的apk文件 universalApk false // If true, 构建支持所有平台abi类型,构建一个包...,包含多个架构的so(只要代码中有的都会打进去) include "armeabi-v7a", "armeabi" // 设置所有要支持的abi类型,构建多个包,每个包包含一个架构的...so exclude "x86" // 设置所有不要支持的abi类型 } } } 这种配置是没有办法让打出的 apk 包含自己想要的多种架构的~!

2.7K10
领券