无法访问 GMS

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

给版本添加构建信息

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

如何优雅的导入 AAR 文件

和 JAR 一样,AAR 也是一种软件模块化封装提高可复用性的方式。相比于 JAR,AAR 除了 Java 代码之外还能打包 Android App 资源(如:String、Drawable 等等)、JNI 库文件(.so),AAR 仅能用于 Android 软件而 JAR 则 Java 软件通用。将一些常用的、通用的功能代码或是界面封装到一个 AAR 模块里,以便后续再次使用,是提升开发效率的好做法。

小米 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 的几点变化。

让你的 RecyclerView 支持多选

下图演示的是 RecyclerView 图片多选,未使用第三方库。如何让 RecyclerView 支持多选,可以从几个方面思考,我们可以按下面的构思来设计这个小功能。

findViewById 的效率

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