Sas*_*sha 21 xcode ios crashlytics twitter-fabric react-native
我正在使用React Native构建一个iOS应用程序,并尝试在手机上测试它.
如果我将手机插入计算机并直接"构建"到手机,该应用程序正确构建并正确打开/运行,没问题.
但是,如果我尝试将其存档并使用iTunes Connect的TestFlight或Fabric with Crashlytics将其发送到手机,则应用程序会在打开时立即崩溃.它简要地显示了启动屏幕,但没有更多.
此外,没有崩溃报告 - 在TestFlight,Crashlytics或XCode中,一旦我重新插入手机.所以我在黑暗中操作,没有任何关于什么破坏的信息.一直无法在网上找到类似的问题,所以我想我只是问.什么想法可能会出错?
如果您可能需要查看任何代码或其他数据,请与我们联系.其中一些是保密的,但我会尝试发布一个近似版本.
Sas*_*sha 12
正如Chris Geirman所说,问题是JavaScript错误.我不确定有类似问题的人会找到这个帖子,但如果他们这样做,这就是发生的奇怪错误.
我创建了一个简单的ORM系统,包含一个BaseModel和一系列继承它的模型.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;
}
Run Code Online (Sandbox Code Playgroud)
最后一行是问题所在.在我的本地模拟器上,如果我通过插入应用程序将应用程序构建到我的手机,这可以正常工作.如同,如果Message模型继承自BaseModel,则调用var msg = new Message(data, relations); msg.className返回Message.
但是有关通过TestFlight或Fabric.io捆绑/存档/发送应用程序的内容会缩小和丑化 JavaScript,以便更改类名.所以相反,如果我这样做var msg = new Message(data, relations); msg.className- 我会找回一个随机变量名,比如't'.
这是我的应用程序中的问题,因为我的主页包含一个switchName语句,该语句使用了className:
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
}
Run Code Online (Sandbox Code Playgroud)
但是'Message',正如预期的那样,不是this.props.className- 的价值't'.所以,如果我试图隧道进入,比如color价值,我会遇到错误,因为我试图访问该color属性null.
为什么没有报告,我不知道(我跟着Chris的建议并安装了Sentry,但似乎仍然没有报告该错误).
但那就是发生了什么.只有当我通过TestFlight/Fabric在手机上安装应用程序时才会发生缩小/丑化,这就是应用程序仅在这些条件下崩溃的原因.
希望这可以避免任何遇到类似错误的人撕掉他们的头发.
| 归档时间: |
|
| 查看次数: |
10450 次 |
| 最近记录: |