【问题标题】:Android override the hosts fileAndroid覆盖主机文件
【发布时间】:2017-03-23 14:40:58
【问题描述】:

问题

我想通过在同一台机器上运行的模拟器调用我的安全网站,该网站使用自签名证书并在我的开发机器上运行

上下文

我创建了一个自签名证书,并安装在我的开发机器上,并编辑了 hosts 文件以将 localhost 链接到我的 domail。所以: https://mydomain:8080 在我的开发机器上完美运行。

我在模拟器上安装了相同的证书,所以: https://10.0.2.2:8080 有效,但模拟器无法验证证书,因为我在为 mydomain 颁发证书时调用 10.0.2.2

解决方案是将 10.0.2.2 链接到我在 hosts 文件中的mydomain

问题是我无法覆盖(编辑)模拟器上的主机文件,错误消息指出该文件是“只读”

我的尝试

已经很久了,我正在尝试,我几乎尝试了所有我能找到的东西,但没有成功,列出一些:

第一

adb 外壳 苏 mount -o rw,重新挂载 /system chmod 777 /系统

我得到同样的错误信息

第二 我从 adb 命令运行模拟器,具有可写权限,但发生了同样的错误

第三

我尝试将模拟器 root 以便可以使用主机编辑器等应用程序,但经过多次尝试和错误后,我无法 root 模拟器

好吧,我尝试了很多,希望你们能给我一些见解

更新

根据aastefanov's answer,可能system/文件夹仍然不允许对其进行写访问

【问题讨论】:

  • 1) 你已经在rw中重新挂载了/system,不需要chmod 777 /system; 2)adb shell以root权限运行在模拟器上,无需root模拟器; 3) 注意,一旦你退出了一个 shell 会话,下次你应该重新挂载/system
  • @Onik 没有chmod 我得到了错误permission denied,所以read only 的消息不同,并且在运行adb shell 时,我无法推送文件(如我已经说过了)。最后,我确实在最后重新挂载了/system,但这并不影响我目前的问题,你同意吗?
  • 试过推到data/local/tmp或sdcard,然后adb shell,然后重新挂载,然后从你推到的地方复制到/system
  • @Onik 我没试过,但明天会做,请问将文件从 tmp 复制到 system/etc 的 adb 命令是什么?
  • @Onik 明天会更新你,谢谢

标签: android ssl android-emulator adb


【解决方案1】:

我找到了解决办法:

解决方案是从 shell 脚本修改 hosts 文件,不要过度疲劳。

移动技术资料

  1. adb 根
  2. adb 外壳
  3. su //获取root权限
  4. whoami // 只是为了确保我们现在是 root 用户

//现在我们是root,但是我们不能修改hosts文件,因为它只是处于只读状态

  1. mount -o rw,remount /system //使其可写(您可以更具体并将其应用到 system/etc 文件夹)

  2. echo "10.0.2.2 williamromadomain" >> /system/etc/hosts

这只是一个变通方法,因为我每次运行模拟器时都必须这样做

【讨论】:

  • @Onik 不,我不创建一个新的
  • 你有没有尝试过使用 mount -o remount 自定义路径而不是当前路径挂载?我非常怀疑您是否可以申请 /system/etc ...
猜你喜欢
  • 2019-01-03
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2016-09-01
  • 2011-06-29
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
相关资源
最近更新 更多