【发布时间】:2016-02-14 09:24:54
【问题描述】:
我了解到,在 Android 中禁用开发模式有助于加快 Android 模拟器的一些问题,因为它目前一直没有响应。如何禁用开发模式?我在反应原生文件中找不到任何布尔值或任何东西。
【问题讨论】:
标签: android react-native
我了解到,在 Android 中禁用开发模式有助于加快 Android 模拟器的一些问题,因为它目前一直没有响应。如何禁用开发模式?我在反应原生文件中找不到任何布尔值或任何东西。
【问题讨论】:
标签: android react-native
这个我没试过,但是如果你打开下面的文件我很确定...
/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";
这应该可以解决问题
【讨论】:
如果您在 react-native 应用程序(F2 或狂暴)中打开菜单并选择开发选项,则可以选择关闭开发模式以及实时重新加载等其他选项
【讨论】:
我更喜欢使用简单的 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/文件夹下
【讨论】:
你也可以尝试运行npm start,然后按d切换当前模式,然后通过ctr+c停止npm然后再次运行exp start你会发现增强功能变成了On,模式变成了生产.
【讨论】: