React Native Android生产版本仍然像开发版本一样

时间:2018-07-30 22:09:13

标签: android reactjs react-native

我正在尝试从我的React Native应用程序构建一个签名的Android APK。我已经按照官方文档和大量第三方资源进行了正确的代码签名设置,这取决于运行此命令来生成签名的APK ...

$ cd android/
$ ./gradlew assembleRelease

APK已正确签名并放置在app/build/outputs/apk/app-release.apk。我什至设法通过内部测试轨道将此APK成功上传到Play商店。

问题是,当应用程序首次启动时,它会要求用户授予叠加权限,并在烤面包中显示一条消息,说明该权限是React Native调试工具正常运行所必需的。在某些地方documented处进行了此修复,但是这些修复似乎无效,因为该应用似乎无法理解它不在开发模式下。

React Native Android Overlay Permissions

每当应用程序中发生运行时错误时,该应用程序还会在传统的React Native“大红色错误”框中显示堆栈跟踪,而不是崩溃或吞噬该错误,这是我在iOS上构建应用程序时看到的行为生产模式。发生这种情况时,错误提示无法连接到打包程序。

按下Cmd + M或摇动设备会打开React Native调试菜单。 process.env.NODE_ENV的值为development

调查时,我发现BuildConfig.DEBUGfalse,符合预期。该应用程序确实使用了在构建时生成的打包捆绑包,并且独立于React Native打包程序运行。

我尝试按照here所述,使用index.android.bundle手动创建react-native bundle,但是运行./gradlew assembleRelease时似乎重新创建并替换了捆绑文件。好像在运行--devfalse标志未设置为react-native bundle

这是我的Node,React和React Native版本...

Node:          v8.11.3
React:         v16.2.0
React Native:  v0.51

我的最佳猜测是,尽管事实上它是在生产模式下构建的,但是React并没有获取备忘录,而是在开发模式下运行。我应该在哪里查看所有配置是否正确?是否有可能搞砸了React Native捆绑包生成设置?

1 个答案:

答案 0 :(得分:4)

您的getUseDeveloperSupportMainApplication.java的替代可能不正确。

问题here表示可能已将其硬编码为true。在这种情况下,请将返回值改为BuildConfig.DEBUG