包体积优化基础
包体积优化基础 APK 瘦身背景 包体积或直接或间接地影响着下载转化率、安装时间、运行内存、磁盘空间等重要指标,所以投入精力扫除积弊、发掘更深层次的体积优化项是十分必要的。 1、下载转化率现在很多大型的 App 一般都会有一个 Lite 版本的 App,这个也是出于下载转化率方面的考虑。 在 2018 年的 Google I/O,Google 透露了 Google Play 上安装包体...
包体积优化基础 APK 瘦身背景 包体积或直接或间接地影响着下载转化率、安装时间、运行内存、磁盘空间等重要指标,所以投入精力扫除积弊、发掘更深层次的体积优化项是十分必要的。 1、下载转化率现在很多大型的 App 一般都会有一个 Lite 版本的 App,这个也是出于下载转化率方面的考虑。 在 2018 年的 Google I/O,Google 透露了 Google Play 上安装包体...
包体积资源优化 资源优化基础 资源优化的对象分为两类: 一是资源查询表 resources.arsc,部分优化操作会涉及到 res/ 及 R 文件的修改,但本质都是从 resources.arsc 出发的; 二是原始资源文件,包括 res/和 assets/。 resources.arsc 优化 resources.arsc resources.arsc 文件结构见:...
包体积优化 - 其他 so 优化 只编译指定平台的 so 一般我们都是给 arm 平台的机器开发,如果没有特殊情况,我们一般只需要考虑 arm 平台的。具体的方法是 app 下的 build. gradle 添加如下代码:只保留 armeabi(前几年) 或者 armeabi-v7a(目前) android { defaultConfig { ndk { ...
包体积优化 - Dex 优化 对于大部分应用来说,Dex 都是包体积中的大头,而且 Dex 的数量对用户安装时间也是一个非常大的挑战 代码层面 一个功能尽量用一个库 比如加载图片库,不要 glide 和 fresco 混用,因为功能是类似的,只是使用的方法不一样,用了多个库来做类似的事情,代码肯定就变多了。 无用功能代码清理 废弃功能 AB Test 实验功能保留一个 ...
App 启动基础 应用启动方式 冷启动 冷启动: 当启动应用时,后台没有该应用的进程(常见如:进程被杀、首次启动等),这时系统会重新创建一个新的进程分配给该应用一旦系统创建了 App 进程,那么 App 进程就会执行以下步骤: 创建 App 对象 (Zygote 进程 fork 出来) 启动 main thread(ActivityThread,创建 Applicati...
首次安装 Google Play Installer appsflyer、应用商店及自有埋点对首次安装定义 应用商店:下载后就算首次安装不管是否打开过 APP appsflyer:下载安装后打开 APP 算首次安装;APP 卸载后重新安装默认 3 个月内不会重新归因安装 自有埋点/page_launch:下载安装后打开 APP 算首次安装;APP 卸载后重新安装算首次安装...
bidi 算法(双向字符)、BidiFormatter 详解及 mashi 适配案例 Bidi 基础 双向字符类型 书写方向是和文字相关,阿拉伯文字从右到左,拉丁文字从左到右。当人们在纸上书写时当然会记得这些规则,那计算机是如何知道的呢?实际上,Unicode 定义了它其中每个字符的方向属性,计算机就是根据这个方向属性来判断该文字的方向。Unicode 方向属性包含三种类型:强字符、弱...
多语言切换 - 重启 App 目标:和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言。 多语言切换注意 ApplicationContext/Activity/Resources.getSystem() 区别 Application/Activity 的 Locale 是分开的要...
Huawei push 华为推送服务官网
App 推送遇到的问题 App 进程被杀死推送收到的情况 不同系统手机的情况 原生态的 Android 系统 App 进程杀死,可以收到推送消息,三星部分手机上也可以 深度定制系统 MIUI 杀死进程收不到 华为 HarmonyOS2.0 也收不到 深度定制系统进程被杀收不到推送解决 在小米、华为、oppo 等手...