https://www.gravatar.com/avatar/7a0c24f697ea1587001c36d00039b60f?s=240&d=mp

Udacity也弃用React Native了 !

不久之前,Airbnb 团队刚刚宣布放弃使用React Native,才过不久,Udacity移动团队最近也宣布从App中移除了使用React Native开发的最后一批功能。再加上6月中旬,Facebook宣布将大规模重构RN,这一系列的事件,让不少正在使用React Native的开发者瑟瑟发抖,陷入了恐慌之中。

flutter开发系列之一--环境配置

flutter出来已经一段时间,相信有不少开发同学都去尝试了,现在跨平台开发技术火爆移动开发圈,比如RN,Weex等等,但是这些方案如果不是有特殊需求,一般并没有动力去学,flutter不同,google大厂出品,值得信赖。这系列文章主要是用来记录自己学习flutter的一些经验和遇到的问题。

Android热更新技术总结

当前市面的热补丁方案有很多,其中比较出名的有阿里的HotFix、美团的Robust、微信的Tinker以及QZone的超级补丁方案。

1、热修复技术的优势?

  • 无需重新发版,实时高效热修复
  • 用户无感知修复,无需下载新的应用,代价小
  • 远程调试
平台 阿里百川HotFix(Sophix) AndFix Tinker Qzone Robust
即时生效 yes yes no no yes
性能损耗 较小 较小 较大 较大 较小
侵入式打包 无侵入式打包 无侵入式打包 依赖侵入式打包 依赖侵入式打包 依赖侵入式打包
Rom体积 较小 较小 较大 较小 较小
接入复杂度 傻瓜式接入 比较简单 复杂 比较简单 复杂
补丁包大小 较小 较小 较小 较大 一般
全平台支持 yes yes yes yes yes
类替换 yes yes yes yes no
so替换 yes no yes no no
资源替换 yes no yes yes no
成功率 ? 一般 较高(95.6%) 较高 最高(99.9%)

可以看到阿里的Sophix有很大优势,阿里系在热修复领域有很多积累,我们可以看下阿里系的热修复技术发展路径,一张表格来说明一下各个版本热修复的差别:

Android流行架构分享与解析

如何构建一个优秀的App

Android简介

  • 2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。随后,第一部Android智能手机发布于2008年10月(HTC G1)。其实Android最早可以追溯到2003年。1.0版本还是比较简陋的,只是一个测试版。
  • 2009年4月,谷歌正式推出了Android 1.5。这个版本极大的完善了1.0版本。
  • 2009年9月,谷歌发布了Android 1.6的正式版,当年搭载这款系统的是HTC Hero(G3)。这款系统就已经非常完善了。这个版本到4.0出来时都还有用户在使用。有一段时间的开发需要同时适配1.6和2.x。
  • 2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。也是从此时开始,大量的企业开始重视起Android App的开发。这个时期还属于架构的早期阶段,大多数人还是没有架构的概念的。Android App开发此时也还处于一个早期的探索阶段,没有任何成熟的框架或者库供开发者使用。所以可以说这个时期还属于架构的萌芽期。早期App功能都比较简单,交互也不像现在这么复杂。所以当时但是随着项目的规模增大和业务的复杂度的增长,App开发技术也随之快速发展。
  • Android 2.0/2.0.1/2.1 Eclair(松饼)2009.10.26
  • Android 2.2/2.2.1 Froyo(冻酸奶)2010.5.20
  • Android 2.3 Gingerbread(姜饼)2010.12.7
  • Android 3.0 Honeycomb(蜂巢)2011.2.2
  • Android 3.1 Honeycomb(蜂巢) 2011.5.11 
  • Android 3.2 Honeycomb(蜂巢)2011.7.13
  • Android 4.0 Ice Cream Sandwich(冰激凌三明治)2011.10.19 
  • Android 4.1 Jelly Bean(果冻豆)2012.6.28
  • Android 4.2 Jelly Bean(果冻豆)2012.10.30
  • Android 4.3 Jelly Bean(果冻豆)2013.7.25
  • Android 4.4 KitKat(奇巧巧克力)2013.11.01
  • Android 5.0 Lollipop (棒棒糖) 2014.10.16(Material Design)
  • Android 6.0 Marshmallow(棉花糖) http://7xq9ge.com1.z0.glb.clouddn.com/2017-10-16-AndroidHistory-1.png Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1和Android 4.2)。

各版本UI对比

http://7xq9ge.com1.z0.glb.clouddn.com/2017-10-16-AndroidUI.png http://7xq9ge.com1.z0.glb.clouddn.com/2017-10-16-Android5UI.png

编译Android APP

30条经验帮你提升 tags: [Android, 移动开发] categories: [] keywords: [Android] date: 2016-02-22 11:42:29+08:00

  1. 添加任何第三方库时都要三思而后行,因为这是一个非常严肃的决定。
  2. 如何用户无法看到它,不要去绘制它!
  3. 除非你真的需要,否则不要使用数据库。
  4. 65k方法限制非常容易遇到,你可以通过multidexing 来修复它。
  5. RxJava 是用来取代异步操作AsyncTasks 的最佳替代方案。
  6. Retrofit 是最佳的网络库。
  7. 通过Retrolambda 缩短你的代码
  8. 组合RxJava、Retrofit和Retrolambda 以实现最大化利用。
  9. 我使用EventBus ,它非常伟大!但是我并没有大量使用,因为大量使用会导致代码复杂度提高。
  10. 通过功能分包,而不是层次。
  11. 把任何事情都从应用的线程中移除。
  12. lint 你的视图去帮助你优化布局和布局的层次,以便于你辨认哪些视图是多余的、可移除的。
  13. 如果你使用gradle,你可以加速它!
  14. 生成你的编译报告 ,看看花费的构建时间;
  15. 使用一个众所周知的架构;
  16. 测试需要花费时间,但是一旦你掌握了它之后,将会获得比未测试更加快速和健壮的代码。 ;
  17. 使用依赖注入 ,让你的应用更模块化并且更容易测试;
  18. 收听fragmented podcast 对你来说是有用的。
  19. 不要使用你的个人电子邮件作为你的android市场出版商账户;
  20. 总是使用适当的 输入类型;
  21. 使用分析来找出使用平台和隔离缺陷;
  22. 掌握新库 的状态(可以通过使用dryrun 来快速测试)
  23. 你的底层服务应该做它们需要做的事情,并且尽快的销毁。
  24. 使用Account Manager 去建议登录用户名和邮箱地址。
  25. 使用CI(持续集成)去编译和分发你的beta和production的apk。
  26. 不要经营你自己的CI服务器,因为维护服务器包含磁盘空间/安全问题/更新服务器以免受到SSL攻击等等。应该使用circleci,travis或者shippable。它们便宜并且少一点担心。
  27. 自动化部署到playstore。
  28. 如果一个库非常大而你只需要使用其中一个小功能子集。你应该找到一个更小的替代方案。(例如依赖proguard )
  29. 除非实际需要,不要使用更多的模块。如果模块不是经常修改,需要考虑到的重要问题是:从头编译它们所需要的时间(CI 的编译是一个很好的例子),甚至检查以前的各个模块的构建是否最新的,比起简单的加载.jar/.aar库时间要增加几乎4倍。
  30. 开始考虑为了svg格式放弃png格式;
  31. 为库创建抽象类,如果你仅仅需要一个开关去简单的切换到一个新的库(例如AppLogger.d(“message”) 能够包含 Log.d(TAG, message)),而后意识到Timber.d(message) 是一个更好的选择。)
  32. 监视活跃连接和连接类型(当处于WIFI时有更多的数据更新?)
  33. 监控电源和电池(充电时更多的数据更新?当电池电量低时暂停更新?);
  34. 用户界面就像是一个笑话。如果需要去解释它,它不是那么好;

译自:https://medium.com/@cesarmcferreira/building-android-apps-30-things-that-experience-made-me-learn-the-hard-way-313680430bf9#.1lb3hoh97

对升级速度忍无可忍 谷歌或将收回安卓控制权

新浪美股北京时间19日讯 谷歌即将收回安卓升级的主导权,而这将从根本上改变安卓生态系统当前的开发和更新模式。

theregister报道称,Edison Investment Research分析师温莎(Richard Windsor)认为,谷歌已经对迟缓的升级速度忍无可忍,随时可能将固件升级的控制权从硬件玩家的手中收回。

LinearLayout实现横向跑马灯效果

开发过程中,我们常常要实现各种各样的效果,跑马灯就是其中之一。android的TextView可以设置属性android:ellipsize="marquee"来实现跑马灯效果,但是如果我们的是要实现图文并茂的复杂布局的跑马灯,TextView就有点捉襟见肘了。

Android GC 那点事

想写一篇关于Android GC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC, GC ALLOC和GC COCURRENT有什么区别,能不能想办法扩大堆内存减少GC的频次等等。

Android无需权限显示悬浮窗, 兼谈逆向分析app

最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请`android.permission.SYSTEM_ALERT_WINDOW`权限.

如下图, 截图是在使用Chrome时截的, 但是屏幕顶部却有UC的view浮在屏幕上. 我使用的是小米, 我并没有给UC授悬浮窗权限, 所以我看到这个悬浮窗时是很震惊的.