android api 29 上的 adb remount 是不是损坏?

Posted

技术标签:

【中文标题】android api 29 上的 adb remount 是不是损坏?【英文标题】:Is adb remount broken on android api 29?android api 29 上的 adb remount 是否损坏? 【发布时间】:2020-01-20 11:12:28 【问题描述】:

adb remount 在从模拟器运行时无法在 api 29 上正常工作。该命令在所有其他已尝试过的模拟器(18、23、25、26、27 和 28)上运行良好。

任何想法为什么会这样?

Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
W Disabling verity for /system
E Skipping /system
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
Skip mounting partition: /product
Skip mounting partition: /product_services
/system/bin/remount exited with status 7
remount failed

【问题讨论】:

感谢上帝,其他人看到了这个。一直在尝试编辑主机文件一个小时,这是我每次尝试重新挂载时看到的 - 主机文件推送不起作用 FYI 看到这条评论后,我切换到 28 (Pie) 并且效果很好。 @user12090237。你好!请参阅“Kidd Tang”答案以及实际有效的解决方案。应该被标记为接受的答案,而不是我的。 【参考方案1】:

我启动了模拟器 emulator -avd Pixel_3a_XL_API_29 -writable-system -no-snapshot-load

我发现很多人遇到模拟器冻结,如果你尝试无法启动android

$ adb root
$ adb disable-verity
$ adb reboot   <--- By now emulator is freezed

那你可以试试这个

$ adb root
$ adb shell avbctl disable-verification  <--- this will not freeze the emulator
$ adb reboot

模拟器重启时 尝试重新安装不会有问题

adb root
adb remount 

adb push 将能够写入system 目录

【讨论】:

KiddTang:哇!很好!似乎工作!很多人都为这个问题而烦恼。这应该被标记为接受的答案。但是,如果我可能会问,您是如何发现“adb shell avbctl disable-verification”确实有效的?它是否记录在某处?为什么上面的命令真的不同于:“adb disable-verity”,它确实会导致模拟器冻结 忘记了我在哪里得到这个,而我对adb disable-verity 上的许多解决方案感到沮丧并导致模拟器冻结并且无法启动。然后在某处随机选择此命令,它可以完美运行!很少有资源谈论这会影响 Android Q 及更高版本。很高兴它可以帮助其他人:-) 太棒了! 2天后终于工作了:)。一个注意事项 - 我必须在 AVD 管理器中“擦除数据”才能运行它才能工作。否则,当我尝试使用“-writable-system”运行时,它会以黑屏加载模拟器。 这是我找到的最好的答案!谢谢@KiddTang 在对 SO 进行了不同的回答之后,这个答案对我有用。谢谢。【参考方案2】:

更新:

查看@KiddTang 的答案,这似乎是一个实际的解决方案


即使使用 API 30 (API R),这个问题现在仍然存在!甚至在使用 writable-system 选项启动模拟器时:(emulator -writable-system -avd NAME_OF_DEVICE)!

我发现在 Google 的问题跟踪器中有一个 existing issue。

我尝试按照这些instructions 禁用验证并在重新安装之前重新启动

但是,此解决方案导致我的模拟器冻结/挂起,并且无法启动。

注意:我在使用带有“AVD”提供的“Android Sdk 图像”的模拟器时遇到了当前问题。然而,这种图像可能会有所限制。所以其他类型的 Android 图片可能不会发生这种情况


来自链接的代码摘要:

此代码不适用于我的情况,因为它会导致模拟器冻结并且在重新启动后无法启动,但是它们可能会在其他情况下工作。 请参阅link 了解更多详情和注意事项。 使用以下顺序执行重新挂载。
$ adb root
$ adb disable-verity
$ adb reboot
$ adb wait-for-device
$ adb root
$ adb remount
然后输入以下序列之一:
$ adb shell stop
$ adb sync
$ adb shell start
$ adb reboot
$ adb push <source> <destination>
$ adb reboot
请注意,您可以按上述顺序替换这两行:
$ adb disable-verity
$ adb reboot
用这一行:
$ adb remount -R

注意:如果设备已经处于 adb remount 状态,adb remount -R 不会重启。

【讨论】:

以上是关于android api 29 上的 adb remount 是不是损坏?的主要内容,如果未能解决你的问题,请参考以下文章

adb 将远程端口转发到本地机器

如何通过android上的ADB命令通过pc拨打电话?

如何修复 Windows 10 上的 Android Studio adb 错误?

Android 10 API 29(操作系统错误:权限被拒绝,errno = 13)保存文件(颤振)

Android远程ADB配置

Android Things:Raspberry Pi 上的 ADB over USB