diff --git a/README.md b/README.md
index cce44a1..c3c030e 100644
--- a/README.md
+++ b/README.md
@@ -76,6 +76,12 @@ Android Notes
[电量优化](https://github.com/Omooo/Android-Notes/blob/master/blogs/Android/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/%E7%94%B5%E9%87%8F%E4%BC%98%E5%8C%96.md)
+
+
+#### Framework
+
+[Android 系统架构]()
+
#### Java 基础
[final 你需要知道的一切](https://github.com/Omooo/Android-Notes/blob/master/blogs/Java/final.md)
diff --git a/blogs/Android/Framework/Android 系统启动.md b/blogs/Android/Framework/Android 系统启动.md
new file mode 100644
index 0000000..0e74ceb
--- /dev/null
+++ b/blogs/Android/Framework/Android 系统启动.md
@@ -0,0 +1,4 @@
+---
+Android 系统启动
+---
+
diff --git a/blogs/Android/Framework/Android 系统架构.md b/blogs/Android/Framework/Android 系统架构.md
new file mode 100644
index 0000000..ac017bb
--- /dev/null
+++ b/blogs/Android/Framework/Android 系统架构.md
@@ -0,0 +1,62 @@
+---
+Android 系统架构
+---
+
+#### 五层架构
+
+##### 概述
+
+Android 底层内核空间以 Linux Kernal 作为基石,上层用户空间由 Native 系统库、虚拟机运行环境、框架层组成,通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用 C++ 和 Java 代码编写,通过 JNI 打通用户空间的 Java 层 和 Native 层,从而连通整个系统。
+
+直接拿官方的图:
+
+![](https://i.loli.net/2019/04/22/5cbd71433f4bf.png)
+
+##### Linux 内核层
+
+Android 平台的基础是 Linux 内核。例如,ART 依靠 Linux 内核来执行底层功能。Linux 内核的安全机制为 Android 提供了相应的保障,也允许设备制造商为内核开发硬件驱动程序。
+
+##### 硬件抽象层 HAL
+
+硬件抽象层提供标准界面,向更高级别的 Java Framework 层显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机和蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
+
+##### Native C/C++ 库 && Android Runtime
+
+每个应用都在其自己的进程中运行,都有自己的虚拟机实例。ART 通过执行 DEX 文件可在设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用内存很少。ART 主要功能包括:AOT 和 JIT 编译,优化的 GC,以及调试相关的支持。
+
+Native C/C++ 库主要包括 init 孵化来的用户空间的守护进程、HAL 层以及开机动画等。启动 init 进程,是 Linux 系统的用户进程,init 进程是所有用户进程的父进程。
+
+##### Java Framework 层
+
+Zygote 进程:
+
+是由 init 进程通过解析 init.rc 文件后 fork 生成的,Zygote 进程主要包括:
+
+- 加载 ZygoteInit 类,注册 Zygote Socket 服务端套接字
+- 加载虚拟机
+- 提前加载类 preloadClasses
+- 提前加载资源 preloadResources
+
+System Server 进程:
+
+是由 Zygote 进程 fork 而来,System Server 是 Zygote 孵化的第一个进程,System Server 负责启动和管理整个 Java Framework,包括 ActivityManager、WindowManager、PackageManager、PowerManager 等服务。
+
+Media Server 进程:
+
+是由 init 进程 fork 而来,负责启动和管理整个 C++ Framework,包括 AudioFlinger、Camera Service 等服务。
+
+##### System Apps 层
+
+Zygote 进程孵化出第一个 App 进程是 Launcher,这是用户看到的桌面 App;
+
+Zygote 进程还会创建 Browser、Phone、Email 等 App 进程,每个 App 至少运行在一个进程上。
+
+所有的 App 进程都是由 Zygote 进程 fork 生成的。
+
+系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互。
+
+#### 参考
+
+[Android 平台架构](https://developer.android.com/guide/platform)
+
+[袁辉辉 --- Android 系统架构开篇]()
\ No newline at end of file
diff --git a/blogs/Android/Gradle/Gradle Plugin 之 Transform API.md b/blogs/Android/Gradle/Gradle Plugin 之 Transform API.md
new file mode 100644
index 0000000..cef71d1
--- /dev/null
+++ b/blogs/Android/Gradle/Gradle Plugin 之 Transform API.md
@@ -0,0 +1,78 @@
+---
+Gradle Plugin 之 Transform API
+---
+
+#### 前言
+
+在前面两篇文章中,我们熟悉了 [Gradle Plugin](https://github.com/Omooo/Android-Notes/blob/master/blogs/Android/Gradle/Gradle Plugin.md) 的编写,同时也实践了一下,写了一个 [TinyPngPlugin](https://github.com/Omooo/Android-Notes/blob/master/blogs/Android/Gradle/Gralde Plugin 实践之 TinyPng Plugin.md) ,利用 TinyPng 在打包时压缩 res 下的所有的 png 图片,这是一个非常好的实践,希望你也能掌握。
+
+本篇文章接着来讲解 Transfrom API,Transform 是用来对 class 转 dex 文件之前的 class 文件进行操作。
+
+![](https://i.loli.net/2019/04/22/5cbd314be60b9.png)
+
+这里的 Input 和 Output 都是 class 文件或者 jar 包,因此,我们就可以实现字节码插桩。
+
+#### Transform
+
+使用 Transform 依赖需要首先添加依赖:
+
+```java
+implementation 'com.android.tools.build:gradle:3.3.2'
+```
+
+Transfrom 使用还是相对简单的:
+
+```java
+public class DemoTransform extends Transform {
+
+ /**
+ * Transform 标识名
+ * 比如我在 app module 下依赖了这个 Plugin
+ * 那么在 app/build/intermediates/transforms/
+ * 下,就能看到我们的自定义 DemoTransform
+ */
+ @Override
+ public String getName() {
+ return "DemoTransform";
+ }
+
+ /**
+ * 设置文件输入类型
+ * 类型在 TransformManager 下有定义
+ * 这里我们获取 class 文件类型
+ */
+ @Override
+ public Set getInputTypes() {
+ return TransformManager.CONTENT_CLASS;
+ }
+
+ /**
+ * 设置文件所属域
+ * 同样在 TransformManager 下有定义
+ * 这里指定为当前工程
+ */
+ @Override
+ public Set super QualifiedContent.Scope> getScopes() {
+ return TransformManager.SCOPE_FULL_PROJECT;
+ }
+
+ /**
+ * 是否支持增量编译
+ */
+ @Override
+ public boolean isIncremental() {
+ return false;
+ }
+
+ @Override
+ public void transform(TransformInvocation transformInvocation) throws TransformException, InterruptedException, IOException {
+ super.transform(transformInvocation);
+ }
+}
+```
+
+这里最重要的方法就是 transform 方法。
+
+#### ASM
+
+ASM 是一个字节码操作库。
\ No newline at end of file
diff --git a/images/Android/Framework/Android 五层架构.png b/images/Android/Framework/Android 五层架构.png
new file mode 100644
index 0000000..0ce5f20
Binary files /dev/null and b/images/Android/Framework/Android 五层架构.png differ
diff --git a/images/Android/Gradle/Transform.png b/images/Android/Gradle/Transform.png
new file mode 100644
index 0000000..bd0029f
Binary files /dev/null and b/images/Android/Gradle/Transform.png differ