基础知识 | 学习笔记

简介: 简介:快速学习基础知识

开发者学堂课程【开源 Android 容器化框架 Atlas 开发者指南: 基础知识】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/392/detail/5018


基础知识

内容介绍:

一. android 打包基础

二. Gradle 基础

三. android 启动流程分析

四. android 插件华基础


一、 Android 打包基础。

android 应用是一个 apk 文件,apk 文件从项目中生成的具体步骤如下。

image.png

第一步,处理资源文件,通过 aapt 打包 res 资源文件,生成 R.Java resource.ARSC 和 ReS 文件。同时注意 XML 文件汇编译为二进制的 XML 文件,目的是为了提高反序列化的速度,同时也减少了空间的占用。这里并不处理 asset 文件夹下面的文件。

第一步的产物是 resource.AP 下划线,这是一个压缩文件,里面包括 resource.arsc res 文件夹和 android manifest 文件。

第二步,处理 AIDL 文件,生成对应的 Java 中的接口文件。

第三步,编译 Java 文件,通过 Java c 将前两步生成的 R.Java,Java 接口文件和项目中的 Java 源文件编译成 class 文件。

第四步,Class 2dex 通过 dex 命令将前面生成的 class 文件与第三方库中的 class 文件处理成 dex 文件。这一步并不是简单的打包压缩,dex 命令会将 class 转为 Derek 字节码,生成常量池,消除冗余数据等。

第五步,Apk 打包,通过 apk builder 工具将 aapt 生成的 resource.AP 下划线文件与 set 文件,检查的文件,还有 class.dex 文件一起打包生成 apk 文件。

第六步,签名。通过 Jarsigner 的工具,这上面的 apk 进行 debug 或 release 签名。

第七部 zip align 对齐。是指对签名后的 apk 文件进行对齐处理,使 apk 中所有资源文件距离文件起始偏移为四字节的整数倍。从而通过内存映射访问 apk 文件时会更快,同时也减少了在设备上运行时的内存消耗。


二、 Gradle 基础。

这里列出四篇文档的链接,简单了解即可。

image.png


三、 Android 启动流程分析。

Atlas 框架运行时是在应用程序启动后进行初始化的操作。其中反射应用了一些系统的类 ,方法 ,字段。想理解 atlas 为什么这么做?了解 android 应用的启动流程就是十分必要的。

先说下 AMS。Android 一个应用就是一个进程,系统对应用的管理是一个专门的 service activity manager service。简称为 AMS,AMS 是一个系统级的 service ,系统通过它来管理应用进程的生命周期,包括应用的 activity service 等生命周期。Activity manager proxy 就是 ams 的代理,供应进程调用。

Application thread proxy 应用进程的代理,供AMS调用。这就是跨进程的调用。

应用的启动是从其他应用调用 start activity 开始的,通过代理请求 ams 启动activity。AMS 创建进程并进入 activity thread main 入口,在main入口儿主线程初始化生成 looper 便开始 loop 。Activity thread main 函数,也就是 android 应用程序的入口。应用进程将实例化的 application thread binder 传给 AMS,这样ams 就可以通过代理对应用进程进行访问。

Application thread 是 activity thread 的一个内部类。Ams通过代理请求 Activity application thread 通知主线程执行该请求,然后 activity thread 实行 activity 的启动,这样就完成了应用的启动。

image.png


四、 Android 插件化基础。

要想实现插件的加载和运行。就要解决两个重要的问题,一是类的加载和运行,二是资源的加载和运行。类的部分,了解 android 中的 class loader 机制。

资源的运行,要了解 resource 类和 certain manage 类加载资源的原理。

相关文章
|
4月前
|
缓存 安全 SoC
GICV2&GICV3的基础知识
GICV2&GICV3的基础知识
76 0
|
8月前
|
存储 编解码 监控
视频基础知识 3
视频基础知识
95 0
|
19天前
|
机器学习/深度学习 人工智能 大数据
一些基础知识
了解人工智能基础,探索AI系统如何结合算法、机器学习和数据分析模拟人类智能。从 Siri 和 Alexa 的语音助手到 Netflix 的个性化推荐,AI已深入日常生活中。查阅《人工智能入门手册(AI101)》深入学习,同时参考《抖音百科》和《大数据》拓宽知识领域。
|
8月前
|
存储 编解码 索引
视频基础知识 2
视频基础知识
31 0
|
8月前
|
存储 编解码 算法
视频基础知识 1
视频基础知识
130 0
|
9月前
|
存储 Web App开发 SQL
基础知识
基础知识
69 0
|
10月前
前后台交互基础知识
在别人造的轮子上飞奔的时候,轮子背后的前后台交互如何进行一脸懵$.
46 0
|
12月前
|
编译器 C++
C++模板基础知识
本文将讲述C++模板初阶的相关知识。
117 1
|
12月前
|
安全 编译器 程序员
【C++】C++基础知识
其中 { } 内容即为命名空间的成员,注意最后右花括号后不用加分号结尾。