打印 上一主题 下一主题

SD5360-660-M1麦当劳

[复制链接]
查看: 22648|回复: 25

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
跳转到指定楼层
楼主
发表于 2022-7-14 20:25:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 King 于 2024-10-8 13:53 编辑

个人:锁定竖屏可能会导致 其他接口输出扁平化,局部触摸失效等



黑屏问题依然没有解决
app默认获取所有权限无需动态获取,暂时需动态获取(远程工具、麦当劳等少了无弹窗)
ro.serial无法设置,当时设置的是和家里一致的位置。
wm size 第一次需要设置1080*1920,之后 adb reboot不影响

静默安装对应安装含McDonald's 关键字的app 可以实现静默安装

07142242- 去掉远程弹窗。

660仍然存在的问题如下:
1、通知栏菜单,开关设置无效。(通知栏状态栏需同时打开,逻辑上无状态栏就无通知栏)
2、主屏旋转角度默认0度,修改无效。(7.16 可以支持旋转)
3、升级后(或恢复出厂设置),分辨率不正确,需要adb修改。
4.定时开关机,时间节点。(批量出货之后方可实现)




静默安装,上层调用方式,rom 实现
val intent = Intent("android.intent.action.SILENT_PACKAGE_INSTALL")
intent.component =ComponentName("com.android.packageinstaller",
"com.android.packageinstaller.SilentInstallerReceiver")
intent.putExtra("silent_install_file", file.absolutePath)
sendBroadcast(intent,null)
要求全量包升级
提供给上层调用的唯一识别码
获取设备唯一序列号,序列号和pc 外面贴的标签一致
如:上层调用方式:
Settings.Global.getString(context.getContentResolver(), "ro_serial")
1)系统设置增加以太网设置菜单,支持dhcp和静态IP设置;
2)静态 ip 配置
上层调用方式如下,rom实现
Intent intent = new Intent("android.net.action.ETHERNET_IP_CHANGED");
intent.putExtra("netMode", "static");
intent.putExtra("ipaddr",xx.xx.xx.xx);
//static 配置中子网掩码可能为空,接口里面拿到子网掩码进行配置
intent.putExtra("netMask", xxx.xxx.xxx.xx);
intent.putExtra("gateway",xxx.xxx.xx.xx);
intent.putExtra("dns1", xxx.xxx.xx.xx);
intent.putExtra("dns2", xxx.xxx.xx.xx);
intent.setComponent(new ComponentName("com.android.settings",
"com.android.settings.ethernet. EthernetBroadcastReceiver"));
context.sendBroadcast(intent,null);
3)切为动态 dhcp 增加动态配置的方式,广播只传入配置方式 netMode 为 dhcp,其他内容为空。
Intent intent = new Intent("android.net.action.ETHERNET_IP_CHANGED");
intent.putExtra("netMode", "dhcp");
intent.setComponent(new ComponentName("com.android.settings",
"com.android.settings.ethernet.EthernetBroadcastReceiver"));
context.sendBroadcast(intent,null);


查询webview 版本
app 管理里查看,‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎version ‎‏‎‎‏‏‎93.0.4577.62‎‏‎‎‏‏‏‎‎‏‎‎‏‎
adb shell dumpsys webview | grep "WebViewFactory"





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
沙发
 楼主| 发表于 2022-7-15 16:46:56 | 只看该作者
本帖最后由 King 于 2024-10-28 16:37 编辑

ro_serial 关联 ro.serial
或者将ro_serial 放在固定不可重置区域。

设置
adb shell am broadcast -a com.android.serial --es set CJAM1012345

adb shell "am broadcast -a com.android.serial --es set 12345678"


获取
Settings.Global.getString(context.getContentResolver(), "ro_serial")
settings get global ro_serial

adb shell settings get global ro_serial


adb shell "am broadcast -a com.android.serial --es set CJAM1010000000J23010037"
广播写入一次后,可以用settings put global ro_serial 12345678 写入



adb shell dumpsys display | grep "mDisplayId"

多屏操作:adb shell dumpsys display
scrcpy.exe --display 10 (错误后,可查看当前可用屏幕)
scrcpy 目录下执行
scrcpy.exe --display 0  主屏
scrcpy.exe --display 1  副屏
# 基本语法
scrcpy --display <display-id>

# 示例:控制显示ID为1的屏幕
scrcpy --display 1

# 同时控制多个显示
scrcpy --display 0 & scrcpy --display 1

# 列出所有显示设备详细信息
adb shell dumpsys display | grep -A 20 "Display Devices"

# 查看当前活跃的显示
adb shell dumpsys display | grep "mCurrentDisplayRect"

# 查看显示状态
adb shell dumpsys display | grep "Display Power"




# 实时监控显示状态变化
adb shell dumpsys display | grep -E "mDisplayId|mState" --line-buffered

# 或使用watch命令
watch -n 1 "adb shell dumpsys display | grep mDisplayId"








回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
板凳
 楼主| 发表于 2022-7-18 11:00:31 | 只看该作者
本帖最后由 King 于 2023-8-18 18:23 编辑

远程使用时,副屏跟随旋转要关掉,远程才能正常全屏V1 签名JAVA_HOME:C:\Program Files\Java\jre1.8.0_333
JAVA_HOME:C:\Program Files\Java\jre1.8.0_333
D:\Tools\signapk
java -jar signapk.jar platform.x509.pem platform.pk8 MCD.apk MCD_signed.apk


JAVA_HOME:C:\Program Files\Java\jdk-20
v1 v2 v3签名
C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\33.0.0
$ apksigner sign --key platform.pk8 --cert platform.x509.pem --out MCD_signed.apk MCD.apk



centos环境
devops/apksign
使用java 配置 sudo update-alternatives --config java ,java-1.8.0

使用source profile 配置
#set java environment
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
export JRE_HOME=/usr/lib/jvm/jre
export CLASSPATH=.JAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jarJAVA_HOME/jre/lib/rt.jar
export PATH=$PATHJAVA_HOME/bin
export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.xml.bind'

export ANDROID_HOME=/var/lib/jenkins/android-sdk/tools/bin
export PATH=$PATHANDROID_HOME/cmdline-tools/latest/bin


找到libconscrypt_openjdk_jni.so 库 修改可执行权限 执行 ldd libcon……即可解决 Failed to load any of the given libraries: [conscrypt_openjdk_jni-linux-x86_64,问题
java -jar -Djava.library.path=. signapk.jar platform.x509.pem platform.pk8 MCD.apk MCD_Signed.apk
java -jar -Djava.library.path=. signapk.jar platform.x509.pem platform.pk8 MCD.apk MCD_Signed.apk

查看前面SHA-1值
keytool  -printcert -jarfile C:\Users\Administrator\Desktop\CashBoxService.apk




回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
地板
 楼主| 发表于 2022-7-20 14:25:30 | 只看该作者
竖屏固件调整横屏后恢复出厂,开机logo 不全屏
竖屏倒向 90度,刷机,logo正向竖屏,动画倒向。
回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
5#
 楼主| 发表于 2022-10-17 20:53:40 | 只看该作者
本帖最后由 King 于 2022-10-19 15:32 编辑

cat /sys/devices/virtual/thermal/thermal_zone5/temp
这个是核心模组里面的温度
[backcolor=var(--im_chat_message_bg_color,#c9e7ff)]adb shell cat /proc/meminfo
[backcolor=var(--im_chat_message_bg_color,#c9e7ff)]查看内存使用情况

cat /proc/stat  或者 dumpsys cpuinfo
查看CPU占用情况
[color=var(--common_level2_base_color,rgba(23,26,29,0.6))]





[color=var(--common_level2_base_color,rgba(23,26,29,0.6))]




_________________________________________________________________________________________________________________
打开
1111111 -> 周一/.../周日
关闭
0000000 -> 周一/.../周日
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es shut_time 15:18 --es week 1111111 --ez effective true"
——————————————————————————————————————————————————————————————————————
打开(不加--es week是星期全打开)
1111111 -> 周一/.../周日
关闭
0000000 -> 周一/.../周日
单独设置开机时间/星期
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es week 1111111 --ez effective true"

单独设置关机时间/星期
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es shut_time 15:18 --es week 1111111 --ez effective true"

同时设置时间/星期(星期在开机和关机上同时生效)
adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es shut_time 15:18 --es week 1111111 --ez effective true"


张健:
这个参数必须7个,同时设置。打开设置1,关闭设置0

少了参数,不加参数,默认星期全设置


————————————————————————————————————————————————————

打开(不加--es week是星期全打开)
1111111 -> 周一/.../周日
关闭
0000000 -> 周一/.../周日
单独设置开机时间/星期
scrcpy.adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es week 1111111 --ez effective true"

单独设置关机时间/星期
scrcpy.adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es shut_time 15:18 --es week 1111111 --ez effective true"

同时设置时间/星期(星期在开机和关机上同时生效)
scrcpy.adb shell "am broadcast -a com.ubiot.auto_power_shut -f 0x1000000 --es power_time 15:22 --es shut_time 15:18 --es week 1111111 --ez effective true"




回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
6#
 楼主| 发表于 2022-11-10 09:13:46 | 只看该作者
本帖最后由 King 于 2024-10-24 11:30 编辑

一个只刷Android,一个全文件刷,你们用的是Android部分的,在那个Android的xml里面。。除了Android还有3g/4g的代码,以及供电部分代码和其他部分的,我这边为了方便就一起刷的。


sadb shell am force-stop com.mcdonalds.sok.cn
关闭 麦当劳 进程

adb shell am start -n com.mcdonalds.sok.cn/.activity.LaunchActivity
am start -n com.oray.sunlogin.customize/com.oray.sunlogin.application.Main

拉起麦当劳app 到最顶层


setprop persist.sys.apk_install_auto_start true  //开(默认)

setprop persist.sys.apk_install_auto_start false //关

660平台开发的功能,目的给用户APP自动升级用的,升级完拉起自己。

adb shell getprop persist.sys.apk_install_auto_start      应为false




回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
7#
 楼主| 发表于 2022-12-2 14:08:34 | 只看该作者
本帖最后由 King 于 2023-3-31 16:59 编辑

adb shell "am broadcast -n com.system.ota/com.system.ota.OtaUpdateReceiver -a zysj.remote.update.system"

《adb shell am broadcast -a zysj.remote.update.system》仅添加,上面是adb指令
将update.zip 放在storage/emulated/0 下面
sadb push H:\Downloads\update.zip /sdcard

sadb logcat | grep "ota" 查看进度
03-31 16:50:45.640  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:50:45.642  3331  3344 D ota     : update progress: 91
03-31 16:50:47.727  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:50:47.729  3331  3344 D ota     : update progress: 92
03-31 16:50:49.309  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:50:49.315  3331  3344 D ota     : update progress: 93
03-31 16:51:01.384  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:51:01.388  3331  3344 D ota     : update progress: 94
03-31 16:51:06.432  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:51:06.434  3331  3344 D ota     : update progress: 95
03-31 16:51:07.564  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:51:07.566  3331  3344 D ota     : update progress: 96
03-31 16:51:07.792  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:51:07.794  3331  3344 D ota     : update progress: 97
03-31 16:51:07.987  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:51:07.990  3331  3344 D ota     : update progress: 98
03-31 16:51:08.175  3331  3344 D ota     : onStatusUpdate  status: 3
03-31 16:51:08.177  3331  3344 D ota     : update progress: 99
03-31 16:51:09.058  3331  3344 D ota     : onStatusUpdate  status: 5
03-31 16:51:23.929  3331  3344 D ota     : onStatusUpdate  status: 5
03-31 16:51:23.949  3331  3344 D ota     : onStatusUpdate  status: 6
03-31 16:51:23.949  3331  3344 D ota     : onPayloadApplicationComplete errorCode=0
03-31 16:51:23.953  3331  3344 D ota     : UPDATE SUCCESS!
03-31 16:51:23.968  1037  1037 I update_engine: [0331/165123.968887:INFO:metrics_reporter_android.cc(29)] uploading 1 to histogram for metric ota_update_engine_attempt_number
03-31 16:51:23.969  1037  1037 I update_engine: [0331/165123.969088:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_attempt_payload_type
03-31 16:51:23.969  1037  1037 I update_engine: [0331/165123.969166:INFO:metrics_reporter_android.cc(29)] uploading 3 to histogram for metric ota_update_engine_attempt_duration_boottime_in_minutes
03-31 16:51:23.969  1037  1037 I update_engine: [0331/165123.969232:INFO:metrics_reporter_android.cc(29)] uploading 3 to histogram for metric ota_update_engine_attempt_duration_monotonic_in_minutes
03-31 16:51:23.969  1037  1037 I update_engine: [0331/165123.969295:INFO:metrics_reporter_android.cc(29)] uploading 605 to histogram for metric ota_update_engine_attempt_payload_size_mib
03-31 16:51:23.969  1037  1037 I update_engine: [0331/165123.969357:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_attempt_result
03-31 16:51:23.969  1037  1037 I update_engine: [0331/165123.969718:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_attempt_error_code
03-31 16:51:24.002  1037  1037 I update_engine: [0331/165124.002054:INFO:metrics_reporter_android.cc(29)] uploading 634524960 to histogram for metric ota_update_engine_attempt_current_bytes_downloaded_mib
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024065:INFO:metrics_reporter_android.cc(29)] uploading 1 to histogram for metric ota_update_engine_successful_update_attempt_count
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024291:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_successful_update_payload_type
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024412:INFO:metrics_reporter_android.cc(29)] uploading 605 to histogram for metric ota_update_engine_successful_update_payload_size_mib
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024524:INFO:metrics_reporter_android.cc(29)] uploading 605 to histogram for metric ota_update_engine_successful_update_total_bytes_downloaded_mib
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024632:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_successful_update_download_overhead_percentage
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024741:INFO:metrics_reporter_android.cc(29)] uploading 3 to histogram for metric ota_update_engine_successful_update_total_duration_in_minutes
03-31 16:51:24.024  1037  1037 I update_engine: [0331/165124.024848:INFO:metrics_reporter_android.cc(29)] uploading 0 to histogram for metric ota_update_engine_successful_update_reboot_count
03-31 16:51:25.497  3331  3344 E ota     : rebootNow


升级完成后 直接重启,没有提示,检测版本号后面有-OTA 表示升级成功。
升级完成后,根目录 update.zip 删除


回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
8#
 楼主| 发表于 2022-12-6 09:34:31 | 只看该作者
本帖最后由 King 于 2022-12-13 17:13 编辑

$ sadb shell
sdm660_64:/ $ settings list global | grep ntp
ntp_server=ntp1.aliyun.com
ntp_server_2=persist.vendor.ntp.svr_2


$ adb shell settings put global ntp_server asia.pool.ntp.org

# test
$ adb shell settings get global ntp_server
> asia.pool.ntp.org
1、设置时间adb shell "date 07010101.00"
设置时间格式为MMDDHHM.00,不能设置年
慧为:
adb shell date 022520402021.59 set
adb shell su -c date 022520402021.59 set  加su 权限



2、读取时间
adb shell "date"

3、设置时区
adb shell "setprop persist.sys.timezone Pacific/Midway"
Pacific/Midway为设置的时区
4、读取时区
adb shell "getprop persist.sys.timezone"


[backcolor=transparent !important]第一的, adb shell settings put global auto_time 1
(打开自动日期和时间)
第二,adb shell date '0739010002017.00'
(设定你想要的时间)
第三,adb shell settings put global auto_time 0
(关闭自动日期和时间)

更改日期与系统相同
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date +%G%m%d.%H%M%S`
将日期更改为明天:
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 day' +%G%m%d.%H%M%S`
将日期更改为明天凌晨 12 点
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 day' +%G%m%d.000000`
将日期更改为昨天
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 day ago' +%G%m%d.%H%M%S`
将日期更改为一周前
adb shell [color=var(--highlight-literal)]date -s `[color=var(--highlight-literal)]date --[color=var(--highlight-literal)]date=[color=var(--highlight-variable)]'1 week ago' +%G%m%d.%H%M%S`

扩展 @uval 的答案,您可以使用以下内容根据 Windows 机器上的时间更新 Android 设备上的日期和时间:adb shell su -c date %dateMM%%dateDD%%timeHH%%timeMM%%dateYYYY%.%timeSS%
adb shell su -c am broadcast -a android.intent.action.TIME_SET




使用adb修改屏幕像素密度 (此命令针对全志开发板子)
adb shell am display-density 120

{以下命令针对高通的开发板子}
获取Android设备屏幕分辨率:
adb shell wm size
获取android设备屏幕密度:
adb shell wm density
修改屏幕像素密度
adb shell wm resize 1920*1080
adb shell wm size 540×960
重置屏幕尺寸大小
adb shell wm size reset
设置屏幕dpi (常用的dpi有160mdpi, 240hdpi, 320xhdpi, 480xxhdpi)
adb shell wm density 320
重置可用dpi如下命令
adb shell wm density reset



回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
9#
 楼主| 发表于 2023-1-5 17:17:51 | 只看该作者
本帖最后由 King 于 2024-1-24 13:44 编辑

先进入adb shell , dumpsys | grep "DUMP OF SERVICE"就可以看哪些service可以dump

dumpsys | grep "DUMP OF SERVICE"

adb shell service list

service list | grep "network_time_update_service"
要简单检查特定服务是否正在运行,请使用:
adb shell service check <service>
例如,adb shell service check media.player赋予Service media.player: found如果它的运行和Service media.player: not found其他.
如果您需要更多细节,请尝试dumpsys <service>.例如,adb shell dumpsys media.player返回有关media.player客户端,打开文件等的信息.
最后,如果您真的需要认真的调试细节,请尝试从adb shell dumpsys activity services哪个角度展示正在发生的事情ActivityManager.这包括有关意图,创建时间,上次活动时间,绑定等的信息等.如果要存储输出以供以后查看/搜索,可以重定向输出.它通常相当冗长.

查看设备运行时间
adb shell dumpsys | grep "uptime"

  Current stats (from -28m0s673ms to now, +28m0s673ms uptime):
  Runtime uptime (elapsed): +28m2s395ms
  Runtime uptime (uptime): +28m2s395ms

回复 支持 反对

使用道具 举报

66

主题

688

帖子

5331

积分

超级版主

Rank: 8Rank: 8

积分
5331
10#
 楼主| 发表于 2023-1-9 17:27:29 | 只看该作者
本帖最后由 King 于 2024-10-30 13:23 编辑

关闭 麦当劳
adb shell "ps|grep com.mcdonalds.sok.cn"

u0_a57        3092   903 4458936  86420 0                   0 S com.mcdonalds.sok.cn.dev:remote
system        3482   904 1184380  44500 0                   0 S com.qualcomm.qti.smcinvokepkgmgr
radio         3502   903 3871356  51532 0                   0 S com.qualcomm.simcontacts
u0_a57        3672   903 4793788 203704 0                   0 S com.mcdonalds.sok.cn.dev
adb root
adb shell " kill -9 3092"


adb shell " am force-stop com.mcdonalds.sok.cn.dev"


kill 用于终止进程

kill
有十几种控制进程的方法,下面是一些常用的方法:
kill -STOP [pid]
发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。
kill -CONT [pid]
发送SIGCONT (19,18,25)重新开始一个停止的进程。
kill -KILL [pid]
发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。
kill -9 -1
终止你拥有的全部进程。
SIGKILL 和 SIGSTOP 信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。


ps -ef | grep 包名、进程名
ps -ef | grep kafka
top -u 包名、进程名

cat /proc/meminfo

proc/meminfo 机器的内存使用信息

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。

/proc/pid/statm 进程所占用的内存


查看机器可用内存

/proc/28248/>free

1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。

2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u  以用户为主的格式来显示程序状况。
13)ps x  显示所有程序,不以终端机来区分。

如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。


ps auxw | head -1;ps auxw | sort -rn -k4 | head -5 查看内存占用前5进程
ps auxw | head -1;ps auxw | sort -rn -k3 | head -3
查看CPU 占用前3 进程



快捷键 adb 指令发送

可以使用adb shell命令来发送返回桌面的指令。具体指令如下:
adb shell input keyevent 3
这个指令模拟按下home键的操作,可以将焦点切换到桌面。
  • 返回桌面(home)指令:

    • adb shell input keyevent 3
  • 菜单指令:

    • adb shell input keyevent 82
  • 返回指令:

    • adb shell input keyevent 4

  • 打开通知面板:adb shell input keyevent 226
  • 打开快捷设置面板:adb shell input keyevent 239
  • 打开最近任务列表:adb shell input keyevent 19
  • 打开音量调整滑块:adb shell input keyevent 200
  • 减小音量:adb shell input keyevent 203
  • 增大音量:adb shell input keyevent 205
  • 静音/取消静音:adb shell input keyevent 164
  • 锁屏:adb shell input keyevent 264
  • 亮屏:adb shell input keyevent 224

安卓系统底部的三个按键依次是“返回键”、“主页键”、“多任务键”。其中,“返回键”通常位于左侧,“主页键”位于中间,“多任务键”通常位于右侧。
使用adb发送指令到安卓设备时,可以通过输入相应的adb shell命令来模拟按下这些按键的操作。具体指令如下:
  • 模拟按下返回键:

    • adb shell input keyevent KEYCODE_BACK
  • 模拟按下主页键:

    • adb shell input keyevent KEYCODE_HOME
  • 模拟按下多任务键:

    • adb shell input keyevent KEYCODE_ RecentApps

# 短按power键
adb shell input keyevent 26    # KEYCODE_POWER
# 或
adb shell input keyevent KEYCODE_POWER

# 长按power键(模拟按下和抬起)
adb shell "input keyevent --longpress 26"
# 或
adb shell "input keyevent --longpress KEYCODE_POWER"


# 查找power键对应的输入设备
adb shell getevent -l | grep -i power

# 发送按键事件(示例路径,实际设备可能不同)
adb shell sendevent /dev/input/event0 1 116 1  # 按下
adb shell sendevent /dev/input/event0 0 0 0
adb shell sendevent /dev/input/event0 1 116 0  # 释放
adb shell sendevent /dev/input/event0 0 0 0


# 触发关机对话框
adb shell service call power 7

# 模拟power键按下
adb shell service call power 2

# 强制关机
adb shell reboot -p








可以使用adb shell命令来发送切换任务的指令。具体指令如下:
adb shell am start -n com.android.deskclock/.AlarmClock
这个指令会启动一个名为AlarmClock的应用,并将焦点切换到该应用。你可以将com.android.deskclock和.AlarmClock替换为你想要切换到的应用包名和活动名。
另外,如果你想要发送其他切换任务的指令,可以使用adb shell dumpsys activity命令来获取当前运行的应用和活动信息,然后根据需要编写相应的adb shell命令来模拟用户操作。


01-26 15:43:39.493   452   530 D WindowManager: interceptKeyTi keyCode=3 down=false repeatCount=0 keyguardOn=false mHomePressed=true canceled=false

  • win=Window{37e28b1 u0 com.hezheng.pos/com.hezheng.hkpos.ui.activity.trade.goods.GoodsActivity}:指定了与事件相关的窗口,其中 com.hezheng.pos 是应用程序的包名,com.hezheng.hkpos.ui.activity.trade.goods.GoodsActivity 是活动的类名。
  • action=1:指定按键事件的动作。在这里,1 表示按下动作。
  • flags=40:标志位,以十进制表示。在这里,40 的二进制表示是 101000,表明事件可能具有一些特殊标志。
  • keyCode=82:按键码,这里是 82,表示 Menu 键。
  • scanCode=0:扫描码,这里是 0。
  • metaState=0:元状态,这里是 0,表示没有按下任何修饰键(如 Shift、Ctrl、Alt 等)。
  • repeatCount=0:重复次数,这里是 0,表示这是按键的第一次触发。
  • policyFlags=1795162112:策略标志,以十进制表示。在这里,1795162112 的二进制表示是 1101010100000000100101000100000,这可能包含一些窗口管理器的策略信息。

  • keyCode=3:按键码,这里是 3,通常对应于 Home 键。
  • down=false:指示按键事件的动作,这里是 false,表示按键被释放(抬起)。
  • repeatCount=0:重复次数,这里是 0,表示这是按键的第一次触发。
  • keyguardOn=false:指示键盘锁是否打开,这里是 false,表示键盘锁未打开。
  • mHomePressed=true:指示 Home 键是否被按下,这里是 true,表示 Home 键被按下。
  • canceled=false:指示按键事件是否被取消,这里是 false,表示按键事件未被取消。

因此,这条日志的含义是窗口管理器拦截了一个 Home 键的释放事件,并且当前 Home 键处于按下状态,未被键盘锁锁定,且按键事件未被取消。这可能反映了系统处理 Home 键事件的一些状态和逻辑。



在Android系统中,system分区默认情况下是只读文件系统。这是为了保证系统的稳定性和安全性,防止未经授权的修改。然而,在某些情况下,可能需要对system分区进行写操作。
要对system分区进行写操作,首先需要重新挂载system分区为可读写模式。这通常涉及到系统级别的权限和复杂的操作,因为直接修改system分区可能会对系统稳定性和安全性造成严重影响。
在Android中,应用程序通常没有直接访问设备存储的写入权限。如果应用程序需要写入外部存储,它需要在AndroidManifest.xml文件中声明写入权限(如<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>),并在运行时检查用户是否已授予该权限。
关于A/B分区,它是一种特殊的文件系统结构,将系统分区分成了A和B两个槽(slot)。这种结构的主要作用是实现无缝升级。当系统需要更新时,可以在一个槽(如B槽)中下载并安装新版本的系统,而用户仍然可以在另一个槽(如A槽)中继续使用当前版本的系统。一旦B槽中的新系统安装完成,系统会提示用户重启,并在重启后自动切换到B槽的新版本系统。这样,用户在整个升级过程中几乎不会感知到中断,从而实现了无缝升级。
A/B分区结构与system分区有关联,因为A/B分区实际上是将system分区分成了两个独立的槽。平时系统工作在一个槽(如A槽),而OTA(Over-The-Air,空中下载技术)升级则在另一个槽(如B槽)进行。这种结构使得系统可以在不影响用户当前使用的情况下进行升级,提高了系统的可用性和稳定性。


1、uiautomatorviewer: android-sdk自带。需要android开发环境。手机上打开对应页面,在终端输入uiautomatorviewer即可。
Write automated tests with UI Automator
2、Android Studio中的LayoutInspector:IDE带的,可以实时查看布局层级信息。通过adb连接上手机,然后在Android Studio中打开LayoutInspector,即可查看手机上的实时布局信息。
如果页面复杂,会卡顿。
Layout Inspector
3、stecho: facebook的开源库,可以在浏览器中查看布局信息。在项目中依赖stetho三方库,运行到手机上之后,在浏览器中可查看。
stetho
4、dumpsys通过adb shell dumpsys activity top命令,拿到当前activity的快照,内部包含布局信息。
最稳定、靠谱。





adb shell dumpsys activity top



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


快速回复 返回顶部 返回列表