文章目录
- Android
- Android Apps
- 四大组件
- Android系统
- Platform API之下:一个微笑内核
- adb(Android Debug Bridge)
- Android包管理机制
- Android的Intent机制
- 参考
Android
Linux+Framework+JVM
- 在Linux/Java上做了个二次开发?
- 并不完全是:Android定义了应用模型
·
支持Java是一个非常高瞻远瞩的决定 - QualcommMSM7201
ARMv6指令集
528MHz×1CPU,顺序八级流水线
TSMC 90nm - “跑个地图都会卡”
但摩尔定律生效了!
操作系统OS含义,为APP提供服务,为APP提供运行环境,为下层Linux提供支撑就是OS,比如Android OS,浏览器也是OS
Android Apps
一个运行在Java虚拟机(AndroidRuntime)上的应用程序
- Platform(Framework)
- NDK(NativeDevelopmentKit)
- Java Native Interface(C/C++代码)
官方文档(RTFM)
- Kotlin
- Platform
(1)android.view.View:“the basic building block for user interface components"
(2)android.webkit.WebView-嵌入应用的网页
(3)android.hardware.camera2-相机
(4)android.database.database-数据库
四大组件
Activity
- 应用程序的UI界面(EventDriven)
- 存在一个ActivityStack(应用拉起)
Service
- 无界面的后台服务
Broadcast
- 接受系统消息,做出反应
例如“插上电源”、“Wif断开”
ContentProvider
·可以在应用间共享的数据存储(insert,update,query.,…)
eg:计算器
下面的可视窗口,有的显示器较小,有的显示器较大,Android会帮助我们自动完成这种适配
-
AndroidManifest.xml-应用的“元数据”2
例如需要的权限、监听的Intents等 -
res-资源文件
各国语言的翻译
图片文件(例如图标)
编写应用逻辑只需要重载Activity的onCreate,…即可
Android系统
Platform API之下:一个微笑内核
通过“BinderIPC"
- Remote Procedure Call (RPC)
remote.transact()
通过“BinderIPC",在性能优化和易用之间的权衡
-
注册机制
相比之下,管道/套接字就太“底层”了,需要手工管理的东西太多 -
基于共享内存实现
Linux Kernel binder driver -
服务端线程池
Android Runtime(JVM)=Java VM(编写APP用的,使用Kotlin/Java开发)+Platform API
adb(Android Debug Bridge)
- adb push/pull/install
·adb shell
screencap/sdcard/screen.png
sendevent - adb forward
- adb logcat/jdwp
一系列衍生的工具
- 开发者选项
- scrcpy
- Monkey/Ul Automator
Android包管理机制
Android包管理主要体现在以下几个部分:
- 1.系统启动过程中PKMS对系部分统配置文件进行读取,如package.xml文件,然后对外提供app信息查询接口(IPackageManager).
- 2.提供apk/apex的安装,更新,卸载等操作api接口(IPackageInstaller),apex是谷歌提供的类似apk的系统更新模块。
- 3.应用运行过程中对系统权限的检查
installd进程 的执行权限为 root,所有实际的应用安装,卸载等操作都是通过这个服务进行的。 PKMS只是java层的封装。
Android的Intent机制
Android的Intent机制最核心的设计思想,就是引入了组件管理服务作为连接组件的管理者。该服务可以通过组件的配置信息了解系统中每个组件的类别和功能,从而帮助调用组件寻找符合其需求的实现组件,将调用者与实现者彻底解耦。
优点:
Intent是Android应用模型的核心,解决了组件间的连接问题。通过组件管理服务提供的Intent匹配策略,降低了组件间的耦合度,提高了平台的灵活性,增强了组件的复用性,从根本上减轻了应用开发的负担。
eg:
点击精确Intent,成功跳转到另一个应用中。
点击模糊Intent,出现组件选择列表,
如下图:
参考
- Android 系统 (Android App 和系统架构;应用后台保活)
- 基于Android T:包管理机制详解(上)
- 基于Android T:包管理机制详解(下)
- 【Android开发日记】之入门篇(十一)——Android的Intent机制