旧文一篇,看到移动开发前线推送了MultiDex工作原理分析和优化方案,也将我们的MultiDex启动优化思路分享给社区

MultiDex存在的问题

我们经常说的MultiDex,可以分成运行时和编译时两个部分:

  • 编译时的分包机制,将app中的class以某种策略将class分散在多个dex中,目的是减少为了第一个dex也就是main dex中包含的class。

  • 运行时: app启动时,虚拟机只加载main dex中的class。app启动以后,使用Multidex.install API,通过反射修改ClassLoader中的dexElements加载其他dex。

MultiDex机制的出现本身是为了避免出现app 65535问题的出现,但随着业务逻辑的增长,以及不合理的模块划分,可能会导致main dex的方法数也超出了65535,这就导致了main dex capacity exceeded异常。

此外,Multidex的接入额外还会对app的启动性能造成影响。Multidex在install时需要加载dex,首次启动时还需要做odex的转换,而这些都是在ui主线程中完成。 根据 Carlos Sessa的测试,启用multidex后,4.4或以下的设备,app的启动时间平均会增加15%,更严重的情况,甚至在启动时候会出现了黑屏。

目前部分app采取的策略是,放弃掉Multidex的 …


查看全文
Posted by 郑文

懒癌晚期,一年多没更新blog,近一两月项目以外做了两件事情:

  • 在听云和infoq的apmcon大会做了个android 编译器hook的分享,ppt地址在网易APM hook方案探索,介绍了我们在编译期做bytecode植入的一些实践工作,有兴趣的同学可以和我私信交流;

  • 和杭研的同事们一起做了在线的Android课程,讲师基本囊括了网易杭研院各部门的大牛,课程针对在校生和1年以下工作经验的新同学。想了解我们工作方式的同学可以看看,通过下面这个链接购买成功的朋友,也可以私信我下,我再返个微信红包给你 :)

android网易云课堂微专业:android

ios网易云课堂微专业:ios


查看全文
Posted by zhengwen

前言

最近airbnb开源了DeepLinkDispatch项目,DeepLinkDispatch是一个基于注解的链接跳转库,简单了解完其实现后,想起了Facebook今年5月公布的另一个项目AppLink,于是有了这篇文章。

AppLink

与其说AppLink是一个框架,更不如说他是一个规范。当app内嵌WebView遇到自定义的Schema时,app只能简单的将url转交给系统,或直接显示页面无法加载。AppLink规范旨在解决各个平台的app跳转的问题。第三方网页或者app接入applink后,跳转方可以根据AppLink规范进行精确的目标跳转以及数据传输。 引用官方文档中的例子,example.hmtl:

<html>
<head>
    <meta property="al:ios:url" content="applinks://docs" />
    <meta property="al:ios:app_store_id" content="12345" />
    <meta property="al:ios:app_name" content="App Links" />
    <meta …

查看全文
Posted by zhengwen

前言

被鞭炮吵得睡不着觉,rss中找一篇简单的文档翻译下,原文链接:http://blog.booking.com/android-reuse-bitmaps.html,大部分团队应该都做过这个bitmap优化,不过估计设置过BitmapFactory.Options.inTempStorage参数的应该不多 :)

booking.com android客户端在新版本的增加了一个新功能:酒店的图片集合

此处输入图片的描述

不幸的是,增加了这个新功能后,发现这个应用的内存消耗增长了20%。图片集的界面的滑动有明显的卡顿,经定位,我们发现viewpager加载图片时的gc问题造成了以上的问题。由于应用的图片资源多;控件布局层次复杂;数据量较大,造成内存的申请很容易触发GC。

当申请bitmap内存时,logcat输出信息如下:

GC_FOR_ALLOC freed 3255K, 20% free 21813K/26980K, paused 62ms, total 62ms
GC_FOR_ALLOC freed 710K, 20% free 30242K/37740K, paused 72ms …

查看全文
Posted by zhengwen