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

如下图:

参考

相关推荐
inmK11 小时前
蓝奏云官方版不好用?蓝云最后一版实测:轻量化 + 不限速(避更新坑) 蓝云、蓝奏云第三方安卓版、蓝云最后一版、蓝奏云无广告管理工具、安卓网盘轻量化 APP
android·工具·网盘工具
giaoho2 小时前
Android 热点开发的相关api总结
android
咖啡の猫3 小时前
Android开发-常用布局
android·gitee
程序员老刘4 小时前
Google突然“变脸“,2026年要给全球开发者上“紧箍咒“?
android·flutter·客户端
Tans54 小时前
Androidx Lifecycle 源码阅读笔记
android·android jetpack·源码阅读
雨白4 小时前
实现双向滑动的 ScalableImageView(下)
android
峥嵘life4 小时前
Android Studio新版本编译release版本apk实现
android·ide·android studio
studyForMokey7 小时前
【Android 消息机制】Handler
android
敲代码的鱼哇7 小时前
跳转原生系统设置插件 支持安卓/iOS/鸿蒙UTS组件
android·ios·harmonyos
翻滚丷大头鱼7 小时前
android View详解—动画
android