Android开发周报:Play Store搜索广告推出、ListView源码解析

jopen 9年前

 

新闻

  1. 《正式版Android M预计10月发布》 :Android M已经连续放出了两个开发者预览版,按照计划还会有第三个,然后才是正式版。这第三个要多等等了,但等待将是值得的。Google的一名员工Wojtek Kaliciński公开发帖称,Android M Developer Preview 3需要更长时间打磨,因为它们想使之接近最终正式版。
  2. 《谷歌放大招,拯救用户的老旧Android机》 :其实谷歌的Android系统升级并不慢,几乎每年都会有新版本。从Android系统诞生以来,就饱受碎片化的困扰,很多机器都不能及时升级。不过好消息来了,为了解决安卓旧手机无法升级,也为了重新夺回对安卓系统的控制权,在下一代的Android6.0系统中,核心系统更新和OEM厂商更新将会区分开来,核心系统将单独升级。谷歌表示,此举还有利于解决饱受诟病的安卓碎片化问题。
  3. 《坐拥10亿Android用户,Google终于开始动Google Play 这座金矿了》 :Google Play覆盖了190多个国家/地区的超过10亿 Android设备用户,不管是对Google自身来说,还是对在上面分发应用的开发者来说,这都是一个不可小觑的金矿。今年2月份开始,Google Play就开始小范围测试搜索广告服务,如今Google终于在Android Developers官方博客上宣布,正式推出搜索广告服务。

教程

  1. 《搞个这样的App要多久?》 :无论你是技术小弟一枚,还是公司的技术总监,总会被别人问到类似于标题这样的问题。如果提问者是同行,我们可以这样回答:大概需要2个月,一个后端工程师,Android和iOS工程师各一枚,外加美工...,然后同行点点头,感觉你很务实,也很机智,最后按照你的思路开干。但如果是被外行问到,显然上述回答并不是提问者想要的答案。点击标题,来看看这个“如有雷同,纯属巧合”的故事吧。
  2. 《Android下的NFC是如何开发的?》 :随着物联网与O2O业务的发展,NFC在小额支付领域的前景越来越广阔。本文结合多个公开文档,简要介绍了NFC的工作场景,同时使用RxAndroid实现了对NFC字节流的读取与异常捕捉;介绍了卡模拟过程中与Android底层的交互原理与简单示例。
  3. 《Android ListView工作原理完全解析,带你从源码的角度彻底理解》 :在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。本文从源码的角度解析了 ListView的工作原理。
  4. 《使用O-LLVM和NDK对Android应用进行混淆》 :Android开发中经常需要对敏感信息进行加密,避免不了要将密钥存放在终端设备上,那么如何防止密钥被逆向出来呢?相比较密钥从Java层下移到NDK层是比较安全的,本文就来介绍如何对NDK层代码进行混淆,以更好的保护我们的密钥。这里是 英文地址
  5. 《Android DataBinding:再见Presenter,你好ViewModel!》 :最近一段时间MVP模式已经成为Android应用开发UI层架构设计的主流趋势。类似TED MOSBY,nucleus和mortar之类的框架都引入了Presenters来帮助我们搭建简洁的App架构。它们也(在不同的程度上)帮助我们处理Android平台上臭名昭著的设备旋转和状态持久化等问题。MVP模式也有助于隔离样板代码,虽然这并不是MVP模式的设计初衷。本文详细分析了这种架构。
  6. 《为什么刷机后系统第一次启动会很慢?》 :在做Android内核开发的过程中,我们会发现,每次编译完系统源码,烧录到设备或手机中后,第一次启动都会很慢很慢,要好几分钟甚至十几分钟,为什么会出现这样的现象呢?系统刷机后第一次启动与后面再次启动有什么不同呢?阅读文章,了解真相。
  7. 《使用Android lint发现并解决高版本API问题》 :在编写代码时,为了实现一些功能,我们需要使用高版本的API,比如SharedPreference的Editor中的apply方法为API 9开始引入,在API 9以上的机器使用没有问题,但是在API 8上,如果运行时执行了这段代码,就会崩溃,问题相当严重。尤其是该问题出现在正式版中,后果不堪设想。本文介绍了如何使用lint发现并解决这些问题。
  8. 《 TabLayout:另一种Tab的实现方式》 :在5.0以前我们想要实现像网易新闻客户端那样的的Tab可以有很多种选择:比如古老的TabHost,3.0后ActionBar所提供的Tab,以及各种成熟的Tab开源控件都可以直接或间接地实现Tab的效果。谷歌在5.0后放出的design包中推出了官方的TabLayout控件,TabLayout可以 方便地实现类似效果,并且符合谷歌自家的MD设计理念,本文介绍了TabLayout的使用方法。

开源项目

  1. Carpaccio :Carpaccio是一个第三方的Android DataBinding库,它可以使View变得非常“聪明“,使用Carpaccio后,如果要让一个ImageView从网络加载图片,我们不再需要写相关的网络请求代码,在layout中添加一个标签就可以完成所有操作。Carpaccio是非常实用的一个类库。
  2. TagCloudView :TagCloudView是一个支持 SingleLine模式的标签云开源项目,使用TagCloudView可以轻松实现知乎问题话题列表标签云效果,TagCloudView还提供了丰富的自定义样式选择。
  3. CustomActivityOnCrash :每个App都会有奔溃的可能性,无论我们开发的时候多认真,测试过多少种机器,总会有一定的错误率。当App异常时,系统会弹出一个错误对话框。使用该项目,我们可以在App异常时显示一个自定义的错误页面,从而提升产品的用户体验。

工具

  1. 上传apk到fir的gradle插件 :App内测需要把安装把安装包放在一个地方进行托管,方便内测人员下载。国内有蒲公英,fir等这些网站可以用。该工具是非官方的一个gradle上传工具。
  2. JSONExport :JSONExport是一款Swift编写Mac OS X桌面应用,支持将JSON输出为Objective-C/Swift/Java语言类模型。