我正在尝试从我的React Native应用程序构建一个签名的Android APK。我已经按照官方文档和大量第三方资源进行了正确的代码签名设置,这取决于运行此命令来生成签名的APK ...
$ cd android/
$ ./gradlew assembleRelease
APK已正确签名并放置在app/build/outputs/apk/app-release.apk
。我什至设法通过内部测试轨道将此APK成功上传到Play商店。
问题是,当应用程序首次启动时,它会要求用户授予叠加权限,并在烤面包中显示一条消息,说明该权限是React Native调试工具正常运行所必需的。在某些地方documented处进行了此修复,但是这些修复似乎无效,因为该应用似乎无法理解它不在开发模式下。
每当应用程序中发生运行时错误时,该应用程序还会在传统的React Native“大红色错误”框中显示堆栈跟踪,而不是崩溃或吞噬该错误,这是我在iOS上构建应用程序时看到的行为生产模式。发生这种情况时,错误提示无法连接到打包程序。
按下Cmd + M
或摇动设备会打开React Native调试菜单。 process.env.NODE_ENV
的值为development
。
调查时,我发现BuildConfig.DEBUG
是false
,符合预期。该应用程序确实使用了在构建时生成的打包捆绑包,并且独立于React Native打包程序运行。
我尝试按照here所述,使用index.android.bundle
手动创建react-native bundle
,但是运行./gradlew assembleRelease
时似乎重新创建并替换了捆绑文件。好像在运行--dev
时false
标志未设置为react-native bundle
。
这是我的Node,React和React Native版本...
Node: v8.11.3
React: v16.2.0
React Native: v0.51
我的最佳猜测是,尽管事实上它是在生产模式下构建的,但是React并没有获取备忘录,而是在开发模式下运行。我应该在哪里查看所有配置是否正确?是否有可能搞砸了React Native捆绑包生成设置?
答案 0 :(得分:4)
您的getUseDeveloperSupport
中MainApplication.java
的替代可能不正确。
问题here表示可能已将其硬编码为true。在这种情况下,请将返回值改为BuildConfig.DEBUG
。