自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件
自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

备忘录三

2个月前更新 biumall
35 01
自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

前言

简单记录一下Android中源码相关文件所在目录介绍,只是简单的记录一下,方便自己翻阅。

只是比较常用的文件记录,流水账

正文

没啥可看到,也就是个人的流水账哈。

system

init
init.cpp
system\core\init\init.cpp

init进程是Android系统启动时,启动的第一个进程

init.rc
\system\core\rootdir\init.rc
vold
Disk.cpp
system\vold\model\Disk.cpp
PublicVolume.cpp
system\vold\model\PublicVolume.cpp

zygote

Zygote(意为“受精卵”)是 Android 系统中的一个核心进程,负责 孵化(fork)应用进程,以优化应用启动速度和内存占用。

zygote的作用
  1. 预加载java类和资源

    系统类,文件资源,共享库等,减少应用启动开销。

  2. 孵化(fork)进程

    启动了SystemServer等进程

  3. 安全管理

    继承 Zygote 的安全策略(如 SELinux 上下文、UID/GID),确保应用运行在正确的权限环境下

  4. 内存优化

    通过copy-on-write(写时复制)机制共享只读内存页,降低进程的内存占用。

zygote的启动

init.rc有zygote启动相关配置,比如支持64或32,还可以两者共存,方便兼容。

# 64 32共存,但64为主
\system\core\rootdir\init.zygote64_32.rc 
# 只有64位
\system\core\rootdir\init.zygote64.rc
# 只有32位
\system\core\rootdir\init.zygote32.rc

具体启动那个看编译脚本配置。根据rc文件中配置的,zygote启动代码为app_main.cpp

\frameworks\base\cmds\app_process\app_main.cpp

SystemServer

frameworks\base\services\java\com\android\server\SystemServer.java

zygote中通过forkSystemServer()进行启动

Runnable r = forkSystemServer(abiList, socketName, zygoteServer);
    handleSystemServerProcess()
     zygoteInit()
      RuntimeInit.applicationInit()
       findStaticMain()
        new MethodAndArgsCaller()
r.run();

findStaticMain()就是通过反射。

主要工作
  1. 初始化系统环境,时间,拾取,语言等

  2. 初始化系统Looper加载so库

  3. 创建Context和SystemServiceManager

  4. 启动服务并添加到Service列表(引导服务,核心服务,其他服务)

  5. 进入Looper循环

引导服务
  1. 安装服务(Installer)

  2. Activity管理服务(ActivityManagerService)

  3. 电源服务(PowerManagerService)

  4. 背光服务(LightService)

  5. 显示器服务(DisplayManagerService)

  6. 程序包管理服务(PackageManagerService)

  7. 用户管理服务(UserManagerService)

  8. 传感器服务(SensorService)

核心服务
  1. 电池服务(BatteryService)

  2. 统计数据管理服务(UsageStatsManagerInternal)

  3. WebView更新服务(WebViewUpdateService)

  4. Binder调佣状态服务(BinderCallsStatsService)

其他服务
  1. 振动服务

  2. 闹钟服务

  3. 输入管理服务

  4. 窗口管理服务

  5. 蓝牙服务

  6. 存储服务

  7. WiFi管理服务

  8. 定位管理服务

Car

\packages\services\Car

core

\frameworks\base\core
os
frameworks\base\core\java\com\android\internal\os
app

目录为

\frameworks\base\core\java\android\app\

常见的有:

Activity.java

四大组件之一

ActivityThread.java

为应用初始化类,是main()入口,里面实现了Handler消息循环,负责四大组件的生命周期,负责创建Applicantion对象。

ContextImpl.java

Context的实现类。

Dialog.java

对话框类。

Instrumentation.java

一些方法的封装,让Activity中调用。

Application.java

app的入口

Fragment.java

堪称Android第五大组件。

Service.java

四大组件之一,服务。

content
frameworks\base\core\java\android\content

常见的有:

  1. Context.java

    上下文环境,Android核心类,也是个抽象类。

  2. ContextWrapper.java

    Content的装饰类,封装了很多方法,但都是使用Context的方法,方法的最终实现是在ContextImpl.java。

  3. Intent.java

    意图,主要是解决Android应用的各项组件之间的通讯。

  4. BroadcastReceiver.java

    广播接收者,四大组件之一。通过广播的方式进行消息传递,其本质是一个全局的监听器,可以监听到各种广播,可以用来实现不同组件之间的通信

  5. ContentProvider.java

    内容提供者组件通过请求从一个应用程序向其他的应用程序提供数据。四大组件之一。

备忘录三

input
\frameworks\base\core\java\android\hardware\input\

常见的有:

  1. InputManager.java

view
frameworks\base\core\java\android\view

常见的有:

  1. View.java

  2. ViewGroup.java

  3. ViewRootImpl.java 这里有按键分发,UI主线程检查checkThread()

  4. WindowManager.java

  5. WindowManagerGlobal.java

  6. InputEvent.java

webkit
frameworks\base\core\java\android\webkit

常见的有

  1. WebView.java

  2. WebViewClient.java

widget
frameworks\base\core\java\android\widget
  1. Button.java

  2. TextView.java

  3. ImageView.java

media

\frameworks\base\media\java\android\media\
MediaMetadataRetriever.java

媒体元数据解析类。

AudioTrack.java

音频播放器类。

AudioManager.java

音频管理类

AudioFocusRequest.java

焦点申请相关类

AudioAttributes.java

音频焦点相关类

session

媒体应用框架相关

MediaSession.java
MediaSessionManager.java
PlaybackState.java
audiopolicy
AudioPolicy.java

在Car音频焦点中用到

browse
MediaBrowser.java

媒体应用框架相关,用于跟MediaBrowserService通信。

server

frameworks\base\services\core\java\com\android\server
am
audio
media
pm
policy
frameworks/base/services/core/java/com/android/server/policy
PhoneWindowManager.java
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
wm
power

参考文章

  1. Android源码

自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

相关网址

自动化零件服务商 - 供应SMC,FESTO,CKD全新正品气动元件

暂无评论

none
暂无评论...