无法访问 GMS

GMS(Google Mobile Services)为 Android 应用提供了基于云服务的 API,包括广告、游戏、地图、视觉图像、身份验证、电子钱包、App 分析等等很多功能,GMS API 被国际化的 App 广泛使用。GMS 不是 AOSP(Android Open Source Project)的一部分,只存在于通过授权的设备里,如果设备没有 GMS 那么 App 运行时可能会像下面这样。

给版本添加构建信息

很多软件的版本号里都有 Build 次数、时间、主机这样的构建信息,这里我介绍一种 Android Studio 里通过 Gradle 脚本自动创建以及更新构建信息的方法,每次构建的时候自动更新版本的 Build 次数、时间、主机等信息,不需要手动设置。

小米 6 刷机,卸载全家桶

Android 手机刷机主要分两步,先刷入 Recovery 程序然后可以刷一个你喜欢的 Android ROM。有些手机锁定了 BootLoader,这类手机要先解锁才能刷 Recovery。小米手机 6 的 Bootloader 也是锁了的,参考解锁流程解锁后才能刷机。

Android Studio 3 几点变化

Android Studio 3 发布有段时间了,之前看到的是测试版就一直用着 2.2.3 没更新。前段时间项目模块升级,Android Studio 的更新提示已经是 3.0.1 正式版了,于是就对开发环境也做了一次升级。本文说几点 Android Studio 3.0.1 的几点变化,不是全面介绍 Android Studio 3 的新特性,而是一些项目迁移过程中感受到的 Android Studio 3.0.1 相对于 Android Studio 2.2.3 的几点变化。

findViewById 的效率

findViewById 是 Android UI 设计里经常调用的一个方法,根据传入的 id 查找并返回对应的 view 对象。那么 Android 是如何去 find 一个 view 的呢,本文结合官方源码分析 findViewById 的原理。以下源码均来自 Android 7.1.1 (API 25) SDK。