如果我将手机插入计算机并直接“构建”到手机上,则应用程序已正确构建并打开/正常运行,没有任何问题.
但是,如果我尝试将其存档并发送到使用iTunes Connect的TestFlight或Fabric with Crashlytics的手机,应用程序会在打开时立即崩溃.它简要显示了启动屏幕,但没有更多.
此外,在TestFlight,Crashlytics或XCode中,没有任何崩溃报告,一旦我把手机重新插入,所以我在黑暗中操作,没有关于什么破坏的信息.在网络上找不到类似的问题,所以我想我只是问.任何想法可能会出错?
我创建了一个简单的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; }
最后一行是问题.在我的本地模拟器上,如果我通过插入应用程序到我的手机,这可以正常工作.如同一个Message模型从BaseModel继承,调用var msg = new Message(data,relations); msg.className返回消息.
但是,通过TestFlight或Fabric.io来捆绑/归档/发送应用程序的内容会缩小并修改JavaScript,从而改变类名.所以相反,如果我这样做 – var msg = new Message(data,relations); msg.className – 我会得到一个随机变量名,像’t’.
这是我的应用程序中的一个问题,因为我的主页包含一个从className开始的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’的值是.所以,如果我试图隧道进入,说,颜色值,我会打错误,因为我试图访问的颜色属性为null.
为什么没有报告,我不知道(我遵循克里斯的建议,并安装了哨兵,但似乎还没有报告错误).
但是这是怎么回事只有当我通过TestFlight / Fabric在手机上安装应用程序时,才会发生分类/ uglification,这就是为什么应用程序只会在这些情况下崩溃.
希望这样可以节省任何一个遇到类似错误的人从头发脱落.