今天在群里有小伙伴提到自己的应用被其他第三方库添加了部分额外权限,好奇而研究了一番,发觉可以通过 Gradle 达到移除静态权限。
在 Gradle 项目中配置 AspectJ
配置
根据 Gradle 官方给出来的 AspectJ 配置,需要在 build.config
添加如下代码:
|
|
然而直接执行 gradle build
会出现以下错误提示:
You must set the property ‘aspectjVersion’ before applying the aspectj plugin
按照提示为环境添加以下配置(需注意下面代码要放置在 apply plugin: "aspectj.gradle"
之前):
|
|
再执行 gradle build
,正常运行~
LiveData 源码分析
_(:з」∠)_
流水账一篇
注:本文所有代码基于 android.arch.lifecycle 1.0.0-alpha1
在 Lifecycle-aware Components 源码分析 一文中,我们已经分析了 Lifecycle 框架中所有的 lifecyle 事件产生流程以及分发流程。本文将会基于这部分知识来分析 Lifecycle 框架中的 LiveData 组件。
Lifecycle-aware Components 源码分析
注:本文所有代码基于 android.arch.lifecycle 1.0.0-alpha1
另外,为了避免混淆,Fragment、Activity 等组件自身的生命周期直用 “生命周期” 一词,而由 Lifecycle 框架提供的生命周期则称为 “lifecyle”
最近看到不少人讨论 Google 推的 Android Architecture Components,其中 Handling Lifecycles 一章展现了如何利用 android.arch.lifecycle
包提供的类来控制数据、监听器等的 lifecycle。同时,LiveData 与 ViewModel 的 lifecycle 也依赖于 Lifecycle 框架,所以分析 Lifecycle 显然是有必要的。
Lifecycle 到底是通过怎样的方式来绑定 Android 组件的生命周期以及如何通知 LifecycleObserver 状态变化的呢?本文将会围绕这两个问题深入分析 Lifecycle 源码。
Building AOSP for Nexus 3 (maguro)
最近终于将了解 AOSP 提到日程上。在折腾了两晚后总算给吃了很久灰的 Nexus 3 刷了自己编译出来的 4.3 系统,本文仅为记录这一过程。
Android 平台滑动返回库对比
Github 上滑动返回库比较多,由于实现思路甚至代码一部分库都差不多,所以只挑选了两个实现思路比较不同的库作为研究,分别是 SwipeBackLayout 和 and_swipeback。
除滑动返回功能外,本文还会围绕滑动过程中呈现前一个界面的方案对上述两个库展开分析,其他部分源码细节不予分析。
PinView 的一些知识点
前言
最近因为某个项目需要添加“验证码”功能,设计上区别于原生 EditText,需要将四个数字分离(类似于微信、支付宝支付密码输入框)。在 Github 上查找了一遍,发现大多数现有的控件都比较 dirty —— 使用多个 EditText 达到字符分离的效果。
唯一一个比较有意思的项目是 PasswordInput,该控件直接继承于 EditText,通过重写 onDraw 来实现每个文本对应一个方框,并通过重写 onTextChanged 方法监听文本变化以绘制对应的圆点。
然而,某些情况下我们需要直接显示输入的验证码(PIN 码、短信验证码等),但 PasswordInput 并没有提供相应的方法达到这种效果。于是抽空根据 PasswordInput 的思路实现了 PinView 并开源于 Github。
此文主要为记录编码过程中的一些思路以及所遇到的一些问题与对应的解决方案。
[译] 为什么 Activity 不应包含 UI 逻辑
原文地址:Why Activities in Android are not UI Elements
已获得原作者授权,译文有删减
这篇文章中我们将通过面向对象设计中的单一职责原则来观察 Activity,并试图了解如何更好地在 Activity 中实施单一职责原则。
Gradle 设置代理
Gradle 可以通过命令行或者配置 gradle.properties
使用代理下载依赖包。
利用 OkHttp Interceptor 模拟数据
客户端开发过程中,偶尔我们会碰到服务端 API 尚未部署,而客户端又需要数据调试的情况。这时我们就可以根据与服务端协商定好的接口模拟数据的返回。