本文用于记录工作中常使用调试命令和方法,持续更新中…
git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
众所周知,Android源码库由若干个git仓库独立管理,为了更好的维护和管理整个Android源码,Google引入了repo工具——使用Python对git进行了一定的封装,简化了对多个Git版本库的管理。
# xxx表示分支名(同下)
repo start --all xxx
#或者
repo forall -c "git checkout xxx"
#repo forall -c "[git command]"对所有仓库执行git命令,如下git reset --hard
repo forall -c "git reset --hard"
#查看当前所在分支
git branch
#查看远程分支
git branch -r
#查看所有分支(本地+远程)
git branch -a
#添加本地/远程分支,xxx表示分支名
git checkout -b xxx //新建本地分支并切换至新分支
git push origin xxx //新分支推至远程
git branch -d xxx //删除本地分支
git push origin xxx //更新至远程
#或者
git push origin --delete xxx
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
#修改最近一次修改的commit
git commit --amend
git push origin HEAD:refs/for/xxx //更新至远程分支
#配置commit模板
vim ~/commit_template
问题单号:
问题描述:
解决方案:
关联修改:
自测:
git config commit.template ~/commit_template
#查看当前分支所有提交记录
git lg 或git log
#按关键字key查找提交记录
git lg | grep -a "key" //-a表示忽略关键字大小写
#查看指定文件提交记录
git lg [filePath]
#查看指定作者的提交记录
git lg --author=老王 //查找老王的提交记录
#作者分类查看提交记录
git shortlog
#定位某个文件某处修改提交记录
git blame [filePath] | grep "key" //查看filePath文件中,关键字为key的提交记录
#清除所有未跟踪文件(慎用)
git clean -xdf
#gerrit提交
git push origin HEAD:refs/for/xxx 向远程分支XXX提交修改
adb devices
adb connect [IP] //连接指定IP的设备
adb disconnect //断开连接
adb root ; adb remount; adb push \\wsl$\Ubuntu-18.04\home\user\xxx\out\target\product\xxx\system\framework\services.jar system/framework/services.jar;adb shell sync
adb root;adb remount;adb pull /data/system/packages.xml C:\Users\user\Desktop
adb logcat >C:\Users\user\Desktop\adbLog\080801.log
#抓error级log
adb shell "logcat *:e" >C:\Users\user\Desktop\adbLog\080801.log
#过滤指定TAG(hello) log
adb shell "logcat -s 'hello' " >C:\Users\user\Desktop\adbLog\080801.log
#反过滤指定TAG(hello) log
adb shell "logcat |grep -v 'hello' " >C:\Users\user\Desktop\adbLog\080801.log
adb reboot
adb reboot recovery //进入recovery模式
adb reboot edl
//模拟发送电池电量变化广播,并指定电池电量为100%,AC充电,电池温度为60°C
adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei level 100 --ei plugged 1 --ei temperature 600
参数说明
参数 | 描述 |
---|---|
-a action | 指定intent操作,如android.intent.action.VIEW |
-f flags | 向setFlags()支持的intent添加标记。如FLAG_RECEIVER_INCLUDE_BACKGROUND:0x01000000 |
–es extra_key extra_string_value | 以键值对的形式添加字符串数据 |
–ez extra_key extra_boolean_value | 以键值对的形式添加布尔值数据 |
–ei extra_key extra_int_value | 以键值对的形式添加整数型数据 |
–el extra_key extra_long_value | 以键值对的形式添加长整型数据 |
–ef extra_key extra_float_value | 以键值对的形式添加浮点型数据 |
dumpsys activity activities | grep mResumedActivity
dumpsys input
getevent
$dumpsys battery
Current Battery Service state:
AC powered: true //true表示使用AC电源
USB powered: false //false表示没使用USB电源
Wireless powered: false //false表示没使用无线充电
Max charging current: 0 //最大充电电压
Max charging voltage: 0 //最大充电电流
Charge counter: 104430 //
status: 4 //电池状态:1(UNKNOWN未知)、2(CHARGING充电)、3(DISCHARGING放电)、4(NOT_CHARGING未充电)、5(FULL满电)
health: 2 //电池健康:1(UNKNOWN未知)、2(GOOD良好)、3(OVERHEAT过热)、4(DEAD损坏)、5(OVER_VOLTAGE过压)、6(UNSPECIFIED_FAILURE未指定故障)
present: true //true表示已安装电池
level: 30 //当前电量百分比为30
scale: 100 //最大电量百分比
voltage: 3749 //当前电压3.749V
temperature: 350 //当前电池问题35.0°C
technology: Li-ion //电池类型为锂电池
查看dumpsys battery 命令详解
$ dumpsys battery help
Battery service (battery) commands:
help
Print this help text.
set [-f] [ac|usb|wireless|status|level|temp|invalid] //设置充电模式(电源|usb|无线),电池状态,电量,温度
Force a battery property value, freezing battery state.
unplug [-f] //设置未充电模式
Force battery unplugged, freezing battery state.
reset [-f] //重置电池信息
Unfreeze battery state, returning to current hardware values.
电池信息设置
cmd | fuction |
---|---|
dumpsys battery set level 1 | 设置电量为1% |
dumpsys battery set temp 690 | 设置电池温度69°C(高于68°C高温阈值,会自动关机) |
dumpsys battery set ac/usb/wireless 1 | 设置为AC/USB/Wireless充电 |
dumpsys battery set status 2 | 电池为充电状态 |
dumpsys battery unplug | 设置断开充电(Android 6.0以上) |
dumpsys battery reset | 复位,恢复实际状态 |
su
#查看屏幕亮度
cat sys/class/backlight/panel0-backlight/brightness //panel0-backlight因平台而异
104 //亮度值0~255
设置屏幕亮度
echo 255 >sys/class/backlight/panel0-backlight/brightness
查看屏幕旋转角度
getprop persist.panel.orientation
设置屏幕旋转角度(0/90/180/270)
setprop persist.panel.orientation 90
cmd | fuction |
---|---|
dumpsys devicestoragemonitor | 显示设备存储信息 |
dumpsys devicestoragemonitor force-low -f | 强制设置设备存储容量不足 |
dumpsys devicestoragemonitor force-not-low -f | 强制取消设备存储容量不足 |
dumpsys devicestoragemonitor reset -f | 强制复位设备存储配置 |
wm density //查看屏幕密度
wm density 240 //设置屏幕密度
wm size //查看屏幕分辨率
wm size 1920x1080 //设置屏幕分辨率
pm list packages
pm enable com.android.provision
service list
#查看当前使用输入法:
$settings get secure default_input_method
com.android.inputmethod.pinyin/.PinyinIME
#设置指定输入法
settings put secure default_input_method com.android.inputmethod.pinyin/.PinyinIME
查看当前输入法ime命令详解
$ime
ime :
list [-a] [-s]
prints all enabled input methods.
-a: see all input methods
-s: only a single summary line of each
enable [--user ]
allows the given input method ID to be used.
--user : Specify which user to enable. Assumes the current user if not specified.
disable [--user ]
disallows the given input method ID to be used.
--user : Specify which user to disable. Assumes the current user if not specified.
set [--user ]
switches to the given input method ID.
--user : Specify which user to enable. Assumes the current user if not specified.
reset [--user ]
reset currently selected/enabled IMEs to the default ones as if the device is initially booted w
ith the current locale.
--user : Specify which user to reset. Assumes the current user if not specified.
$ime list -s
com.android.inputmethod.pinyin/.PinyinIME
查看当前输入法
$ime list -s
com.android.inputmethod.pinyin/.PinyinIME
查看所有输入法
$ime list -a
基于Android 10为例
```
###更新framework-res.apk###
#项目根目录mmm编译framework-res模块,如果有新增文件使用mmma
mmm frameworks/base/core/res/
#adb 更新设备framework-res.apk
adb root;adb remount;adb push \\wsl$\Ubuntu-18.04\home\userName\AOSP_An10\out\target\product\xxx\system\framework\framework-res.apk system/framework/framework-res.apk;adb shell sync;adb reboot
```
#编译framework/base/core/jni后更新system/lib/libandroid_runtime.so、system/lib64/libandroid_runtime.so
mmm frameworks/base/core/jni/
$adb root;adb remount;adb push \\wsl$\Ubuntu-18.04\home\userName\AOSP_An10\out\target\product\xxx\system\lib\libandroid_runtime.so system/lib/libandroid_runtime.so
$adb push \\wsl$\Ubuntu-18.04\home\userName\AOSP_An10\out\target\product\xxx\system\lib64\libandroid_runtime.so system/lib64/libandroid_runtime.so;adb shell sync;adb reboot
### 更新services.jar###
#项目根目录mmm编译framework services模块,如果有新增文件使用mmma
mmm frameworks/base/services/
#adb 更新设备services.jar
adb root;adb remount;adb push \\wsl$\Ubuntu-18.04\home\userName\AOSP_An10\out\target\product\xxx\system\framework\services.jar system/framework/services.jar;adb shell sync;adb reboot
//获得设备avc log
$adb shell "cat /proc/kmsg | grep avc" > avc_log.txt
$audit2allow -i avc_log.txt -p out/target/product/xxxvendor/etc/selinux/precompiled_sepolicy
#============= netd ==============
allow netd system_file:dir { add_name write };
allow netd system_file:file create;
#============= proc_net ==============
allow proc_net proc:filesystem associate;
#============= su ==============
allow su bt_firmware_file:filesystem getattr;
allow su firmware_file:filesystem getattr;
cat sys/module/lowmemorykiller/parameters/adj
cat sys/module/lowmemorykiller/parameters/minfree
//Android.bp
android_app {
name: "Music",
srcs: ["src/**/*.java"],
resource_dirs: ["kotlin/res"],
sdk_version: "current",
product_specific: true,
optimize: {
proguard_flags_files: ["proguard.flags"],
},
+ dex_preopt: {
+ enabled: false,
+ },
}
//Android.mk
+LOCAL_DEX_PREOPT := false
系统编译禁用dexpreopt,常用于模块化编译验证
build/make/core/board_config.mk
- WITH_DEXPREOPT := true
+ WITH_DEXPREOPT := false
build/make/core/dex_preopt_config.mk
- WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ?= true
+ WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY ?= false
...
# only. b/74209329
- ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
- ifneq (true,$(WITH_DEXPREOPT))
- ifneq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))
- $(call pretty-error, DEXPREOPT must be enabled for user and userdebug builds)
- endif
- endif
- endif
+# ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
+# ifneq (true,$(WITH_DEXPREOPT))
+# ifneq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))
+# $(call pretty-error, DEXPREOPT must be enabled for user and userdebug builds)
+# endif
+# endif
+# endif
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
a. $(info string) 打印正常输入信息
b. $(warning string) 打印警告信息
c. $(error string) 打印错误信息
ps -A //可接 | grep "xxx"过滤指定进程
ps -T -p pid
getconf LONG_BIT
64
cat /sys/class/kgsl/kgsl-3d0/gpu_busy_percentage
4%
cat /proc/cpuinfo
cat /proc/version
cat /proc/meminfo
#或者
free -m
#检测内存情况
watch -d -n 1 free -m //每隔1s监测内存变化
#等效于
while true;do free -m;sleep 1;done
#间隔500ms打印free -m日志
while true;do free -m;usleep 500000;done
可用作查看某应用是否使用某so
#已systemUI为例
ps -A #查看进程列表
...
u0_a100 4044 534 5709508 104580 SyS_epoll+ 0 S com.android.systemui:ui
...
cat /proc/4044/maps #查看4044进程的内存映射表
...
7572c20000-7572c21000 r--p 00000000 fd:00 2988 /system/lib64/libashmemd_client.so
7572c21000-7572c22000 --xp 00001000 fd:00 2988 /system/lib64/libashmemd_client.so
7572c22000-7572c23000 rw-p 00002000 fd:00 2988 /system/lib64/libashmemd_client.so
7572c23000-7572c24000 r--p 00003000 fd:00 2988 /system/lib64/libashmemd_client.so
#第一列表示内存段的虚拟地址
#第二列表示执行权限
#第三列表示进程地址的偏移量
#第四列表示映射文件的主、次设备号
#第五列表示映射文件的节点号
#第六列表示映射文件路径
...
ln [-sf] 来源文件 目标文件
选项与参数:
-s :如果不加任何参数就进行连结,那就是 hard link,至亍 -s 就是 symbolic link
-f :如果 目标文件 存在时,就主动的将目标文件直接移除后再建立!
#ln -sf /tmp/folder /tmp/folder/files_ln
#ls -al
drwxr-x--- 2 root root 4096 Apr 30 16:46 files
lrwxrwxrwx 1 root root 11 Apr 30 16:59 files_ln -> /tmp/folder
由于linux环境下编译dos格式文件经常出错,例如:
cd: $‘app/src/main/jni/capnproto/c++\r‘: No such file or directory
经检查由于文件格式为dos,需转为linux环境的Unix格式
方法一:通过notePad++ -->打开文件–>编辑–>文档格式转换–>转为Unix(LF)
方法二:dos2unix
#若未安装dos2unix,需先安装
sudo apt install dos2unix
#单个文件转换
sudo dos2Unix $filepath
#批量转换
for x in $(find . -type f);do sudo dos2unix $x $x;done
#统计当前路径文件个数(不包含子目录)
$ ls -l | grep "^-" | wc -l
11099
#统计当前路径文件个数(包含子目录)
$ ls -lR| grep "^-" | wc -l
11298
#统计当前路径文件夹/目录个数(包含子目录)
$ ls -lR | grep "^d" | wc -l
0
wc命令用于统计指定文件中的字节数,字数,行数,并将统计结果显示输出。wc是word count的缩写。
cmd | fuction |
---|---|
-w,–words | 统计字数,一个字被定义为有空白、跳格或换行字符分隔的字符串 |
-c,–bytes | 统计字节数 |
-l,–lines | 统计行数 |
-m,–chars | 统计字符数 |
-L,–max-line-length | 打印最长行的长度 |
–help | 显示帮助信息 |
–version | 显示版本 |
#下面使用wc命令统计text.txt文件信息,其内容如下:
$ cat text.txt
qwer
123456
!@#$%^ #!!!注意这行没有换行符
#统计text.txt字数
$ wc -w text.txt
3 text.txt
#统计text.txt行数
$ wc -l text.txt
2 text.txt #文件中只有两个换行符,故行数为2
#统计text.txt字符数
$ wc -m text.txt
20 text.txt
#统计text.txt最长行的长度
$ wc -L text.txt
6 text.txt
#统计text.txt字节数
$ wc -c text.txt
20 text.txt
#查看图片文件字节内容
$ vi -b IRI_20230209_152813.jpg
:%!xxd
sed -i ':a;N;$!ba;s/\n/;/g' file
#生成大小为5000M的test1文件
$ fallocate -l 5000m test1
解压apk后获得META-INF/CERT.RSA文件
在linux环境下使用keytool工具查看apk的签名指纹信息
$keytool -printcert -file test/CERT.RSA
Owner: EMAILADDRESS=xxx, CN=gd07729, OU=Android, O=Guide, L=Wuhan View, ST=Wuhan, C=CN
Issuer: EMAILADDRESS=xxx, CN=gd07729, OU=Android, O=Guide, L=Wuhan View, ST=Wuhan, C=CN
Serial number: 25a955023b8ab1e81f5a9493c45b71d029aa9de8
Valid from: Mon Jul 18 10:34:02 CST 2022 until: Fri Dec 03 10:34:02 CST 2049
Certificate fingerprints:
SHA1: 8C:A0:99:B8:18:9A:AE:4A:q3:46:AF:AF:23:5C:10:16:60:AD:56:51
SHA256: DB:4C:DE:D3:8F:9E:41:39:9F:25:EE:D6:65:5B:97:87:94:9B:9F:9F:6B:27:F4:C5:29:C3:FB:54:9C:4F:69:EE
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
或者通过签名证书文件获取
keytool -list -v -keystore $keystore_file [-storepass password]
//查看所有分区
# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.7G 0.9M 1.7G 1% /dev
tmpfs 1.7G 0 1.7G 0% /mnt
tmpfs 1.7G 0 1.7G 0% /apex
/dev/block/mmcblk0p50 11M 72K 11M 1% /metadata
/dev/block/dm-0 876M 873M 3.0M 100% /
/dev/block/dm-1 385M 384M 1.1M 100% /product
/dev/block/dm-2 500M 499M 1.8M 100% /vendor
/dev/block/mmcblk0p1 180M 103M 76M 58% /vendor/firmware_mnt
/dev/block/mmcblk0p35 27M 13M 14M 49% /vendor/dsp
/dev/block/mmcblk0p49 27M 1.2M 26M 5% /mnt/vendor/persist
/dev/block/mmcblk0p40 64M 832K 63M 2% /vendor/bt_firmware
/dev/block/mmcblk0p78 94M 44K 94M 1% /guideir
/dev/block/mmcblk0p79 44G 28G 16G 64% /data
/data/media 44G 28G 16G 64% /mnt/runtime/default/emulated
/dev/block/vold/public:179,65 59G 14G 45G 24% /mnt/media_rw/9C33-6BBD
/mnt/media_rw/9C33-6BBD 59G 14G 45G 24% /mnt/runtime/default/9C33-6BBD
//可知SD卡9C33-6BBD挂载在文件系统/dev/block/vold/public:179,65
# blkid /dev/block/vold/public:179,65
/dev/block/vold/public:179,65: LABEL="disk" UUID="9C33-6BBD" TYPE="exfat" //即SD卡文件类型为exfat
使用sqlite3处理.db数据库文件(这里以android系统btopp.db文件为例),常用命令如下:
cmd | fuction |
---|---|
sqlite3 xxx.db | 进入数据库命令行 |
sqlite3 -help | 查看sqlite3命令帮助手册 |
#查看sqlite3命令帮助手册
$ sqlite3 -help
Usage: sqlite3 [OPTIONS] FILENAME [SQL]
FILENAME is the name of an SQLite database. A new database is created
if the file does not previously exist.
OPTIONS include:
-ascii set output mode to 'ascii'
-bail stop after hitting an error
-batch force batch I/O
-column set output mode to 'column'
-cmd COMMAND run "COMMAND" before reading stdin
-csv set output mode to 'csv'
-echo print commands before execution
-init FILENAME read/process named file
-[no]header turn headers on or off
-help show this message
-html set output mode to HTML
-interactive force interactive I/O
-line set output mode to 'line'
-list set output mode to 'list'
-lookaside SIZE N use N entries of SZ bytes for lookaside memory
-mmap N default mmap size set to N
-newline SEP set output row separator. Default: '\n'
-nullvalue TEXT set text string for NULL values. Default ''
-pagecache SIZE N use N slots of SZ bytes each for page cache memory
-quote set output mode to 'quote'
-separator SEP set output column separator. Default: '|'
-stats print memory stats before each finalize
-version show SQLite version
-vfs NAME use NAME as the default VFS
#进入数据库命令行
$ sqlite3 btopp.db
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
sqlite>
通过sqlite3 xxx.db进入数据库命令行,可对数据库进行增、删、改、查等操作
cmd | fuction |
---|---|
.help | 查看数据库命名帮助手册 |
.tables | 查看数据库所有表 |
select * from table1 | 查看数据表table1所有数据 |
update table1 set value=1 where id=14 | 更新table1表第14个数据的value值为1 |
insert into table1 values(10,‘test’,0) | 在table1第10行插入test数据,值为0 |
#查看数据库命名帮助手册
sqlite> .help;
.archive ... Manage SQL archives: ".archive --help" for details
.auth ON|OFF Show authorizer callbacks
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail on|off Stop after hitting an error. Default OFF
.binary on|off Turn binary output on or off. Default OFF
.cd DIRECTORY Change the working directory to DIRECTORY
.changes on|off Show number of rows changed by SQL
.check GLOB Fail if output since .testcase does not match
.clone NEWDB Clone data into NEWDB from the existing database
.databases List names and files of attached databases
.dbinfo ?DB? Show status information about the database
.dump ?TABLE? ... Dump the database in an SQL text format
If TABLE specified, only dump tables matching
LIKE pattern TABLE.
.echo on|off Turn command echo on or off
.eqp on|off|full Enable or disable automatic EXPLAIN QUERY PLAN
.excel Display the output of next command in a spreadsheet
.exit Exit this program
.expert EXPERIMENTAL. Suggest indexes for specified queries
.fullschema ?--indent? Show schema and the content of sqlite_stat tables
.headers on|off Turn display of headers on or off
.help Show this message
.import FILE TABLE Import data from FILE into TABLE
.imposter INDEX TABLE Create imposter table TABLE on index INDEX
.indexes ?TABLE? Show names of all indexes
If TABLE specified, only show indexes for tables
matching LIKE pattern TABLE.
.limit ?LIMIT? ?VAL? Display or change the value of an SQLITE_LIMIT
.lint OPTIONS Report potential schema issues. Options:
fkey-indexes Find missing foreign key indexes
.load FILE ?ENTRY? Load an extension library
.log FILE|off Turn logging on or off. FILE can be stderr/stdout
.mode MODE ?TABLE? Set output mode where MODE is one of:
ascii Columns/rows delimited by 0x1F and 0x1E
csv Comma-separated values
column Left-aligned columns. (See .width)
html HTML code
insert SQL insert statements for TABLE
line One value per line
list Values delimited by "|"
quote Escape answers as for SQL
tabs Tab-separated values
tcl TCL list elements
.nullvalue STRING Use STRING in place of NULL values
.once (-e|-x|FILE) Output for the next SQL command only to FILE
or invoke system text editor (-e) or spreadsheet (-x)
on the output.
.open ?OPTIONS? ?FILE? Close existing database and reopen FILE
The --new option starts with an empty file
.output ?FILE? Send output to FILE or stdout
.print STRING... Print literal STRING
.prompt MAIN CONTINUE Replace the standard prompts
.quit Exit this program
.read FILENAME Execute SQL in FILENAME
.restore ?DB? FILE Restore content of DB (default "main") from FILE
.save FILE Write in-memory database into FILE
.scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off
.schema ?PATTERN? Show the CREATE statements matching PATTERN
Add --indent for pretty-printing
.selftest ?--init? Run tests defined in the SELFTEST table
.separator COL ?ROW? Change the column separator and optionally the row
separator for both the output mode and .import
.session CMD ... Create or control sessions
.sha3sum ?OPTIONS...? Compute a SHA3 hash of database content
.shell CMD ARGS... Run CMD ARGS... in a system shell
.show Show the current values for various settings
.stats ?on|off? Show stats or turn stats on or off
.system CMD ARGS... Run CMD ARGS... in a system shell
.tables ?TABLE? List names of tables
If TABLE specified, only list tables matching
LIKE pattern TABLE.
.testcase NAME Begin redirecting output to 'testcase-out.txt'
.timeout MS Try opening locked tables for MS milliseconds
.timer on|off Turn SQL timer on or off
.trace FILE|off Output each SQL statement as it is run
.vfsinfo ?AUX? Information about the top-level VFS
.vfslist List all available VFSes
.vfsname ?AUX? Print the name of the VFS stack
.width NUM1 NUM2 ... Set column widths for "column" mode
Negative values right-justify
#查看btopp.db数据库所有表
sqlite> .table;
android_metadata btopp
#
sqlite> select * from btopp;
104|content://media/external/images/media/164@2474f4e|THUMB_IRI_20230209_112411.jpg||image/jpeg|0|DC:55:83:F1:78:AA|0|2|403|24526|0|1677289072126|0
105|content://media/external/images/media/70@42c897c|THUMB_IRI_20230209_110212.jpg||image/jpeg|0|DC:55:83:F1:78:AA|0|2|403|17183||1677289072126|0
106|content://media/external/images/media/166@d4d125a|vis-temp.jpg||image/jpeg|0|DC:55:83:F1:78:AA|0|2|403|217672||1677289072126|0
107|content://media/external/images/media/71@676c168|THUMB_VIS_20230209_110212.jpg||image/jpeg|0|DC:55:83:F1:78:AA|0|2|403|20951||1677289072126|0
未完待续...
你可能感兴趣的:(git,github,android,linux)