Android系统(android app和系统架构)

文章目录

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,出现组件选择列表,

如下图:

参考

相关推荐
千里马学框架4 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台4 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone4 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc4 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo4 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077004 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼4 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone4 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen4 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone4 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui