【发布时间】:2018-07-30 22:09:12
【问题描述】:
我正在尝试从我的 React Native 应用程序构建一个签名的 Android APK。我已经按照官方文档和众多第三方资源来正确设置代码签名,归结为运行此命令来生成签名的 APK...
$ cd android/
$ ./gradlew assembleRelease
APK 已正确签名并放置在app/build/outputs/apk/app-release.apk。我什至已经通过内部测试成功将此 APK 上传到 Play 商店。
问题在于,当应用首次启动时,它会要求用户授予覆盖权限,并在 toast 中显示一条消息,说明 React Native 的调试工具需要这些权限才能运行。在一些地方对此的修复是documented,但这些修复似乎不起作用,因为应用似乎不明白它不处于开发模式。
每当应用程序中发生运行时错误时,该应用程序还会在传统的 React Native“大红色错误”框中显示堆栈跟踪,而不是崩溃或吞下错误,这是我在 iOS 上构建应用程序时看到的行为生产模式。发生这种情况时,错误会提到无法连接到打包程序。
按Cmd + M 或摇晃设备会打开 React Native 调试菜单。 process.env.NODE_ENV 的值也为 development。
在调查时,我发现 BuildConfig.DEBUG 是 false,正如预期的那样。该应用确实使用在构建时生成的打包包,并且独立于 React Native 打包器运行。
我已尝试使用react-native bundle 手动创建index.android.bundle,如here 所述,但在运行./gradlew assembleRelease 时,捆绑文件似乎被重新创建和替换。就好像在运行 react-native bundle 时,--dev 标志没有设置为 false。
这是我的 Node、React 和 React Native 版本...
Node: v8.11.3
React: v16.2.0
React Native: v0.51
我最好的猜测是,尽管它是在生产模式下构建的,但 React 并没有收到备忘录,而是在开发模式下运行。我应该在哪里查看所有配置是否正确?是否存在可能搞砸的 React Native 包生成设置?
【问题讨论】:
-
因为也许你正在模拟器中测试它!我在具有开发模式的同一设备上测试了我的版本!但是当把发布的apk给另一个安卓手机的时候!它工作得很好!像豌豆和胡萝卜
-
感谢您的建议,但这涉及到多个设备、计算机,甚至当应用程序被从未使用过的人从 Play 商店下载时也是如此。
标签: android reactjs react-native