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

如下图:

参考

相关推荐
alexhilton1 天前
MVI模式的完整历史、误解和现代Android范式
android·kotlin·android jetpack
心中有国也有家1 天前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos
hunterandroid1 天前
WorkManager 可靠性实战:唯一任务、重试与幂等设计
android·前端
程序员老刘1 天前
Android 17的10个AI功能,国内用户真正能用的有几个?
android·flutter·ai编程
花开彼岸天~1 天前
鸿蒙应用开发实战【94】— 实战多卡号场景管理最佳实践
android·华为·harmonyos·鸿蒙系统
用户41659673693551 天前
视频源文件音频轨异常分析记录
android
我命由我123451 天前
集成 mupdf-android 的示例做为模块使用报错,程序包android.support.v4.view不存在
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
雨白2 天前
嵌套 ScrollView 滑动冲突实战:实现内部优先滚动
android
阿pin2 天前
Android随笔-IntentService详解(了解)
android·intentservice
海天鹰2 天前
content://com.android.externalstorage.documents/document/primary%3A
android