【问题标题】:react native how to disable android dev mode反应原生如何禁用android开发模式
【发布时间】:2016-02-14 09:24:54
【问题描述】:

我了解到,在 Android 中禁用开发模式有助于加快 Android 模拟器的一些问题,因为它目前一直没有响应。如何禁用开发模式?我在反应原生文件中找不到任何布尔值或任何东西。

【问题讨论】:

    标签: android react-native


    【解决方案1】:

    这个我没试过,但是如果你打开下面的文件我很确定...

    /node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java

    而你改变了这个......

      private static final String BUNDLE_URL_FORMAT =
      "http://%s/%s.bundle?platform=android&dev=%s";
    

    到这个...

      private static final String BUNDLE_URL_FORMAT =
      "http://%s/%s.bundle?platform=android";
    

    这应该可以解决问题

    【讨论】:

    • node_modules 被 git 忽略,因此这不会在源代码控制中结束。这听起来非常非常糟糕且不可重现。
    【解决方案2】:

    如果您在 react-native 应用程序(F2 或狂暴)中打开菜单并选择开发选项,则可以选择关闭开发模式以及实时重新加载等其他选项

    【讨论】:

    • 当我按 F2 然后点击进入开发设置时,我只得到以下选项:FPS 调试、动画 FPS 摘要、JS 更改时自动重新加载和调试设备的服务器主机。这些似乎都与开发模式无关。
    • 请问您使用的是哪个版本的 react-native 和 android?我分别使用 0.14.2 和 5.0.1
    • 我似乎在使用 package.son 文件中的 react-native 0.12.0 版本,我确实认为我使用的是 0.14。我看不到哪里提到了我的 Android 版本。你知道升级我的 react-native 版本的最佳方法吗?
    • 我已经将我的 react native 版本升级到 0.14.2,现在有了这个选项。但是它仍然运行缓慢,可能会略有改善。
    • 也可以用 ads 命令打开菜单:./adb shell input keyevent 82
    【解决方案3】:

    我更喜欢使用简单的 gradle 命令行构建 apk 的方式。 我需要使用 bundle react native JS 构建一个 app-preprod.apk 并关闭其开发模式以设置与发布版本不同的 api 主机名设置。

    查看google和stackoverflow后,我最终找到了PROJECT_PATH/android/app/react.gradle,结果发现只有当android build variant name包含“release”时react才会关闭dev模式。

    // Set up dev mode
    def devEnabled = !targetName.toLowerCase().contains("release")
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}",
                "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
    } else {
        commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}",
                "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir
    }
    

    所以我只是按照我的自定义设置 devInXxx 重构 devEnabled

    def devEnabled = config."devIn${targetName}" == false ? false : !targetName.toLowerCase().contains("release")
    

    并在PROJECT_PATH/android/build.gradle中将构建类型变体开发模式设置为false

    project.ext.react = [
    bundleInPreprod: true,
    devInPreprod: false]
    

    要清理构建,请删除“PROJECT_PATH/android/app/build”下的所有文件 并运行 gradle assemble the build variant only by

    PROJECT_PATH/android$ ./gradlew assemblePreprod
    

    这将构建 app-preprod.apk,它捆绑了 js 并关闭了开发模式。一般在PROJECT_PATH/android/app/build/output/apk/文件夹下

    【讨论】:

      【解决方案4】:

      你也可以尝试运行npm start,然后按d切换当前模式,然后通过ctr+c停止npm然后再次运行exp start你会发现增强功能变成了On,模式变成了生产.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-18
        • 2019-12-18
        • 2016-01-29
        • 1970-01-01
        • 2022-01-12
        • 2017-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多