包建强的培训课程(6):Android App瘦身优化
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
false
10 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONE
$([{£¥·‘“〈《「『【〔〖〝﹙﹛﹝$(.[{£¥
!%),.:;>?]}¢¨°·ˇˉ―‖’”…‰′″›℃∶、。〃〉》」』】〕〗〞︶︺︾﹀﹄﹚﹜﹞!"%'),.:;?]`|}~¢
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
课程名称:Android App瘦身技术
一、 简介
本课程根据讲师多年来从事App开发的工作经验,以及业界若干App的瘦身经验分享,总结出Android App开发时的若干瘦身经验,是目前最全的App瘦身课程。
本课程在讲解Android App瘦身技术的同时,还涉及Android技术的方方面面,包括:
l APK的文件结构
l 图片的有损压缩和无损压缩技术
l 使用NimbleDroid分析APK
l Facebook的Redex框架
l 微信的AndResGuard框架
l 蘑菇街的ThinR框架
本课程对于千万级用户的App产品和小量的App产品都适用。
本课程适用于具有以下特征的学员:
1、1-2年Android开发经验。
2、对App瘦身技术有一些了解或接触。
二、 培训大纲(1天)
第1天
上午
1.
App发福的原因
2.
Apk的文件结构
l Dex的拆分
l 资源文件
l META-INF
3.
图片的压缩
l 图片压缩工具ImageOptim、ImageAlpha和TinyPNG
l WebP探寻之路
l DPI适配规则
l 不打包没使用的资源
l 表情包的处理
l IconFont和FontZip
l Drawable、Shape和Tint Color
l AAPT对图片压缩的影响
l 二次压缩资源文件
l 音频压缩
l so库的处理
4.
资源混淆工具AndResGuard
l AndResGuard原理
l AndResGuard实战
5.
使用NimbleDroid工具分析Apk
l 导入一个apk现场进行分析
第1天
下午
6.
代码优化
l 开启ProGuard
l Gradle相关配置
l 使用Lint查找冗余代码和冗余资源
l 使用Simian查找相似代码
l 尝试使用H5
l 插件化
l ABI和Density Split
l 使用Android-arscblamer
7.
Redex
l Redex原理
l Redex实战
8.
ThinR
l ThinR原理
l ThinR实战
9.
美团Android资源混淆保护实践
10.
因噎废食谈App瘦身
l 对性能的影响
l 对稳定性的影响
l 对流量对影响
课堂练习
l 使用NimbleDroid工具对公司的Apk进行分析
l 使用Redex对公司的Apk进行优化
l 使用ThinR对公司的Apk进行优化
l 使用AndResGuard对公司的Apk进行优化
@import url(/css/cuteeditor.css);
包建强的培训课程(6):Android App瘦身优化的更多相关文章
- 包建强的培训课程(3):App竞品技术分析
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(7):iOS企业级开发实战
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(1):Android App企业级开发
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(9):Android App性能优化
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- 包建强的培训课程(16):Android新技术入门和提高
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...
- 包建强的培训课程(15):Android App热修复技术
@import url(/css/cuteeditor.css); Normal 0 10 pt 0 2 false false false EN-US ZH-CN X-NONE $([{£¥·‘“〈 ...
- 包建强的培训课程(4):App测试深入学习和研究
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(10):Android插件化从入门到精通
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 包建强的培训课程(2):Android与设计模式
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
随机推荐
- es6对象的扩展
对象(object)是 JavaScript 最重要的数据结构之一. object 在es6中新增了很多便利的方法 在es6中允许直接写入变量和方法的名称直接作为对象的属性 let x =1 ,y=2 ...
- taro安装使用 Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (64)错误
1. 安装node.js 官网下载:https://nodejs.org/en/ 下载推荐版本: 2. Npm安装慢,可以使用cnpm,安装淘宝镜像: npm install -g cnpm - ...
- node.js中对 mysql 进行增删改查等操作和async,await处理
要对mysql进行操作,我们需要安装一个mysql的库. 一.安装mysql库 npm install mysql --save 二.对mysql进行简单查询操作 const mysql = requ ...
- ES6基本使用
var let 度可用于声明变量. 区别:1.let:只在let命令所在代码块内有效 2.let 不存在变量提升(内部影响不到外部) var b = []; ;j<;j++){ let d=j; ...
- Linux sleep 语句以及循环 测试负载
sleep 命令 sleep 1 睡眠1秒sleep 1s 睡眠1秒sleep 1m 睡眠1分sleep 1h 睡眠1小时 总代码 #!/bin/bash for i in {1. ...
- logstash 修改配置不重启的方法
1.修改好yml配置 2.进入logstash 容器内,或服务器上 3.ps -ef | grep logstash 拿到进程号 4.kill -1 <pid> 5.logstash 会重 ...
- ConcurrentQueue并发队列
表示线程安全的先进先出 (FIFO) 集合 System.Collections.Concurrent 命名空间提供多个线程安全集合类.当有多个线程并发访问集合时,应使用这些类代替 System.Co ...
- java的多态性
class test1{ int a=3; public test1(int a) { this.a=a; } public void aa() { ...
- mac电脑Git提交代码到Github提示git-credential-osxkeychain 验证解决方案
## 啊哈哈 这个简单,直接给出当前mac电脑登录账号密码即可,^_*,拿走不谢!!
- Jquery 数组操作大全【转载】
转载于:https://www.jb51.net/article/43164.htm 1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍 jQuery 对象的 ...