Android Framework基础知识

这篇具有很好参考价值的文章主要介绍了Android Framework基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈喽大家好,我是Zzz. 给大家分享一篇Framework入门的基础知识文章,内容纯纯原创。

一、Application,Activity和进程的关系?

    Application、Activity只是进程虚拟机运行的一个类对象,只是属于系统的一个组件和进程没有直接联系。Android支持为每个组件可以单独进程方式运行。

       一个Application就是单独的一个进程这个说法是不对的,Application、Activity只是运行程序中的一个普通的类并不代表一个单独的进程,进程是运行起来的一个程序。

二、Android系统进程间的相互关系

 Android Framework基础知识,android framework,笔记,android一个Application或者展示Activity的进程运行在Android系统中需要那些东西进行服务?

Zygote进程:负责孵化之后服务和应用的进程(孵化进程)是所有系统进程的父进程由Zygote来孵化各种进程;

System_server进程:是系统核心服务的一个进程,这个进程包含了系统中核心Service的运行,给系统提供如:Window的管理、Activity的管理,系统的核心功能都在System_server中;

SurfaceFlinger进程:主要跟驱动层、硬件层进行交互,使屏幕进行绘制,如App进程产生的界面由SurfaceFlinger进行的绘制;

ServiceManager进程:App开发中用的getService()就是在和ServiceManager进行交互,这个进程就是保存了一个类似于HashMap,保存了System_server中一些核心服务把服务中的引用交给ServiceManager使得我们的App进程向ServiceManager要需要的服务;

每一个进程直接各自都是相互独立的他们之间的通信或控制只能通过跨进程通信的方式进行交互;除了Linux中Socket、共享内存、管道等一些方式Android特别的通信方式为Binder通信,底层实现是通过系统调用和底层驱动层进行实现。

SurfaceFlinger中包括匿名共享内存,因为binder通信是由内存大小限制的由于SurfaceFlinger要显示一个界面是一个巨大的图片占用的内存比较多这个时候就需要用到匿名共享内存;

三、哪些代码是运行在App进程的、哪些又是运行在System_server进程的?

1、除了自己写的业务代码,一般Android SDK里面的代码都是运行在App进程的,sdk里面是android.jar(在sdk下的platfroms/android-*/)也就是编译出的framework.jar,因为app需要依赖sdk才可以编译通过,说明各个app肯定会使用sdk中的代码,这个代码属于所有app共用的,故修改一个类就会影响所有的应用进程;

2、一般com.system.server.*相关的类都是运行在system_server,这一部分平时是接触不到的,由于普通应用根本无法引入相关的server代码,因此这次代码属于system_server特殊应用自己的代码,普通应用只能通过跨进程通信的方式与其通信获取相关数据及接收控制,一般java代码对应的是services.jar;

四、主要jar包介绍

Android源码编译之后会有很多文件,在源码路径out/target/product/generic_x86_64/system/framework/文件下

1、framework-res.apk----》android系统资源库(如图片、布局、dialog、主题、控件都在这里)

2、framework.jar-----》Android的sdk中核心代码

3、services.jar-----》框架层服务端的编译后jar包

Android Framework基础知识,android framework,笔记,android

五、面对实际项目需求到底该修改那一块的代码呢?修改原则是什么?

需要具体分析需求,按以下几步的优先级进行:

1、明确业务需求,分析业务是否可以应用层面(即App的业务代码)通过标准接口实现,如果是真实的项目又同时要考虑到是否这个App可能被其他的第三方应用替代,或者卸载等;

2、如果业务代码无法通过标准接口实现,则在考虑应用程序的框架修改是否可以实现,也就是android sdk部分,即framework.jar,要考虑该部分代码是运行于所有的app,要考虑功耗影响及稳定性,尽量把修改面变小,不可修改sdk的标准接口,只能考虑新加,但是接口的具体实现可以根据情况改变,修改错误可可能黑屏;

3、framework.jar部分的框架也无法满足时候,就需要考虑System_server中去修改相关的Service等是否可以满足,这一部分更需要谨慎修改,一不小心很可能导致系统无法启动黑屏;

Android Framework基础知识,android framework,笔记,android文章来源地址https://www.toymoban.com/news/detail-843043.html

到了这里,关于Android Framework基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android开发Java版 —— 基础知识

    📝 “第一行代码” 第二版 (java)读书笔记 源码下载地址:github仓库地址。 Android大致可以分为 四层架构 : Linux 内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动 系统运行库层 这一层通过一些C/C++库来为Android系统提供了主要的特性支持

    2024年02月06日
    浏览(56)
  • Android Framework层开发

    查看源码工具: SourceInsight Instrumentation :可以理解为ActivityThread的一个工具类,在ActivityThread中初始化,一个进程只存在一个Instrumentation对象,在每个Activity初始化时,会通过Activity的Attach方法,将该引用传递给Activity。Activity所有生命周期的方法都有该类来执行。 Init进程(pi

    2024年02月04日
    浏览(44)
  • 【Android】Android Framework系列---CarPower电源管理

    智能座舱通常包括中控系统、仪表系统、IVI系统 、后排娱乐、HUD、车联网等。这些系统需要由汽车电源进行供电。由于汽车自身的特殊供电环境(相比手机方便的充电环境,汽车的蓄电池如果没有电是需要专业人士操作的),其电源状态会比较复杂,既要满足车内的座舱系统

    2024年02月07日
    浏览(47)
  • 【Android Framework (八) 】- Service

    1,挂载文件系统,创建文件目录 调用selinux_setup权限安全相关 2,初始化内存空间 初始化属性服务 创建Epoll 注册监听子进程重启异常操作等,对子进程进行线程守护 3,startPropertyServic 开启属性服务 进行监听 4,LoadBootScripts 加载init.rc文件 进行解析 调用do_class_start 文件开启

    2024年02月01日
    浏览(37)
  • Android Framework 之 启动流程

    Android 系统的启动流程 Android 系统的启动流程可以分为以下几个主要步骤: 引导加载器(Bootloader)启动 :当你打开一个 Android 设备时,首先启动的是引导加载器。引导加载器负责启动 Android 的核心操作系统。 Linux 内核启动 :引导加载器加载并启动 Linux 内核。Linux 内核负责

    2024年02月14日
    浏览(36)
  • Android Framework 之 SystemServer

    SystemServer是Android系统中的一个核心组件,负责启动和管理许多重要的系统服务。它的启动过程相对复杂,包含以下主要步骤: Zygote启动SystemServer :在Android系统启动过程中,Zygote进程会通过fork操作创建一个新的进程,并在这个新的进程中启动SystemServer。 加载并执行SystemSer

    2024年02月14日
    浏览(37)
  • Android Framework 之 ServiceManager

    ServiceManager 在 Android 系统中扮演了核心的角色。主要负责跨进程通信(IPC)的管理和服务的注册与查找。 管理系统服务 : ServiceManager 提供一个全局的服务注册表,用于存储所有的系统服务。一个服务一旦被注册到 ServiceManager,其他的进程就可以通过 **ServiceManager **来访问这

    2024年02月14日
    浏览(42)
  • Android Framework 之 Zygote

    Android Zygote 是 Android 操作系统中一个关键的系统服务,它在系统启动时加载,为应用程序的运行提供了一种快速且资源高效的方式。 Zygote 的主要作用如下: 预加载共享库和类 :Zygote 启动时,会预先加载 Android 系统中所有应用程序共享的库和类,例如 Android Runtime,标准 Ja

    2024年02月14日
    浏览(35)
  • Android Studio开发基础知识(持续更新中~)

    阅读本文需要有 Java 和 前端 的基础,本文是我学习Android时的笔记。 Info Key 复制行 Ctrl + D 删除行 Ctrl + Y 注释 Ctrl + / 注释2 Ctrl + Shift + / 撤销 Ctrl + Z 恢复 Ctrl + Shift + Z 显示结构 Ctrl + F12 格式化代码 Ctrl + Alt + L 打开设置 Ctrl + Alt + S 自动补全代码 Ctrl + Shift + Space 自动导包 Alt +

    2023年04月08日
    浏览(50)
  • Android中集成FFmpeg及NDK基础知识

    在日常App开发中,难免有些功能是需要借助NDK来完成的,比如现在常见的音视频处理等,今天就以ffmpeg入手,来学习下Android NDK开发的套路. 很多人并不清除JNI和NDK的概念,经常搞混这两样东西,先来看看它们各自的定义吧. 很多人并不清除JNI和NDK的概念,经常搞混这两样东西,先来看看

    2024年01月17日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包