AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 79297184
Accepted
Krzysztof Chabowski
Krzysztof Chabowski
Asked: 2024-12-20 20:08:06 +0800 CST2024-12-20 20:08:06 +0800 CST 2024-12-20 20:08:06 +0800 CST

添加风格后,如何连接到 metro bundler?

  • 772

我遇到了一个问题,在为应用程序添加风格后,我无法让 React Native 应用程序连接到 metro 捆绑器。我搜索了很多可能的解决方案,但无法使其工作。当我使用通过 USB 连接的物理设备时会发生此问题。在添加风格之前,USB 调试已打开,一切正常。我需要使用物理设备来测试一些蓝牙功能。

这是我添加到我的 gradle 文件中的内容:

debuggableVariants = ["localDebug"]

flavorDimensions "default"
    productFlavors {
        local {
            resValue "string", "app_name", "Note Ninja (Debug)"
            applicationIdSuffix ".debug"
            versionNameSuffix "-debug"
            buildConfigField "String", "FLAVOR_NAME", "\"local\""
        }
        internal {
            resValue "string", "app_name", "Note Ninja (Internal Testing)"
            versionNameSuffix "-internal"
            buildConfigField "String", "FLAVOR_NAME", "\"internal\""
        }
        prod {
            resValue "string", "app_name", "Note Ninja"
            buildConfigField "String", "FLAVOR_NAME", "\"prod\""
        }
    }

现在我将我的 npm 脚本调整如下: "android:local": "react-native run-android --mode=localDebug --appId com.noteninja.debug",

当我运行此脚本时,metro 正在启动,并且应用程序已安装在手机上,但我收到错误消息“无法加载脚本。请确保您正在运行 Metro,或者该软件包‘index.android.bundle’已正确打包以供发布。当我单击重新加载时,我收到错误消息“无法连接到开发服务器”。

我尝试在手机浏览器中打开 localhost:8081,我可以访问 metro,所以这似乎不是防火墙问题。我尝试了 adb reverse tcp:8081 tcp:8081,但这也没有帮助(当我使用 adb devices 时,设备已连接,因为它已列出)。我卸载了应用程序,清除了 gradle 和 metro 缓存,但似乎没有任何帮助。

react-native
  • 1 1 个回答
  • 16 Views

1 个回答

  • Voted
  1. Best Answer
    Aditya Kumar
    2024-12-20T20:12:28+08:002024-12-20T20:12:28+08:00

    在使用 React Native 版本并将物理设备连接到 Metro 捆绑器时,这个问题很常见。让我分享一个可能的解决方案来帮助您解决它。既然您已经尝试adb reverse并清除了缓存,让我们关注一下可能被忽略的其他几个步骤。

    可能的原因及解决方法

    1. 软件包与风味不匹配
      可能index.android.bundle与您的风味没有正确关联。确保您没有意外为自定义风味创建生产风格的构建。检查您的gradle.properties或构建命令以确保debuggableVariants包含正确的变体(localDebug)。

      • 将其添加到您的build.gradle:

        debuggable true
        applicationVariants.all { variant ->
            if (variant.buildType.name == "debug" && variant.flavorName == "local") {
                variant.outputs.all {
                    outputFileName = "index.android.bundle"
                }
            }
        }
        
    2. 确保将风格正确传递给 Metro
      Metro 捆绑器可能不知道正在使用哪种风格。尝试在启动 Metro 时明确指定风格和模式。

      修改您的package.json添加:

      "start:local": "react-native start --reset-cache"
      

      然后,在安装应用程序之前运行 Metro:

      npm run start:local
      
    3. React Native Flavors 配置
      仔细检查您的settings.gradle和build.gradle文件。确保您的localDebugFlavor 已正确映射并解析为正确的构建变体。有时,不匹配的 Flavor 名称可能会导致问题。

    4. 设备连接
      再次运行以下命令,以确保连接正确:

      adb reverse tcp:8081 tcp:8081
      adb shell input keyevent 82 # Ensures the device stays awake
      

      另外,请检查系统上的ipconfig或ifconfig并确认 Metro 是否在预期的 IP 地址上提供服务(默认为localhost:8081)。

    5. 为调试风格启用明文流量
      将其添加到您的AndroidManifest.xml风格中localDebug:

      <application android:usesCleartextTraffic="true" />
      
    6. 检查应用安装路径
      有时,风格会生成与 Metro 捆绑器预期不匹配的不同应用程序 ID。验证您的应用程序com.noteninja.debug是否已正确解析。

    7. 使用特定配置运行 Metro
      有时,Metro 捆绑程序需要明确的指令。像这样运行 Metro:

      npx react-native start --reset-cache --port 8081
      
    8. 重建 Gradle
      如果以上方法均不起作用,请尝试完全重建:

      cd android
      ./gradlew clean
      cd ..
      npm run android:local
      

    额外的调试

    • 通过检查确保设备已正确连接adb devices。
    • 用于adb logcat检查日志以查找更具体的错误。
    • 在您的浏览器上打开localhost:8081/debugger-ui并确保 Metro 正在运行。

    通过执行这些步骤,您应该能够解决问题。如果问题仍然存在,请尝试共享完整日志以进行更深入的分析。

    • 0

相关问题

  • 从同级组件访问 DrawerStatus

  • 反应本机按钮不响应样式表更改(居中按钮)

  • 反应原生元素输入边框底部问题,​​带半径

  • 仅当拉动发生在 FlatList 组件周围时,拉动刷新才有效

  • 电子邮件未发送到 *.js 中的用户电子邮件地址

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    为什么这个简单而小的 Java 代码在所有 Graal JVM 上的运行速度都快 30 倍,但在任何 Oracle JVM 上却不行?

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    何时应使用 std::inplace_vector 而不是 std::vector?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Martin Hope
    Aleksandr Dubinsky 为什么 InetAddress 上的 switch 模式匹配会失败,并出现“未涵盖所有可能的输入值”? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge 为什么这个简单而小的 Java 代码在所有 Graal JVM 上的运行速度都快 30 倍,但在任何 Oracle JVM 上却不行? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini 具有指定基础类型但没有枚举器的“枚举类”的用途是什么? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer 何时应使用 std::inplace_vector 而不是 std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB 为什么 GCC 生成有条件执行 SIMD 实现的代码? 2024-02-17 06:17:14 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve