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

APK 瘦身优化

apktool d students.apk Analyze apk Android studio 2.2之后使用 - 查看apk组成大小,各资源占比 - 查看dex文件组成 - 可以进行apk...优化res,assets文件 手动lint检查,手动删除无用资源 在Android Studio中打开“Analyze” 然后选择"Inspect Code..."...所以建议是让UI去搞,这里可以参考使用lottie-android,如果项目中动画效果的话效果更加明显。...我们可以通过以下方法来实现: 尽量减少第三方库的引用,这个在上面我们已经做过优化了。 避免使用枚举,可能几十个枚举的内存占有量才相当一张图片这样子,优化效果也不会特别明显。...Facebook的redex优化字节码 redex是facebook发布的一款android字节码的优化工具,需要按照说明文档自行配置一下。

1.4K20

Android 构建APK

2, app上线连接生成环境,开发使用开发环境,测试使用测试环境,我想同时安装这3个环境的apk应该怎么办? 这篇文章就是介绍如何解决上述中提出的问题。...APK Flavor定制开发 要想进行APK的定制开发,必须要了解flavorDimensions,flavorDimensions 定义了app中的维度数量。...city的数量 * color的数量 * 2 (Debug/Release) = 12 APK环境开发 Studio工程中,默认有Debug/Release 两种环境,在部分场景中,可能两种环境并不能满足我们的开发需求...// 正式环境 release { //支持混淆 minifyEnabled true //zipalign优化...在定制不同的Flavor 和 BuildTypes 时, 总是会组合出很多其实我们不需要的APK类型,通过下面的方式可以过滤调那些我们不需要的APK,这样看起来也会清爽很多。

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

    APK体积优化有感

    这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情 本文是阅读字节APK优化文章后的思考和总结 Class阶段优化 思路感觉和编译原理差不多,有些优化前端编译器本身就可以支持。...方法调用前后操作数栈应该是一样的所以当调用方法的栈被清除为0时代表回到了调用该方法之前的操作数栈中 2.记录每次入栈的类型,之后对操作数栈操作数需要对比是否是有效的操作-1 3.虚方法需要一个this...常量字段消除 编译原理里面也有这项优化技术,javac会自动消除final常量调用处替换,但是kotlin中有例外 对于Kotlin,未声明为const的变量不会进行消除(即使他被定义为final)...将所有 R 以及 R 内部类的以 public static 修饰的域保留,使其不被优化。因此在我们最终的 APK 中,R.class 仍然存在,这造成了我们包体积的膨胀。...因此我们对于 R 的优化,在 DEX 层面上也会有很大的收益。 处理 R文件Field消除

    64530

    Flutter-Apk 大小优化探索

    强烈要求优化 Apk 大小。 ? 既然是探索,前提我还是个刚入 Flutter 坑的小白白,所以嘛,难免不全面,欢迎各位大佬拍砖、指点~ 探索之路 一部曲 首先,我首次打包的方式如下: ?...再次运行 build apk 后,完成输出如下日志: ✓ Built build/app/outputs/apk/release/app-release.apk (23.1MB)....二、so 优化大法(减少 14 MB) 做 Android 的小伙伴知道,对于我们这些小厂没能力搞动态下发 so 的小渣渣而言,只能默默逆向大厂 Apk,看看人家是怎么做的,然后借(抄)鉴(袭)。...这里看到将我们编写的 Dart 代码转化为不同架构下的 so 库,以供原生调用(我是这么猜测的哈)。...apk/release/app-arm64-v8a-release.apk (9.7MB). ✓ Built build/app/outputs/apk/release/app-x86_64-release.apk

    6.3K41

    Android高级开发-APK极致优化

    SVG(Scalable Vector Graphics)可缩放矢量图 使用矢量图代替位图可以减小 APK 的尺寸,因为可以针对不同屏幕密度调整同一文件的大小,而不会降低图像质量。...API 21 (Android L)开始,Android SDK 引入 tint 着色器,可以随意改变安卓项目中图标或者 View 背景的颜色,一定程度上可以减少同一个样式不同颜色图标的数量,从而起到 Apk...is selected based on the state of its view.--> <selector xmlns:android="http://schemas.android.com/<em>apk</em>...比如我们引用的第三方库,特别是Support Library 和 Google Play Services这两个主要的大库,因为国际化的问题,他们都支持了几十种语言,但是对于我们的App来说,我们并不需要这么<em>多</em>,...build.gradle defaultConfig { …… resConfigs 'zh', 'en’,'ja' } 设置后生成的<em>APK</em>资源。

    1.2K40

    「玲珑宝塔」优化 Apk 包大小

    一层镇妖魔(减少 4.1 MB) 来到第一层,我们先来简单分析下是什么造成 Apk 包如此“庞大”? ?...默认语言中设置为中文,且应用也只支持了中文,少了好多东西,爽得很~ 1.2 设置支持的 CPU 架构类型(减少 1.5 MB) 话说这里的 lib 为何兼容了这么的 CPU 架构类型???...貌似 Google 商店现在支持对应的架构模式分发对应的 Apk 包,这点爽的每个包只需要兼容一种就好了。But,ummm。...mViewSpacingLeft -> j int mButtonPanelSideLayout -> K 混淆需注意: Android 四大组件不能混淆; 反射、注解、枚举不能混淆; JS、Native 调用的方法不能混淆...1.4 开启 Zipalign 优化 这块我看的很湿懵逼,估计唯有鸡大行云流水了。简单摘自官方解释: zipalign 是一种归档对齐工具,可对 Android 应用文件进行重要的优化

    84020

    Android性能优化系列之apk瘦身

    Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身。...APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长;对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的),所以apk的瘦身优化也很重要...,本篇博客将讲述apk瘦身的相关内容。...相对于套资源,只使用720P的一套资源,在视觉上差别不大,很多大公司的产品也是如此,但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量了。...注意,这里的“无用”是指调用图片的所有父级函数最终是废弃代码,而shrinkResources true 只能去除没有任何父函数调用的情况,真正起效果只能通过Android Studio自带的 “Remove

    1.1K30

    调用优化

    二、尾调用优化调用之所以与其他调用不同,就在于它的特殊的调用位置。 我们知道,函数调用会在内存形成一个"调用记录",又称"调用帧"(call frame),保存调用位置和内部变量等信息。...这就是"尾调用优化"的意义。 三、尾递归 函数调用自身,称为递归。如果尾调用自身,就称为尾递归。...函数式编程有一个概念,叫做柯里化(currying),意思是将参数的函数转换成单参数的形式。这里也可以使用柯里化。...对于其他支持"尾调用优化"的语言(比如Lua,ES6),只需要知道循环可以用递归代替,而一旦使用递归,就最好使用尾递归。...arguments:返回调用时函数的参数。 func.caller:返回调用当前函数的那个函数。 尾调用优化发生时,函数的调用栈会改写,因此上面两个变量就会失真。

    79350

    图解尾调用优化

    Photo by Benni Asal on Unsplash 尾调用 啥是尾调用? 尾调用就是函数的最后一个步骤调用另一个函数 比方说: ?...20190307171547.png 函数在调用的时候会在调用栈中 push 一个调用帧,每次执行完函数都会逐一弹出调用帧知道所有函数执行完毕,调用栈被清空: 调用栈中的同步代码 1function f1...首先执行 script ,将 main 主程序推入调用栈中并执行,发现需要调用 f3 将 f3 函数推入调用栈中,执行 f3,发现需要调用 f2 将 f2 函数推入调用栈中,执行 f2, 发现需要调用...将等待执行的回调函数推入宏任务列表,将 setTimeout 弹出调用栈 继续执行代码发现需要执行 console.log 将任务推入调用栈 执行 console.log 打印 2 并弹出调用栈 script...最后将 console.log 弹出调用栈,代码执行完毕 尾调用优化 每次在函数被调用的时候,内存都会保存调用帧。

    46710

    递归尾调用优化

    之前分享过递归,其中有一个优化就是尾调用。 先明确尾调用的概念: 尾调用(Tail Call)是函数式编程的一个重要概念,就是指某个函数的最后一步是return调用另一个函数。...注意,并不是所有的函数都能尾调用优化,要看你这个函数需不需要使用某些上个函数的变量或者什么的。...尾调用优化其实很大一部分就是递归函数在使用,因为递归函数调用的时候非常耗费内存,可能需要保存成百上千调用栈,很容易内存溢出。如果是尾递归就只有一个调用栈,能把复杂度O(n)的变成O(1)。...Function) { f = f(); } return f; } 执行: trampoline(sum(1, 100000)) 你会发现,很多递归函数都能改成类似的,然后使用蹦床函数实现尾调用优化...而ES6对尾调用有什么优化?就是函数默认值,在一些场景下,比如阶乘的递归,采用默认值实现尾递归优化。 (完)

    69310

    如何优化调用

    需要了解如何优化尾递归的话,我们需要从最开始讲起。 什么是尾调用 什么是尾递归 如何优化尾递归 尾调用 从字面理解,自然而言就是在函数的尾部返回一个函数的调用,通常来说,指的是函数执行的最后一步。...如果递归链过长,可能会stack overflow 那么我们是不是可以做优化呢,这就可以涉及上面提到的尾调用,它的原理是啥呢?...因为尾调用时函数的最后一部操作,所以不再需要保留外层的调用帧,而是直接取代外层的调用帧,所以可以起到一个优化的作用。...手动优化 既然我们知道了,很多浏览器对于尾递归的优化支持的浏览器并不多,那你会好奇,当我们使用尾递归进行优化的时候,依然出现栈溢出的错误,那么我们如何解决呢??...对于尾递归而言,我们需要了解优化它的原理,如果有必要的话,将递归的形式写成迭代的形式,通过迭代方式,降低重复值的计算,当然了,这个过程,有时候是比较难的,值得我们去思考。 参考 尾调用和尾递归

    90330

    软件测试|解析 apk 基本信息和方法调用

    这篇文章讲解如何解析一个 apk 文件,主要从下面几方面介绍:● 解析前准备环境介绍● 解析出 apk 的一些基本信息● 解析出方法调用图01解析前环境介绍使用语言:python使用的python库:androguard...= apk.get_app_name() # 获取当前 appName03解析出方法调用图有兴趣可以参考https://www.jianshu.com/p/c753184ac90c 图片我们可以使用...但是和我们最终目标还有有点远,就是获取的方法调用图。我们最后一个 dx 即将登场。...meth.get_xref_to(): print("to -> {} -- {}".format(call.class_name, call.name))图片from 是方法的调用来源..., to 是当前方法中执行了那些方法, 我们可以根据这样的关系, 来构建整个应用的类,方法之间的调用图。

    66530

    机房RPC调用实践

    最近做的项目是和机房有些关系,不过不是做活,而是将数据从一个机房拆到多个机房,业务上又允许用户异地访问,即数据分业务数据和用户数据,业务数据跟业务发生的机房绑定,用户数据只有一份,按需要跨区访问...还有原来的场景,在没做机房改造之前,下订单也要查询用户信息,不过这里是同机房调用了; 上面就是RPC调用的2种典型场景,RPC调用系统上要支持同机房调用也支持跨机房调用,什么时候是同机房,什么时候是跨机房...路由表是典型的写少读的场景,这里不具体讨论路由表的设计,注意数据的规模和一些一致性要求细节即可。...,即Consumer直接调用Provider,现在要变成Consumer——》Provider——》最终Provider三层调用关系,性能下降的厉害; 3、系统改造成本低 为了支持Consumer...这里再说下通过这个项目对中间件的理解,中间件应该要解决大部分常见问题,对于一些特殊的问题应该预留接口让接入方来实现以保持良好的扩展性,而不是把所有的实现细节都抛给接入方; 我们在做这个机房调用的时候刚开始的时候想着路由的过程其实就是根据输入参数算出一个机房的

    1.3K20

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

    基于这种快速开发的现状,我们app优化前已经有87.1M了,包大了,运营说这样转化不高,只能好好搞一下咯。优化过后包大小为23.1M(优化了73%,不要说我标题党)。...确实有点震惊,一下子包小了这么,从87.1M到51.9M,容我好好算算少了多少M.赶快让测试帮忙测一下。基于之前的理论知识,心里还是有点底。果然,测试效果和之前是一样的。心里的石头先落下罗。 2....所以建议是让UI去搞,这里可以参考使用lottie-android,如果项目中动画效果的话效果更加明显。当然这就要辛苦我们UI设计师大大了。 5....总结 好了,说道这里基本上就结束了,apk包从87.1M减小到了23.1M(优化了73%,不要说我标题党)已经差不多了,关于第四部其他部分的优化我是没有进行再操作的。...所以我暂时就不进行优化了。如果再上面提到的部分通过所有将所有非启动页面首页之外的所有资源,so库放服务端,理论上apk包大小能在10M以内这样子。当然我们有做到就不多加评价了。

    1K40

    图站点性能优化

    传输优化 加载策略 提高网站性能的一项重要指标是提高访问速度,这与用户留存率和转换率呈正相关。...在图站点中,图片资源对于页面的加载和整体的用户体验有更明显的影响。最常见的问题是图片加载慢。对应的优化策略包括: 图片优化:进行图片压缩/缩放和选择正确的图片格式。...网络传输优化:使用 HTTP/2 和 CDN 服务。 图片加载策略优化:按需使用懒加载、预加载,响应式图片加载等策略。 知识点深入 1....网络传输优化 2.1 使用 HTTP/2 协议 使用 HTTP/1.X 协议时,浏览器有同源最大并发连接数的限制,且 HTTP/1.X 不支持多路复用,因此一个图站点想要获得较完整的视觉呈现,会有一定程度的延迟...图片加载策略优化 3.1 图片懒加载 懒加载的策略是推迟加载离屏图片资源,从而减少资源请求数。实现懒加载的主流方案有: 使用 img 标签的 loading 属性。

    1.4K00
    领券