看看OpenHarmony编译出的镜像中都有啥
Posted landaliming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看看OpenHarmony编译出的镜像中都有啥相关的知识,希望对你有一定的参考价值。
1. 编译生成的镜像
OpenHarmony
编译生成的东西都存放在 out/ohos-arm-release/packages/phone/images/
目录,看一下里面都有啥
lim@TIM:~/OpenHarmony/code-2.0-canary$ ls -hl out/ohos-arm-release/packages/phone/images/
total 262M
-rwxr-xr-x 2 lim lim 1.3K Jun 2 03:21 Hi3516DV300-emmc.xml
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 data
drwxr-xr-x 18 lim lim 4.0K Jun 6 16:59 root
drwxr-xr-x 12 lim lim 4.0K Jun 6 16:59 system
-rw-r--r-- 1 lim lim 243M Jun 6 16:59 system.img
-rwxr-xr-x 2 lim lim 235K Jun 2 03:21 u-boot-hi3516dv300_emmc.bin
-rw-r--r-- 1 lim lim 4.6M Jun 6 16:20 uImage
drwxr-xr-x 9 lim lim 4.0K Jun 6 16:59 updater
-rw-r--r-- 1 lim lim 9.2M Jun 6 16:59 updater.img
-rw-r--r-- 1 lim lim 793K Jun 6 16:59 userdata.img
drwxr-xr-x 8 lim lim 4.0K Jun 2 03:22 vendor
-rw-r--r-- 1 lim lim 4.1M Jun 6 16:59 vendor.img
2. 镜像在flash上的分布
这里有一个Hi3516DV300-emmc.xml文件,猜测应该是刷机工具用来解析获得镜像文件应该刷到什么地方的。我们看下里面是啥:
cat out/ohos-arm-release/packages/phone/images/Hi3516DV300-emmc.xml
<?xml version="1.0" encoding="GB2312" ?>
<Partition_Info>
<Part Sel="1" PartitionName="fastboot" FlashType="emmc" FileSystem="none" Start="0" Length="1M" SelectFile="Y:\\Disk\\code\\Camera\\out\\target\\product\\Hi3559A\\u-boot-hi3516dv300_emmc.bin"/>
<Part Sel="1" PartitionName="boot" FlashType="emmc" FileSystem="none" Start="1M" Length="15M" SelectFile="Y:\\Disk\\code\\Camera\\out\\target\\product\\Hi3559A\\uImage"/>
<Part Sel="1" PartitionName="updater" FlashType="emmc" FileSystem="ext3/4" Start="16M" Length="20M" SelectFile="Y:\\Disk\\code\\Camera\\out\\target\\product\\Hi3559A\\updater.img"/>
<Part Sel="1" PartitionName="misc" FlashType="emmc" FileSystem="none" Start="36M" Length="1M" SelectFile=""/>
<Part Sel="1" PartitionName="system" FlashType="emmc" FileSystem="ext3/4" Start="37M" Length="3307M" SelectFile="Y:\\Disk\\code\\Camera\\out\\target\\product\\Hi3559A\\system.img"/>
<Part Sel="1" PartitionName="vendor" FlashType="emmc" FileSystem="ext3/4" Start="3344M" Length="256M" SelectFile="Y:\\Disk\\code\\Camera\\out\\target\\product\\Hi3559A\\vendor.img"/>
<Part Sel="1" PartitionName="userdata" FlashType="emmc" FileSystem="ext3/4" Start="3600M" Length="1464M" SelectFile="Y:\\Disk\\code\\Camera\\out\\target\\product\\Hi3559A\\userdata.img"/>
</Partition_Info>
熟悉linux或者android的人应该明白镜像在flash上是怎么分布的
起始地址 | 长度 | 镜像 | 作用 |
---|---|---|---|
0 | 1M | u-boot-hi3516dv300_emmc.bin | uboot |
1M | 15M | uImage | linux 内核 |
16M | 20M | updater.img | |
36M | 1M | ||
37M | 3307M | system.img | 文件系统 |
3344M | 256M | vendor.img | 文件系统 |
3600M | 1464M | userdata.img | 用户数据 |
看到这里,熟悉linux的人可能要说了,这不就是标准的linux么,uboot引导linux内核,内核启动后挂载根文件系统;熟悉Android的人可能忍不住了,什么?system.img、vendor.img、userdata.img这部就是Android么?但是我呢,是什么都不会说的,一来本人才疏学浅,二来这本来就是个公说公有理婆说婆有理的事情,比如煮方便面算不算做饭呢?电动自行车算不算自行车呢?争下去没完没了。
3. 分析根文件系统
- 首先我们看下 root 根目录:
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images$ ls -hl root/
total 124K
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 acct
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 apex
lrwxrwxrwx 1 lim lim 11 Jun 2 03:22 bin -> /system/bin
lrwxrwxrwx 1 lim lim 50 Jun 2 03:22 bugreports -> /data/user_de/0/com.android.shell/files/bugreports
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 cache
lrwxrwxrwx 1 lim lim 19 Jun 2 03:22 charger -> /system/bin/charger
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 config
lrwxrwxrwx 1 lim lim 17 Jun 2 03:22 d -> /sys/kernel/debug
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 data
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 debug_ramdisk
lrwxrwxrwx 1 lim lim 23 Jun 2 03:22 default.prop -> system/etc/prop.default
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 dev
lrwxrwxrwx 1 lim lim 11 Jun 2 03:22 etc -> /system/etc
lrwxrwxrwx 1 lim lim 16 Jun 2 03:22 init -> /system/bin/init
-rw-r--r-- 1 lim lim 987 Jun 2 03:22 init.environ.rc
-rw-r--r-- 1 lim lim 33K Jun 2 03:22 init.rc
-rw-r--r-- 1 lim lim 7.6K Jun 2 03:22 init.usb.configfs.rc
-rw-r--r-- 1 lim lim 5.5K Jun 2 03:22 init.usb.rc
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 mnt
drwxr-xr-x 2 lim lim 4.0K Jun 2 03:22 odm
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 oem
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 proc
lrwxrwxrwx 1 lim lim 15 Jun 2 03:22 product -> /system/product
lrwxrwxrwx 1 lim lim 24 Jun 2 03:22 product_services -> /system/product_services
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 sbin
lrwxrwxrwx 1 lim lim 21 Jun 2 03:22 sdcard -> /storage/self/primary
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 storage
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 sys
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 system
-rw-r--r-- 1 lim lim 2.6K Jun 2 03:22 ueventd.rc
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 vendor
果然不出意外,和Android一样的软链接,真正的根文件系统是system:
bin -> /system/bin
etc -> /system/etc
init -> /system/bin/init
etc -> /system/etc
sdcard -> /storage/self/primary
- 那么我们再看下system下都有什么文件:
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images$ ls -hl system
total 72K
drwxr-xr-x 3 lim lim 4.0K Jun 2 03:22 apex
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 app
drwxr-xr-x 3 lim lim 12K Jun 6 16:59 bin
-rw-r--r-- 1 lim lim 3.1K Jun 6 16:59 build.prop
-rw-r--r-- 1 lim lim 20 Jun 6 16:59 buildz.prop
drwxr-xr-x 11 lim lim 4.0K Jun 6 16:59 etc
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 fonts
drwxr-xr-x 4 lim lim 20K Jun 6 16:59 lib
drwxr-xr-x 3 lim lim 4.0K Jun 2 03:22 product
drwxr-xr-x 2 lim lim 4.0K Jun 6 16:59 profile
drwxr-xr-x 3 lim lim 4.0K Jun 6 16:59 usr
lrwxrwxrwx 1 lim lim 7 Jun 2 03:22 vendor -> /vendor
drwxr-xr-x 2 lim lim 4.0K Jun 2 03:22 xbin
熟悉linux的人说,这里除了apex和vendor两个文件夹,其他的标准的linux根文件系统啊,熟悉Android的人又坐不住了,apex和vendor那是我的!!!
好吧,安卓你坐下,谁还不是个类Unix系统,还不是个Linux发行版。
4. 进system目录下看一看
- apex 目录
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images/system$ ls -hl apex/com.android.runtime-hos.debug/
total 20K
-rw-r--r-- 1 lim lim 148 Jun 2 03:22 apex_manifest.json
-rw-r--r-- 1 lim lim 1.1K Jun 2 03:22 apex_pubkey
drwxr-xr-x 2 lim lim 4.0K Jun 2 03:22 bin
drwxr-xr-x 2 lim lim 4.0K Jun 2 03:22 etc
drwxr-xr-x 3 lim lim 4.0K Jun 2 03:22 lib
这里放的是安卓运行时,看后缀加了hos,应该是OpenHarmony改了这里,二进制也看不出改了啥,咱们继续看后面的
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images/system$ cat apex/com.android.runtime-hos.debug/apex_manifest.json
{
"name": "com.android.runtime",
"version": 1,
"preInstallHook": "bin/art_preinstall_hook",
"postInstallHook": "bin/art_postinstall_hook"
}
- app 目录
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images/system$ ls -hl app
total 14M
-rwxr-xr-x 1 lim lim 145K Jun 6 16:59 Airquality_Demo.hap
-rwxr-xr-x 1 lim lim 77K Jun 6 16:59 Calc_Demo.hap ## 电话
-rwxr-xr-x 1 lim lim 153K Jun 6 16:59 Clock_Demo.hap ## 时钟
-rwxr-xr-x 1 lim lim 191K Jun 6 16:59 Ecg_Demo.hap
-rwxr-xr-x 1 lim lim 99K Jun 6 16:59 Flashlight_Demo.hap
-rwxr-xr-x 1 lim lim 3.1M Jun 6 16:59 Gallery_Demo.hap ## 相册
-rwxr-xr-x 1 lim lim 1.8M Jun 6 16:59 Launcher.hap ## 桌面
-rwxr-xr-x 1 lim lim 295K Jun 6 16:59 Launcher_Recents.hap
-rwxr-xr-x 1 lim lim 350K Jun 6 16:59 Settings.hap ## 设置
-rwxr-xr-x 1 lim lim 7.2M Jun 6 16:59 Shopping_Demo.hap ## 商店
-rwxr-xr-x 1 lim lim 33K Jun 6 16:59 SystemUI-NavigationBar.hap ## 导航栏
-rwxr-xr-x 1 lim lim 34K Jun 6 16:59 SystemUI-StatusBar.hap ## 状态栏
这里放的是预置的应用,比较少,Android预置的是apk后缀的,OpenHarmony预置的是hap后缀的
再看下hap后缀的是什么东西:
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images/system$ file app/Launcher.hap
app/Launcher.hap: Java archive data (JAR)
哦,是java包,file命令直接能识别,看来确实只是改了下后缀, 那么我们打开看下里面都有啥:
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images/system/app$ jar vtf Launcher.hap
15106 Thu Jan 01 00:00:00 CST 2009 assets/js/default/app.js
5979 Thu Jan 01 00:00:00 CST 2009 assets/js/default/common/pics/icon_default.png
1694253 Thu Jan 01 00:00:00 CST 2009 assets/js/default/common/pics/img_wallpaper_default.jpg
0 Thu Jan 01 00:00:00 CST 2009 assets/js/default/compile_success.txt
477 Thu Jan 01 00:00:00 CST 2009 assets/js/default/i18n/en-US.json
439 Thu Jan 01 00:00:00 CST 2009 assets/js/default/i18n/zh-CN.json
339 Thu Jan 01 00:00:00 CST 2009 assets/js/default/manifest.json
22750 Thu Jan 01 00:00:00 CST 2009 assets/js/default/pages/AppGridView/AppGridView.js
20653 Thu Jan 01 00:00:00 CST 2009 assets/js/default/pages/AppListView/AppListView.js
5581 Thu Jan 01 00:00:00 CST 2009 assets/js/default/pages/EntryView/EntryView.js
11819 Thu Jan 01 00:00:00 CST 2009 assets/js/default/pages/SettingsView/SettingsView.js
425 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources.index
1 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources/base/media/attributes.key
1 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources/base/media/constants.key
1 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources/base/media/contents.key
6320 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources/base/media/icon.png
5448 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources/base/media/icon_small.png
1 Thu Jan 01 00:00:00 CST 2009 assets/launcher/resources/base/media/nodes.key
1040 Thu Jan 01 00:00:00 CST 2009 config.json
1136 Thu Jan 01 00:00:00 CST 2009 pack.info
- bin 目录
大家知道linux下bin一般是busybox,Android下是toybox,那么OpenHarmony是什么呢?对,没错,还是toybox;
lim@TIM:~/OpenHarmony/code-2.0-canary/out/ohos-arm-release/packages/phone/images/system$ ls -hl bin/
total 9.8M
-rwxr-xr-x 1 lim lim 112K Jun 6 16:59 LayerManagerControl
-rwxr-xr-x 1 lim lim 31K Jun 6 16:59 aa
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 acpi -> toybox
-rwxr-xr-x 1 lim lim 310K Jun 2 03:22 apexd
-rwxr-xr-x 1 lim lim 9.5K Jun 6 16:59 appexec
-rwxr-xr-x 1 lim lim 9.4K Jun 6 16:59 appspawn
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 base64 -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 basename -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 bc -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 blockdev -> toybox
-rwxr-xr-x 1 lim lim 48K Jun 6 16:59 bm
-rwxr-xr-x 1 lim lim 46K Jun 6 16:59 bootanimation
-rwxr-xr-x 1 lim lim 92K Jun 2 03:22 bootstat
drwxr-xr-x 2 lim lim 4.0K Jun 2 03:22 bootstrap
lrwxrwxrwx 1 lim lim 5 Jun 2 03:22 bunzip2 -> bzip2
-rwxr-xr-x 1 lim lim 112K Jun 6 16:59 bytrace
lrwxrwxrwx 1 lim lim 5 Jun 2 03:22 bzcat -> bzip2
-rwxr-xr-x 1 lim lim 41K Jun 2 03:22 bzip2
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cal -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cat -> toybox
-rwxr-xr-x 1 lim lim 35K Jun 6 16:59 cem
-rwxr-xr-x 1 lim lim 263K Jun 2 03:22 charger
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 chcon -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 chgrp -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 chmod -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 chown -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 chroot -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 chrt -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cksum -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 clear -> toybox
-rwxr-xr-x 1 lim lim 35K Jun 2 03:22 cmd
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cmp -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 comm -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cp -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cpio -> toybox
-rwxr-xr-x 1 lim lim 105K Jun 2 03:22 crash_dump32
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 cut -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 date -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 dd -> toybox
-rwxr-xr-x 1 lim lim 12K Jun 2 03:22 debuggerd
-rwxr-xr-x 1 lim lim 327K Jun 6 16:59 deviceauth_service
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 devmem -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 df -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 diff -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 dirname -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 dmesg -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 dos2unix -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 du -> toybox
-rwxr-xr-x 1 lim lim 41K Jun 2 03:22 dumpsys
-rwxr-xr-x 1 lim lim 119K Jun 2 03:22 e2fsdroid
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 echo -> toybox
lrwxrwxrwx 1 lim lim 4 Jun 2 03:22 egrep -> grep
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 env -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 expand -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 expr -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 fallocate -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 false -> toybox
-rwxr-xr-x 1 lim lim 9.6K Jun 6 16:59 faultloggerd
lrwxrwxrwx 1 lim lim 4 Jun 2 03:22 fgrep -> grep
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 file -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 find -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 flock -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 fmt -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 free -> toybox
-rwxr-xr-x 1 lim lim 1.1K Jun 2 03:22 fsverity_init
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 fsync -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 getconf -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 getenforce -> toybox
lrwxrwxrwx 1 lim lim 7 Jun 2 03:22 getevent -> toolbox
lrwxrwxrwx 1 lim lim 7 Jun 2 03:22 getprop -> toolbox
-rwxr-xr-x 1 lim lim 28K Jun 2 03:22 grep
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 groups -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 gunzip -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 gzip -> toybox
-rwxr-xr-x 1 lim lim 1.2M Jun 6 16:59 hdcd
-rwxr-xr-x 1 lim lim 9.5K Jun 6 16:59 hdf_devhost
-rwxr-xr-x 1 lim lim 30K Jun 6 16:59 hdf_devmgr
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 head -> toybox
-rwxr-xr-x 1 lim lim 67K Jun 6 16:59 hilog
-rwxr-xr-x 1 lim lim 92K Jun 6 16:59 hilogd
-rwxr-xr-x 1 lim lim 124K Jun 6 16:59 hiview
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 hostname -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 hwclock -> toybox
-rwxr-xr-x 1 lim lim 75K Jun 2 03:22 hwservicemanager
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 i2cdetect -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 i2cdump -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 i2cget -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 i2cset -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 iconv -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 id -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 ifconfig -> toybox
-rwxr-xr-x 1 lim lim 522K Jun 2 03:22 init
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 inotifyd -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 insmod -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 install -> toybox
-rwxr-xr-x 1 lim lim 169K Jun 6 16:59 installs
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 ionice -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 iorenice -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 kill -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 killall -> toybox
-rwxr-xr-x 1 lim lim 14K Jun 6 16:59 layer-add-surfaces
lrwxrwxrwx 1 lim lim 36 Jun 2 03:22 linker -> /apex/com.android.runtime/bin/linker
lrwxrwxrwx 1 lim lim 36 Jun 2 03:22 linker_asan -> /apex/com.android.runtime/bin/linker
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 ln -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 load_policy -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 log -> toybox
-rwxr-xr-x 1 lim lim 80K Jun 2 03:22 logcat
-rwxr-xr-x 1 lim lim 157K Jun 2 03:22 logd
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 logname -> toybox
-rwxr-xr-x 1 lim lim 16K Jun 2 03:22 logwrapper
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 losetup -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 ls -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 lsmod -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 lsof -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 lspci -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 lsusb -> toybox
-rwxr-xr-x 1 lim lim 45K Jun 2 03:22 make_f2fs
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 md5sum -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 microcom -> toybox
-rwxr-xr-x 1 lim lim 38K Jun 2 03:22 mini-keyctl
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mkdir -> toybox
-rwxr-xr-x 1 lim lim 66K Jun 2 03:22 mke2fs
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mkfifo -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mkfs.ext2 -> mke2fs
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mkfs.ext3 -> mke2fs
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mkfs.ext4 -> mke2fs
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mknod -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mkswap -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mktemp -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 modinfo -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 modprobe -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 more -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mount -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mountpoint -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 mv -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 nc -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 netcat -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 netstat -> toybox
-rwxr-xr-x 1 lim lim 25K Jun 2 03:22 newfs_msdos
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 nice -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 nl -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 nohup -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 nproc -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 nsenter -> toybox
lrwxrwxrwx 1 lim lim 37 Jun 2 03:22 oatdump -> /apex/com.android.runtime/bin/oatdump
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 od -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 paste -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 patch -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 pgrep -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 pidof -> toybox
lrwxrwxrwx 1 lim lim 6 Jun 2 03:22 pkill -> toybox
lrwxrwxrwx 看看OpenHarmony编译出的镜像中都有啥
delphi 2010中 有啥快捷键可以提示将要输入的代码?像Eclipse中都有(Ctrl + / )键来提示要输入的代码
从零开始DevEcoTool编译烧录OpenHarmony3.1