我正在使用React Native构建一个iOS应用程序,并试图在手机上进行测试.

如果我将手机插入电脑并直接"构建"到手机上,则应用程序构建正确,打开/操作正确,没有问题.

但如果我试图将其存档,并将其发送到使用iTunes Connect的TestFlight或Crashlytics的Fabric的手机上,应用程序一打开就会立即崩溃.它会短暂显示启动屏幕,但不再显示.

此外,在测试飞行、Crashlytics或XCode中,一旦我将手机插回电源,就不会有坠机报告.所以我在这里暗中操作,没有任何关于发生了什么的信息.在网上找不到类似的问题,所以我想我应该问问.你知道会出什么问题吗?

如果您需要查看任何代码或其他数据,请告诉我.有些是保密的,但我会尽量发布一个大概的版本.

推荐答案

正如Chris Geirman所说,问题在于JavaScript错误.我不确定有类似问题的人是否会找到这个线程,但如果他们找到了,下面是正在发生的奇怪错误.

我创建了一个简单的ORM系统,有一个基本模型和一系列从中继承的模型.BaseModel构造函数如下所示:

  constructor(props = {}, relations = {}) {
    Object.keys(props).forEach((k) => {
      // Save props to object
      this[k] = props[k];
    });

    this.relations = relations;
    this.className = this.constructor.name;
  }

最后一句话就是问题所在.在我的本地模拟器上,如果我将应用程序插入手机,它就可以正常工作.如中所示,如果消息模型继承自BaseModel,则调用var msg = new Message(data, relations); msg.className返回Message.

而是通过TestFlight或FabricBundle /归档/发送应用程序.io缩小并删除JavaScript,从而更改类名.所以,如果我这样做--var msg = new Message(data, relations); msg.className--我会得到一个随机变量名,比如't'.

这是我的应用程序中的一个问题,因为我的主页包含一个与类名无关的switch语句:

iconContent() {
  return {
    Message: {
      icon: <Image style={styles.feedItemIconImage} source={ require('../assets/img/icon_message.png') } />,
      color: c.grass
    }, ...
  }[this.props.className] // from the model item
}

'Message'并不像预期的那样,this.props.className-'t'的值是.所以,如果我try 挖掘color的值,我会遇到一个错误,因为我试图访问nullcolor属性.

为什么没有报告,我不知道(我按照克里斯的建议安装了哨兵,但它似乎仍然没有报告那个错误).

但事情就是这样.当我通过TestFlight/Fabric将应用程序安装到手机上时,小型化/丑化发生了only次,这就是为什么应用程序只有在这种情况下才会崩溃.

希望这可以避免任何人遇到类似的错误,从撕裂他们的头发.

React-native相关问答推荐

条件呈现Else语句不会将样式应用于我的组件

单击时更改ToucheableOpacity colored颜色 不起作用

在我的 React Native 应用程序中获取数据返回 [object Object] 而不是 renderSectionHeader

react-native useEffect / useFocusEffect / useCallback 没有正确更新

React Native - Expo:fontFamily 'SimpleLineIcons' 不是系统字体,尚未通过 Font.loadAsync 加载

如何获取 iOS 版本?

React Native 入门元素Bundle 失败,出现 Unexpected Token 错误

react native foreach 循环

缺少请求的请求令牌

这个 refs 在方法中变得未定义

在整个屏幕上获取touch 事件

你能在 Ubuntu 上构建 React Native 应用程序(Android 应用程序)吗?

react-native 元素/目录 struct 设置

如何在本地构建 Expo APK

使用 React Native 一次启动多个 Animated.timing

react-native-webview :对于 iOS 文本太小

如何在 Android 手机上运行 React Native 应用程序

Mapping children of a parent component

是否可以将 Material UI 库与 React Native 一起使用?

发布未使用 JavaScript 代码更新的 APK