【问题标题】:React Native Android production release still behaving like a development releaseReact Native Android 生产版本仍然表现得像一个开发版本
【发布时间】: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.DEBUGfalse,正如预期的那样。该应用确实使用在构建时生成的打包包,并且独立于 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


【解决方案1】:

您的MainApplication.javagetUseDeveloperSupport 的覆盖可能不正确。

问题here 表明这可能被硬编码为true。如果是这种情况,请将返回值改为BuildConfig.DEBUG

【讨论】:

  • 谢谢你随机的陌生人,这正是问题所在!
猜你喜欢
  • 1970-01-01
  • 2021-03-18
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2023-03-09
相关资源
最近更新 更多