Android14 init.environ.rc详解

Android14 init.environ.rc解析

Android14 init.environ.rc详解_com.android.art-CSDN博客

android 系统的环境变量应该是在init.environ.rc文件里面进行设置

源码地址在这里

system/core/rootdir/init.environ.rc.in

可以在这里给系统配置PATH(系统开机后可使用bin)

# set up the global environment
on early-init
    export PATH /product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin:/system/sbin
    export ANDROID_BOOTLOGO 1
    export ANDROID_ROOT /system
    export ANDROID_ASSETS /system/app
    export ANDROID_DATA /data
    export ANDROID_STORAGE /storage
    export ANDROID_ART_ROOT /apex/com.android.art
    export ANDROID_I18N_ROOT /apex/com.android.i18n
    export ANDROID_TZDATA_ROOT /apex/com.android.tzdata
    export EXTERNAL_STORAGE /sdcard
    export ASEC_MOUNTPOINT /mnt/asec
    export TMPDIR /data/local/tmp
    export BOOTCLASSPATH %BOOTCLASSPATH%
    export DEX2OATBOOTCLASSPATH %DEX2OATBOOTCLASSPATH%
    export SYSTEMSERVERCLASSPATH %SYSTEMSERVERCLASSPATH%
    %EXPORT_GLOBAL_ASAN_OPTIONS%
    %EXPORT_GLOBAL_GCOV_OPTIONS%
    %EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%
    %EXPORT_GLOBAL_HWASAN_OPTIONS%

查看当前 PATH 值

要查看 PATH 变量的当前值,可以使用 echo 命令:

echo $PATH

临时设置 PATH

若想临时为当前终端会话添加新的搜索路径(例如 /home/user/myprogram),可以使用以下命令

export PATH=$PATH:/home/user/myprogram

init.environ.rc中主要是在on early-init阶段执行由export指令设置全局环境变量,为后续系统服务、zygote、应用程序运行提供路径和配置基础。

它定义了:

系统分区位置(/system, /system/app, /data)
APEX 模块路径(ART(Android Runtime)、i18n(国际化模块,包括ICU字符库)、tzdata--市区数据)
存储抽象路径(/storage, /sdcard)
调试工具选项(ASan、GCOV 等)

# set up the global environment
on early-init
    export ANDROID_BOOTLOGO 1
    export ANDROID_ROOT /system
    export ANDROID_ASSETS /system/app
    export ANDROID_DATA /data
    export ANDROID_STORAGE /storage
    export ANDROID_ART_ROOT /apex/com.android.art
    export ANDROID_I18N_ROOT /apex/com.android.i18n
    export ANDROID_TZDATA_ROOT /apex/com.android.tzdata
    export EXTERNAL_STORAGE /sdcard
    export ASEC_MOUNTPOINT /mnt/asec
    %EXPORT_GLOBAL_ASAN_OPTIONS%
    %EXPORT_GLOBAL_GCOV_OPTIONS%
    %EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%
    %EXPORT_GLOBAL_HWASAN_OPTIONS%

详细解释如下:

1. export ANDROID_BOOTLOGO 1
控制是否显示 Android 开机动画(boot logo)
1 = 显示开机动画,0 = 不显示
后续 surfaceflinger 或 bootanimation 服务会读取这个变量
实际是否显示还受 ro.bootanim 属性影响。
2. export ANDROID_ROOT /system
定义 Android 系统分区的根目录

大多数系统二进制文件、库、配置都在 /system 下
例如:/system/bin, /system/lib, /system/etc
3. export ANDROID_ASSETS /system/app
指定系统应用资源文件路径

主要用于某些原生代码需要访问 /system/app 下的资源(如 resources.arsc)
实际应用安装路径是 /system/app 和 /system/priv-app
4. export ANDROID_DATA /data
用户数据分区路径

存放:用户 App 数据(/data/data/<package>),Dalvik/ART 缓存(/data/dalvik-cache),系统数据库(/data/system)
/data分区通常在init后期才挂载,这里只是提前设置路径。
5. export ANDROID_STORAGE /storage
存储抽象路径
Android 使用 /storage 作为挂载点,例如:
/storage/emulated/0 → 内部存储(用户 0)
/storage/1234-5678 → SD 卡

6. export ANDROID_ART_ROOT /apex/com.android.art
指向 ART(Android Runtime) 的 APEX 模块路径

APEX (Android Pony Express)是 Android 10+ 引入的系统级模块化组件格式,用于打包和更新核心系统组件,类似系统级别的APK,但面向的是底层服务和库。
/apex/com.android.art 包含:
dex2oat 编译器
dalvikvm 虚拟机
libart.so 等运行时库


✅APEX 的主要用途

用途    示例
更新底层系统服务    更新 com.android.media(多媒体服务)
更新运行时    更新 ART(com.android.art)
更新硬件抽象层    更新 com.android.hardware.graphics.mapper
更新安全组件    更新 com.android.tzdata(时区数据)
✅ 常见的 APEX 模块(Android 13+)

APEX 名称    功能
com.android.art    Android Runtime(ART)
com.android.tzdata    时区数据
com.android.i18n    国际化(ICU 库)
com.android.conscrypt    安全通信(OpenSSL 替代)
com.android.media    多媒体服务
com.android.os.statsd    统计服务
7. export ANDROID_I18N_ROOT /apex/com.android.i18n
国际化(i18n)模块路径

包含:
ICU(International Components for Unicode)库
时区数据(部分)
文字处理规则
8. export ANDROID_TZDATA_ROOT /apex/com.android.tzdata
时区数据模块路径
包含 tzdata 数据库(由 IANA 维护)
用于 java.util.TimeZone、android.icu 等
以前在 /system/usr/share/zoneinfo,现在通过 APEX 更新。
9. export EXTERNAL_STORAGE /sdcard
外部存储的符号链接路径
/sdcard 通常是 /storage/emulated/0 的软链接
兼容老应用使用 /sdcard 路径
实际路径由 vold 或 storaged 服务管理。
10. export ASEC_MOUNTPOINT /mnt/asec
ASEC(Android Secure External Code)挂载点
用于安装 .apk 到 SD 卡的老机制(已废弃)
现代 Android 使用 Adoptable Storage 或 SAF(Storage Access Framework)
⚠️ 这个变量现在基本不用了,保留是为了兼容性。
11. %EXPORT_GLOBAL_XXX_OPTIONS%
这些是宏占位符,在编译时会被替换成实际的环境变量设置。

1.2.14\AirtestIDE\airtest\core\android\static\adb\windows\adb.exe -P 5037 -s f19e7fbe shell ls [21:51:10][ERROR]<airtest.core.api> Traceback (most recent call last): File "airtest\core\android\adb.py", line 374, in shell File "airtest\core\android\adb.py", line 332, in raw_shell File "airtest\core\android\adb.py", line 197, in cmd airtest.core.error.AdbError: stdout[b'acct\r\napex\r\nbin\r\nbugreports\r\ncache\r\ncharger\r\nconfig\r\ncust\r\nd\r\ndata\r\ndebug_ramdisk\r\ndefault.prop\r\ndev\r\netc\r\nlost+found\r\nmnt\r\nodm\r\noem\r\nproc\r\nproduct\r\nproduct_services\r\nres\r\nsbin\r\nsdcard\r\nstorage\r\nsys\r\nsystem\r\nvendor\r\n'] stderr[b'ls: ./init.zygote64_32.rc: Permission denied\r\nls: ./init.rc: Permission denied\r\nls: ./init.usb.rc: Permission denied\r\nls: ./ueventd.rc: Permission denied\r\nls: ./init.zygote32.rc: Permission denied\r\nls: ./init.recovery.hardware.rc: Permission denied\r\nls: ./init: Permission denied\r\nls: ./init.miui.google_revenue_share_v2.rc: Permission denied\r\nls: ./init.miui.cust.rc: Permission denied\r\nls: ./init.environ.rc: Permission denied\r\nls: ./init.miui.post_boot.sh: Permission denied\r\nls: ./init.miui.qadaemon.rc: Permission denied\r\nls: ./verity_key: Permission denied\r\nls: ./init.recovery.qcom.rc: Permission denied\r\nls: ./init.miui.rc: Permission denied\r\nls: ./init.usb.configfs.rc: Permission denied\r\nls: ./init.exaid.hardware.rc: Permission denied\r\nls: ./init.miui.google_revenue_share.rc: Permission denied\r\nls: ./init.miui.nativedebug.rc: Permission denied\r\nls: ./init.miui.early_boot.sh: Permission denied\r\nls: ./metadata: Permission denied\r\n'] During handling of the above exception, another exception occurred:
07-25
根据提供的引用内容,这是一个关于AirtestIDE的问题。根据引用\[1\],如果遇到旧版本使用没问题,但更新后出现问题的情况,需要提供详细的信息来进行问题解答。具体需要提供旧版本信息(IDE版本,是否使用本地python环境,若使用本地安装的airtest和pocoui版本如何)、新版本信息(IDE版本,是否使用本地python环境,若使用本地安装的airtest和pocoui版本如何)、进行了怎样的操作/运行了怎样的代码、旧版表现如何,新版表现如何(如出现报错,请提供完整的报错信息)。 根据引用\[2\],如果需要将本地Python环境的库更新至与1.2.14一样的环境,可以使用如下命令进行更新: ``` # airtest最新版为1.2.6 pip install -U airtest # pocoui最新版为1.0.87 pip install -U pocoui ``` 根据引用\[3\],在进行覆盖更新之前,请检查是否将脚本保存到了AirtestIDE的文件路径内,如果有,请备份脚本后再进行覆盖更新,否则进行覆盖更新操作后也会覆盖掉保存在AirtestIDE路径下的脚本。 根据提供的报错信息,可以看到出现了一个AdbError异常。这个异常是由airtest.core.android.adb模块的shell函数引发的。具体的错误信息是stdout和stderr的内容,其中包含了一些Permission denied的提示。根据这个错误信息,可能是由于权限问题导致的。建议检查相关的权限设置,确保有足够的权限来执行相应的操作。 请提供更多详细的信息,以便更准确地解决问题。 #### 引用[.reference_title] - *1* *2* *3* [【更新公告】AirtestIDE更新至1.2.14版本](https://blog.csdn.net/AirtestProject/article/details/125161307)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值