分享会:APK瘦身、iOS DLNA的简单实现

分享会:APK瘦身、iOS DLNA的简单实现_第1张图片

APK瘦身严格来讲不算是对应用性能的优化,应该算是对程序体验的优化。

— 知识储备 —

1

为什么要瘦身

对于用户或者客户来说,APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长。

对于产品本身,包越小,功能越多,性能好,也就更受欢迎,用户量越大。

2

资源占用分析

使用AndroidStudio,将APK拖拽到AS里面就出现如下图。

分享会:APK瘦身、iOS DLNA的简单实现_第2张图片

3

简单的目录分析

分享会:APK瘦身、iOS DLNA的简单实现_第3张图片

4

图片资源瘦身

TinyPNG工具支持对PNG/JPEG图片类型的压缩
Drawable XML、.9 PNG、JPG代替PNG
谨慎使用WebP代替PNG

分享会:APK瘦身、iOS DLNA的简单实现_第4张图片

注意:
Android 4.0 以后才支持, 4.2.1以后才支持带透明通道的WebP
对于不需要透明度的PNG需要 先转换成JPEG再转化成WebP,否则会因为带有透明通道,而在4.2.1以下的版本中无法显示。

5

代码混淆

minifyEnable : 启动混淆,启用混淆的同时他会对代码压缩和优化,找出没有引用的代码并 在生成APK之前剔除。

shrinkResources : 只有当minifyEnable 开启,才能起作用。去除无用的resource文件。 注意shrinkResources 不能帮你移除资源文件, 只会帮你压缩合并。

使用Lint删除无用资源 :Analyze -> Run Inspection by Name -> unused resources -> Moudule ‘app’ -> OK

或者输入unused declaration,去除没有用到的代码。

6

资源混淆

关于资源混淆目前比较好的是微信的方案:AndResGuard

7

resConfig和lib

分享会:APK瘦身、iOS DLNA的简单实现_第5张图片

8

优化代码

移除重复的代码
移除功能重叠的框架
减小对Support兼容包的依赖
移除无用的dependencies或者jar包

分享会:APK瘦身、iOS DLNA的简单实现_第6张图片

— iOS DLNA的简单实现 —

分享会:APK瘦身、iOS DLNA的简单实现_第7张图片

DLNA协议定义了一种通用的行业规范,目的是让电子设备之间可以方便地共享照片、视频、音乐等多媒体内容。简单的说,是个共享东西的协议。

1

DLNA是什么?

DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟), 简称为DLNA。其宗旨是Enjoy your music, photos and videos, anywhere anytime, DLNA(Digital Living Network Alliance) 由索尼、英特尔、微软等发起成立、旨在解决个人PC,消费电器,移动设备在内的无线网络和有线网络的互联互通,使得数字媒体和内容服务的无限制的共享和增长成为可能,目前成员公司已达280多家。

DLNA标准包括多项协议及标准,其中最重要的部分是UPnP。

2

UPnP

Universal Plug and Play,简称UPnP是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、标准的UPnP设备控制协议来实现这一目标。

UPnP这个概念是从即插即用(Plug-and-play因特网通讯网协议)派生而来的,即插即用是一种热拔插技术。

3

UPnP协议栈

分享会:APK瘦身、iOS DLNA的简单实现_第8张图片

4

SSDP简单服务发现协议

SSDP发送的两种消息:

1.存在通知(notification)。SSDP服务向此多播地址发送HTTP UDP 通知消息来宣布自己的存在。

  1. 发现请求(Discovery request 或查询请求)。SSDP客户端向此地址发送HTTP UDP 发现请求,查询某种类型的服务。SSDP服务在此地址上监听服务发现请求。当服务监听到的HTTP UDP 发现请求和它自己提供的服务匹配时,它以单播方式发送HTTP UDP 响应。
分享会:APK瘦身、iOS DLNA的简单实现_第9张图片
分享会:APK瘦身、iOS DLNA的简单实现_第10张图片
分享会:APK瘦身、iOS DLNA的简单实现_第11张图片

5

SOAP简单对象访问协议

动作调用的控制消息格式:

分享会:APK瘦身、iOS DLNA的简单实现_第12张图片

6

SOAP简单对象访问协议

设置播放URL动作调用:

分享会:APK瘦身、iOS DLNA的简单实现_第13张图片
分享会:APK瘦身、iOS DLNA的简单实现_第14张图片

END

分享会:APK瘦身、iOS DLNA的简单实现_第15张图片

你可能感兴趣的:(分享会:APK瘦身、iOS DLNA的简单实现)