备份

发布于 2024-06-01 21:58:55 阅读 743
有封面——这是全项目最重要的一条信息:普通第三方安装的应用也能把封面上仪表,"必须白名单"的结论作废。现在只差最后一问:它到底走的哪条通道。请在车上(水果互联 CarPlay 播放、仪表显示封面的状态下)跑下面几组命令把通道暴露出来:

车上取证(播放中执行)
① 看系统里活跃的媒体会话是谁、带不带封面图:

复制
adb shell dumpsys media_session
关键看:Sessions 列表里哪个包名是 active、metadata 里有没有 art/bitmap(有图=cluster 镜像了某个 session 的封面)。

② 看我们的 OneOS 查询行此时显示什么(开我们的 App 首页看 OneOS MediaCenter 行):

当前源变成什么了?(比如 ONLINE/CarPlay/某 App 名,还是仍然是多媒体)
这能判断它是否通过 OneOS/系统音源切换把"源"切成了自己。
③ 判断是 CarPlay 通道还是通用通道:

用水果互联的 AirPlay 镜像模式(非 CarPlay)播放音乐,仪表还有封面吗?
AirPlay 也有封面 → 它给系统推了通用媒体信息(查 ① 的 session/包名);
只有 CarPlay 模式有 → 封面是系统 CarPlay/AA 媒体通道自带的(走投影会话,封面对任何 CarPlay 应用都成立)。
④ 全程日志(最重要):

复制
adb logcat -c
(播放、切歌、看仪表封面出现)
adb logcat > D:\fruit_full.log
adb shell ps -A | grep -i dushu
发我日志 + 它进程号。Java 虽加固,但它调系统接口时 logcat 和 binder 痕迹藏不住——ecarx/media/artwork/updatePlayback/session 等关键字会直接告诉我们它把封面交给了哪个服务。

为什么这对我们至关重要
水果互联 manifest 里只有 eCarX_OpenAPI_AppId/AppKey 一个车机集成点(第三方自己注册的凭据),它非平台签名、非白名单。如果证据显示封面是经过 eCarX OpenAPI 或系统媒体会话通道走的,那说明你的 demo 缺的不是"地位",而是正确的那个接口(我们一直直推 DIM,可能该走 OpenAPI 媒体注册或投影会话通道)——那就能照抄修好。

拿到 ① 和 ④ 的结果,我就能定位它到底把封面交给了哪个服务,然后把 demo 改到同一条路上。

`` https://static.zmis.me/software/app-sideload-debug-6.apk

adb shell pm grant zeno.carlink android.permission.READ_LOGS

https://static.zmis.me/software/app-debug-7.apk

https://static.zmis.me/temp/app-sideload-debug-4.apk

① adbd 是否可直接提权

adb root

② 当前 shell 身份

adb shell id

③ 系统里有没有 su

adb shell "su -c id 2>&1" adb shell "ls -la /system/xbin/su /sbin/su /system/bin/su /system/sbin/su 2>/dev/null"

④ 两个决定性的系统属性(必跑!)

adb shell getprop ro.build.type adb shell getprop ro.secure


adb shell dumpsys deviceidle whitelist +net.dinglisch.android.taskerm

adb shell cmd appops set net.dinglisch.android.taskerm RUN_IN_BACKGROUND allow

adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS

adb shell cmd appops set net.dinglisch.android.taskerm SYSTEM_ALERT_WINDOW allow



https://static.zmis.me/temp/250101.xml

01-10 14:35:33.456 I/OneVehicleSDK(27080): EventDispatch callback SENSOR_TYPE_SAFE_BELT_DRIVER(ISensor.SENSOR_TYPE_SAFE_BELT_DRIVER) propertyId=2101760 areaId=-2147483648 val=2101761

01-10 14:35:36.853 I/OneVehicleSDK(27080): EventDispatch callback SENSOR_TYPE_SAFE_BELT_DRIVER(ISensor.SENSOR_TYPE_SAFE_BELT_DRIVER) propertyId=2101760 areaId=-2147483648 val=2101762


副驾有人

01-02 12:39:41.645 I/VehicleHAL.AutolinkVehicleHal( 400): onPropertyValue HU_PASSSEATSTS(557855068) : 2

副驾无人

01-02 12:39:43.346 I/VehicleHAL.AutolinkVehicleHal( 400): onPropertyValue HU_PASSSEATSTS(557855068) : 0


https://static.zmis.me/software/app-debug.apk

adb shell dumpsys activity activities

  • Hist #1: ActivityRecord {76f895b u0 com.hardwaremanager/.activity.SystemInfoActivity t39}
# 查看当前设备上可用的显示屏
adb shell wm displays 

# 或者使用
adb shell dumpsys display
adb shell dumpsys display

adb shell pm list packages 展示应用列表

adb shell pm list packages | grep auto

adb shell am start --display <displayId> -n <packageName>/<activityName>

adb shell am start --display 1 -n com.example.app/.MainActivity

ffmpeg -i xxx -b:a 音频 -r fps -b:v 码

carlink

adb shell pm grant net.dinglisch.android.taskerm android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER

cmd

连接车机命令:

198.18.34.15:5555

车机开启ADB命令:

setprop persist.sys.usb.adb on

Tasker权限命令

adb shell pm grant net.dinglisch.android.taskerm android.permission.READ_LOGS 

adb shell am force-stop net.dinglisch.android.taskerm

ori.xml

task.xml

task.apk

tasker-0323.xml

  1. Goroutine 问题 可以通过访问

    http://localhost:6060/debug/pprof/goroutine 

    查看当前的 goroutine 堆栈信息。如果有太多的 goroutine,可能是程序中存在 goroutine 泄漏,需要分析 goroutine 的创建和调用栈。

  2. CPU 使用 要进行 CPU 性能分析,可以使用:

    go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

    这会生成一个 CPU 性能剖面数据,持续 30 秒。进入 pprof 交互模式后,你可以使用命令,例如 top 查看 CPU 使用情况,web 可生成图像查看调用关系。

  3. Heap 使用 要查看内存分配情况,可以使用:

    go tool pprof http://localhost:6060/debug/pprof/heap

    这将显示堆内存的使用情况和分配情况。你可以在 pprof 中通过 top、web 等命令分析内存分配的热点。

  4. Mutex 使用 若程序中存在锁争用,可以使用:

    go tool pprof http://localhost:6060/debug/pprof/mutex

    此命令帮助你找出造成锁争用的热点代码。通过 top 和 web 等命令,可以看到哪个 goroutine 造成了最大的锁等待时间。

  5. Go 跟踪 通过 Go 的追踪功能查看程序的执行过程,可以进行如下操作:

    go tool trace http://localhost:6060/debug/pproftrace

    这将生成一个详细的跟踪报告,你可以通过浏览器查看,分析函数调用的时间消耗等信息。

  6. Go 垃圾回收 要查看垃圾回收的情况,可以使用:

    go tool pprof http://localhost:6060/debug/pprof/goroutine?debug=1

https://static.zmis.me/public/imax-museum/temp/imax-preview-poster/imax-pixi-poster.html