使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器

Posted

技术标签:

【中文标题】使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器【英文标题】:react native docker container using vs code to publish to android emulator on host OS 【发布时间】:2021-02-01 07:06:15 【问题描述】:

我正在尝试在 vs 代码上运行反应原生 docker 容器。我能够运行我的代码。但是,容器无法检测到在我的主机上运行的 android 模拟器。

I followed along in this tutorial course:

https://code.visualstudio.com/docs/remote/containers & https://github.com/microsoft/vscode-react-native

正在运行

npx react-native run-android 但是,我收到一条错误消息,指出我的模拟器没有运行。错误 安装应用程序失败。确保你有一个安卓模拟器 正在运行或连接的设备。使用 --verbose 标志运行 CLI 以获取更多信息 细节。错误:命令失败:./gradlew app:installDebug -PreactNativeDevServerPort=8081

我的 devcontainer.json:-


    "name": "React Native Android Container",
  
    // Sets the run context to one level up instead of the .devcontainer folder.
    "context": "..",
  
    // Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
    "dockerFile": "Dockerfile",
  
    "runArgs": [
        "--privileged", // give all capabilities to a container, in other words, the container can then do almost everything that the host can do
        "--net",
        "host", // forwarding all host machine ports
        "-v",
        "/dev/bus/usb:/dev/bus/usb" // mount connected USB devices to a container
      ],
    
  
    "settings": 
      // This will ignore your local shell user setting for Linux since shells like zsh are typically
      // not in base container images. You can also update this to an specific shell to ensure VS Code
      // uses the right one for terminals and tasks. For example, /bin/bash (or /bin/ash for Alpine).
      "terminal.integrated.shell.linux": null
    ,
  
    // Add the IDs of extensions you want to be installed when the container is created in the array below.
    "extensions": ["msjsdiag.vscode-react-native"]
  

runArgs“主机”应该转发所有端口。我想我需要反向的类似论点?

【问题讨论】:

在 Ubuntu 20.04 上运行它 您使用adb 连接吗? 我正在尝试连接到从 android studio 启动的 android 模拟器 我不确定 adb 是什么……现在正在研究 adb 是 Android Device Bridge,当你安装 Android Studio 时,你已经有了它。要检查 adb,请转到终端并运行 adb --version。如果你有版本,那么你就有了。如果不是,你应该安装它,当你通过adb devices 命令看到你的模拟器时,然后使用yarn android 你可以在你的模拟器上安装你的应用程序。 【参考方案1】:

检查android/gradlew 的权限。可以使用以下命令检查权限:

stat -c "%a %n" android/gradlew

权限应为 755。如果不是,请将您的应用根文件夹中的权限更改为 755。

chmod 755 android/gradlew

然后运行react-native run-android

【讨论】:

是什么让你认为这是一个 gradlew 权限问题?

以上是关于使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器的主要内容,如果未能解决你的问题,请参考以下文章

使用开发/生产 ios 目标应用程序对本机使用做出反应

使用 debugpy 和 vs 代码在 docker 容器中调试 python 导致超时/连接被拒绝

无法编译使用Google Services Analytics对本机项目做出反应

对缺少必需参数的应用商店做出本机反应

网络请求失败对 https 图像上传 Android 做出本机反应

如何从 iOS 传递信息以在启动时做出本机反应?