首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

公司项目在不断改版迭代,代码在不断累加,终于apk包不负重负了,已经到了八十多M了。可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现阶段。...优化过后包大小为23.1M(优化了73%,不要说标题党)。好了好了,要阐述apk超级无敌魔鬼瘦身之心得了。 目录如下图: ? 文章主要内容从理论出发,再做实际操作。...结构分析 首先上传一张瘦身前通过Analyze app分析出来图片(打开方式:Android Studio下 ——> Build——> Analyze app): ? APK包结构如下: 1....上一波处理后效果图: ? 这里说下,因为项目中有使用到ffmpeg库,之前导入第三方放在assets文件夹下,重写编写后so库文件放在lib文件夹下,所以lib文件夹反而大了。...优化res,assets文件大小 1. 手动lint检查,手动删除无用资源 在Android Studio打开“Analyze” 然后选择"Inspect Code..."

93740

APK瘦身-是时候给App进行减负了!

前言 APK瘦身即是对APK大小进行压缩策略,减小APK安装包大小,更小安装包更有助于吸引用户安装。前一段时间司某一App进行APK瘦身,最终也达到了减小10M目标,现做一个简单总结记录。...需要对一个App进行瘦身,首先最重要就是对App大小有一个大致了解,最直观看到App大小就是通过Android Studio自带Analyzer进行APK分析。...使用方法: 1、将一个apk拖动到Android Studio编辑器窗口 2、在Project窗口中,双击build/output/apks/目录下apk 3、在菜单栏中选择选择Build >...动图功能,然后减少Fresco库依赖,同样可以减小so大小。...所以可以有选择地保留某些架构so,从而降低lib文件夹大小

1.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

APK 瘦身优化

apktool d students.apk Analyze apk Android studio 2.2之后使用 - 查看apk组成大小,各资源占比 - 查看dex文件组成 - 可以进行apk...可以通过上传apk得知: - 文件大小及排行 - Dex方法数、SDK方法数 - 启动时间、内存等 APK 组成 APK包结构如下: lib/:包含特定于处理器软件层编译代码。...resources.arsc:包含已编译资源。该文件包含res/values/ 文件夹所有配置XML内容。打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。...优化res,assets文件 手动lint检查,手动删除无用资源 在Android Studio打开“Analyze” 然后选择"Inspect Code..."...都存在且是有内容 minifyEnable true && shrinkResources true 资源文件在但是没有内容大小都变成67字节,layout文件内容被清空 减少chasses.dex大小

1.4K20

APK瘦身看这一篇文章就够了

前言 之前在微信群里面有说到,随着Android开发越来越成熟,关于Android方面的技术文章越来越多,作为开发者不缺资源,缺乏是系统知识和指导,对于学生和上班族来讲,更缺乏筛选信息时间...下面分别就每一个文件或者文件夹该如何减小其大小做介绍: classes.dex源码 代码混淆可以减小该文件大小,因为混淆后代码将较长文件名、实例、变量、方法名等等做了简化,从而实现字节长度上优化...ID; res资源文件夹 这是APK瘦身过程优化大头,一个APK里面最占用空间就是多媒体资源,图片、音频、视频主要放在res和assets文件夹下: 通过Android Studio→Inspect...,可以考虑用7zip压缩工具对该文件进行压缩,在程序运行时解压; lib文件夹 只提供对主流架构支持,比如arm,对于mips和x86架构可以考虑不支持,这样可以大大减小APK体积...Android应用增量更新开源项目 Android资源混淆工具 主流开源项目的混淆规则列表 字体资源文件压缩神器FontZip 统计APK文件class、method、field、string数量 AndroidUn7zip

90120

Android逆向 | 基础知识篇 - 03 - 关于 Android 体系结构学习

Android Studio 自动使用调试密钥库配置新项目。 如果您构建是打算向外发布发布版本应用,打包器会使用发布密钥库签署您应用。...要创建发布密钥库,请阅读在 Android Studio 中签署您应用 在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,减少其在设备上运行时内存占用。...安卓项目的文件结构与安卓apk文件结构存在着一一对应关系。 安卓应用开发本质是:将源代码和各种资源文件编译整合成一个apk。 安卓逆向本质是:想办法将apk转化为源代码和资源文件。...简单来说,apk就是一个带有签名zip格式压缩包,签名为了保护开发者权益和标识apk。做为android逆向学习第一步,了解apk文件结构和生成过程是很有必要。...为了提升apk安全性能,现在很多安卓应用程序核心代码都采用NDK开发,所以生成apk中会多出一个lib文件夹用于存放so文件。

1.3K40

ndk代码支持断点调试

0、首先,在app/src/main/中新建cpp文件夹,将原工程jni文件全部复制过来到cpp文件夹。 ? 1、配置ndk编译参数。...两种配置方法区别在于,配置defaultconfigndkabifilters参数,android studio会将所有的架构so打包到一个apk,但是如果使用productflavors,将会根据不同架构打包不同...使用android studio编译c/c++不会单独生成so,不过可以使用android studioapk 分析工具查看生成so。...选择build->analyze apk,从app/build/outputs/apk/目录中选择apk并点击ok。这时候可以在lib//下看到相应so ?...此时我们可以直接在android studio编辑c++代码,支持自动补全,方法跳转。以及ide所有的其它常见操作,格式化代码,重构变量名,查看引用等 ? ?

3.7K61

Android性能优化(十)之App瘦身攻略

2.2.1 Android Studio Analyze APK Android Studio 2.2之后有一个功能Analyze APK,方便简单,功能还是Google自带靠谱; 查看apk任意文件大小...而从header-item表method-ids-size字段可以看出,方法数缩减之后,可以减少方法列表大小;同时,方法在Dex文件占用空间也减少了,App自然被瘦身。...4.3 对图片进行压缩 之前项目里发现过文件大小过1M图片,可能是由于UI同学和RD同学双重疏忽,导致如此大图片到了项目中,对Apk体积影响自然不言而喻。...可以使用矢量图形来创建独立于分辨率图标和其他可伸缩图片。使用矢量图片能够有效减少App图片所占用大小,矢量图形在Android中表示为VectorDrawable对象。...每一个Android应用所支持ABI是由其APK提供.so文件决定,这些so文件被打包在apk文件lib/目录下。 So常见场景:加解密算法、音视频编解码、核心代码等。

1.6K30

Flutter常见开发问题

如果你完全喜欢拖拽,那么 Flutter Studio推荐一个很棒资源,它可以帮助你通过拖放生成布局。这是一个让印象深刻工具,很想看看它是如何发展。...Flutter 项目中主要有 3 个文件夹libandroid 和 ios。'lib' 负责处理您 Dart 文件。...Android 和 iOS 文件夹存在是为了在各自平台上实际构建应用程序,并在其上运行 Dart 文件。它们还帮助您向项目添加权限和特定于平台功能。...Flutter 应用程序仍然会比 Android 应用程序大一点,但它相当小,而且 Flutter 团队一直在寻找减少应用程序大小方法。...所以对于大多数应用,认为不会有大问题。 您需要记住一件事是 Flutter 还依赖于 Android 和 iOS 项目,您至少需要熟悉其中项目结构。

6.7K20

Flutter常见开发问题

但是 Flutter 社区很多人更喜欢代码方式,但这并不意味着无法实现拖拽。如果你完全喜欢拖拽,那么 Flutter Studio推荐一个很棒资源,它可以帮助你通过拖放生成布局。...Flutter 项目中主要有 3 个文件夹libandroid 和 ios。'lib' 负责处理您 Dart 文件。...Android 和 iOS 文件夹存在是为了在各自平台上实际构建应用程序,并在其上运行 Dart 文件。它们还帮助您向项目添加权限和特定于平台功能。...Flutter 应用程序仍然会比 Android 应用程序大一点,但它相当小,而且 Flutter 团队一直在寻找减少应用程序大小方法。...所以对于大多数应用,认为不会有大问题。 您需要记住一件事是 Flutter 还依赖于 Android 和 iOS 项目,您至少需要熟悉其中项目结构。

6.8K30

Flutter-Apk 大小优化探索

强烈要求优化 Apk 大小。 ? 既然是探索,前提还是个刚入 Flutter 坑小白白,所以嘛,难免不全面,欢迎各位大佬拍砖、指点~ 探索之路 一部曲 首先,首次打包方式如下: ?...再来看 Apk 图片占比以及降低到 1%: ? 最终 Apk 大小直接减少了 0.7 MB,还是比较爽。...lib 占比也从原来 86.4%,19.6 MB 直接减少为 67.2%,大小 6.3 MB。 ? 三、混淆大法好(减少 0.4 MB) 还记得 Android 混淆魅力吗?...增加逆向难度; 减少 Apk 大小; 。。。...同样也在项目根目录下生成了符号文件: ? 相比一开始 23.8 MB,减少了 1.9 MB。那么我们直接针对不同 CPU 生成对应 Apk 并添加混淆结果又是怎样呢?

6K41

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

但你不应该从你应用程序读取它,因为Android包管理器安装APK时,如果在对应lib/ABI目录存在.so文件的话,会自动选择APK为对应系统ABI预编译好.so文件。...Android Studio工程放在jniLibs/ABI目录(当然也可以通过在build.gradle文件设置jniLibs.srcDir属性自己指定) Eclipse工程放在libs/ABI...目录(这也是ndk-build命令默认生成.so文件目录) AAR压缩包位于jni/ABI目录(.so文件会自动包含到引用AAR压缩包APK) 最终APK文件lib/ABI目录...如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行时候去加载不同平台对应so,这是较为完美的一种解决方案,但是有时候为了减少apk大小,不会同时设置...即达到了减少APK大小目的,又能达到适配ARMv7等架构以便使用其架构一些新特性目的。 十一.so库开发过程一些错误汇总!

2.2K10

Android性能优化之APK 极限压缩(资源越多,效果越显著)

那么就会出现打包后 APK 文件越来越大,如果突然有一天你们老板或领导叫你优化 APK 大小,你还不知道怎么优化那就有点说不过去了,这篇文章咱们就来一起分析并优化 APK 体积大小吧。...先上图看下优化后效果 ? 分析 APK 资源占用 注意: 是在 GitHub 找了一个人气比较高开源项目,需要的话自己可以点击下载,自己动手尝试一番. ?...分析工具直接用 AS Build/Analyze APK 从上面图中得出 assets > classes.dex > res > lib 其中资源文件占用最大。...WebP 最初在2010年发布,目标是减少文件大小,但达到 和 JEPG 格式相同图片质量,希望能够减少图片档在网络上发送时间。...为什么使用 AndResGuard 在以往开发,我们通常只混淆了代码,资源文件却暴露在他人面前,res 文件夹下所有文件名可读性过强。 使用后效果 ? ?

3.4K30

Android APK 瘦身 - JOOX Music项目实战

如图,我们只需要将要分析APK拖入到Android Studio,通过该工具我们可以清楚观察到我们APK各个部分所占比重是多少,而且通过目录索引我们可以快速定位出导致APK变大是哪些文件从而加快我们...开个玩笑^_^ b) JOOX在开发过程碰到上述情况,采用方法是将我们需要代码部分提取出来,并重新生成jar再导入我们工程,这样虽然操作麻烦了一些,不过也能减少很大一部分APK大小。...资源混淆 关于资源混淆,其核心就在于对APKresources.arsc文件修改,大家都知道,Android项目中res目录下每个资源都会有其对应ID,而ID在R文件下关联着资源名称(R.string.xxx...就拿JOOX项目的一个需求来说,UI给图片统一PNG格式,整个文件夹包含15张切图,大小2.88M…这要直接放进去别说leader要砍了,赶紧跑路才是真的。...我们将APK拖入Android Studio,即可看见APK各部分所占用大小,然后通过查看res下资源查找占用大图片。如下图: ?

1.2K60

❤️Android 应用诞生 ❤️ 只需两幅图

Android Studio 使用调试密钥库自动配置新项目。 3.2如果你正在构建你打算在外部发布应用程序发布版本,则打包程序会使用发布密钥库对你应用程序进行签名。...开始新项目时,Android Studio 会自动为您创建其中部分文件,并为其填充合理默认值。...lib/:包含特定于处理器软件层已编译代码。此目录包含每种平台类型子目录, armeabi、armeabi-v7a、arm64-v8a、x86、x86_64 和 mips。...需要使用工具 jarsigner 对其进行签名,因为 Android 系统不会安装没有进行签名程序。签名之后会生成 META_INF 文件夹,此文件夹中保存着跟签名相关各个文件。...它对 apk 未压缩资源(图片、视频等)进行对齐操作,相对于文件开头都是对齐。这样一来,你便可直接通过 mmap(2) 访问这些文件,而无需在 RAM 复制相关数据并减少了应用内存用量。

98710

使用 Android Studio 搭建安卓开发环境

大家好,又见面了,是你们朋友全栈君。 使用 Android Studio 搭建安卓开发环境,方便、快捷。...因为 Android SDK 等下载已经集成到 Android Studio 安装 1、官网下载 Android Studio 编辑器 首先,访问谷歌中国开发者网站下载 Android Studio...标准版 选择编辑器 UI界面主题风格,这里选择了 Darcula 修改 Android SDK 安装目录 安卓模拟器 RAM 大小设置,这里可根据自己情况和电脑内存来定,本人使用电脑是16g...构建完成后,点击下图中 Build Apk(s) 编译打包apk文件 打包成功 APK 文件在项目所在工作区 app\build\outputs\apk\debug 文件夹下 这里是 E:\AndroidStudioProjects...文字,原因如下 打开 MainActivity 代码 进入到 R.layout.activity_main 文件 看到这个,读者应该就明白了,这个xml文件在res,layout 文件夹

1.3K30

Android利用SurfaceView显示Camera图像爬坑记(五) -- 在现有项目中加入NDK配置

《OpenCV4AndroidNDK开发(一)--- OpenCV4.1.0环境搭建》这篇我们是新建项目中直接选择了包含C++,本篇主要是介绍怎么在现在项目加改为使用JNI方式。...实现方式 添加CPP相关文件夹和文件 首先在我们项目的目录app/src/main下建立一个cpp文件夹 ? 进入cpp目录下我们把别的项目CMakeList.txt文件拷贝过来 ?...如果没有配置可以自己新建一个CMakeList.txt,下面是CMakeList.txt配置,这个配置是直接关联我们OpenCV库,取自《OpenCV4AndroidNDK开发(一)--- OpenCV4.1.0...${log-lib}) 然后我们在cpp文件夹下再建一个native-lib.cpp文件,这个文件名主要是根据CMakeList.txt里面配置相同,我们也可以改别的名,不过CMakeList.txt...在android下面加入OpenCVLib目录 //加上 sourceSets{ main{ //当前这个目录下库文件会被调用并且被打包进apk

87620
领券