我有一个iOS应用程序,使用Parse SDK 1.7.0在Xcode 6.2中用Swift编写。我已经完成了Parse快速入门说明,用于设置崩溃报告(包括AppDelegate中的ParseCrashReporting.enable()
),但似乎我的运行脚本出现了问题。错误是:App "/Users/ben/Library/Developer/Xcode/DerivedData/MyApp-ahydphsjgdgefbhcdodokcmofehe/Build/Products/Debug-iphonesimulator/MyApp.app.dSYM" wasn't found. Command /bin/sh failed with exit code 1
。
据此,似乎Xcode没有创建dSYM文件。在我的构建设置>构建选项我已经使用dSYM文件将调试信息格式更改为" DWARF"用于Debug和Release。 (以前,Debug设置为" DWARF")
我应该更改构建选项中的其他内容吗?
此外,这可能是问题吗? export DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT=NO
这是我的运行脚本:
export PATH=/usr/local/bin:$PATH
cd $PROJECT_DIR/parse
parse symbols "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
提前感谢您提供有关如何解决此问题的任何想法。
编辑:感谢@udjat的回答,我能够运行我的应用并运行脚本(如下)而不会导致应用崩溃。并且由于Parse的一些错误修复,测试崩溃报告现在也在运行,尽管仍有很长的延迟。
新的运行脚本:
echo "Parse Crash Reporting"
export PATH=/usr/local/bin:$PATH
CLOUD_CODE_DIR=${PROJECT_DIR}/parse
if [ -d ${CLOUD_CODE_DIR} ]; then
cd ${CLOUD_CODE_DIR}
parse symbols MyApp --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
echo "Finished uploading symbol"
else
echo "Unable to upload symbols"
fi
AppDelegate中的崩溃测试:
func crash() {
NSException(name:NSGenericException, reason:"Everything is ok. This is just a test crash.", userInfo:nil).raise()
}
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
ParseCrashReporting.enable()
dispatch_after(
dispatch_time(DISPATCH_TIME_NOW, Int64(5.0 * Double(NSEC_PER_SEC))),
dispatch_get_main_queue(),
{ () -> Void in
self.crash()
});
}
答案 0 :(得分:8)
在阅读了Facebook link @jairobjunior后,我在ÁrniJónReginsson的回答中找到了解决方案(至少对我自己而言)并进行了一些修改。
在Parse文档中,您的运行脚本是:
export PATH=/usr/local/bin:$PATH
cd YOUR_PATH
parse symbols "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
相反,请将其更改为:
echo "Parse Crash Reporting"
export PATH=/usr/local/bin:$PATH
CLOUD_CODE_DIR=${PROJECT_DIR}/ParseCloudCode(or wherever yours is)
if [ -d ${CLOUD_CODE_DIR} ]; then
cd ${CLOUD_CODE_DIR}
parse symbols YOUR_PARSE_APP_NAME --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
echo "Finished uploading symbol"
else
echo "Unable to upload symbols"
fi
你的崩溃报告出现在Parse上需要的时间远远超过“一分钟”(花了我超过15分钟)。如果它完成上传,它就会在那里,你只需要耐心等待。
答案 1 :(得分:3)
这里有一个关于此问题的开放主题:https://developers.facebook.com/bugs/587774604658221/
我遇到了同样的问题,即使尝试手动操作也说文件“找不到”,但文件就在那里。我注意到的一件事是.dSYM不是文件,对我来说它似乎是一个文件夹/包。
答案 2 :(得分:2)
我发现这个工作..
export PATH=/usr/local/bin:$PATH
cd YOUR_PATH
parse symbols AppName -p "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
将应用名称和-p添加到解析行
答案 3 :(得分:0)
抱歉,我没有评论的声誉,所以我会留下这个作为答案。
我遇到了确切的问题。还使用最新的Parse SDK。怀疑它是最新的CLI 2.0.0的问题,因为开发人员在更新到2.0.0之后开始得到你正在获得的问题(我也得到了)
订阅此Facebook错误报告帖子以便将来获得解决方案。 https://developers.facebook.com/bugs/466020460223551/
此时似乎问题来自SDK。所以除了等待Parse解决这个问题之外没什么可做的。
(感谢@jairobjunior向我介绍Facebook错误报告页面!)
答案 4 :(得分:0)
只是想让你知道你并不孤单:虽然我的DSYM似乎上传得很好,但无论我做什么,我的任何应用程序的崩溃报告都没有出现在parse.com上。我花了一个小时检查每个设置......一切看起来都不错。我和你一样使用相同的测试崩溃...
因此,如果您发现崩溃的解决方案未在parse.com上显示,请在此处更新。谢谢!
答案 5 :(得分:0)
在我的情况下,问题可能是通过更改项目名称来创建的,无论如何使用以下脚本来实现:
parse symbols MyAppName --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
我在MyAppName
文件中找到parse/config
的位置:
{
"applications": {
"MyAppName": {
"applicationId": "....kjsldgjslkgjslkgj...",
"masterKey": "....lksjmll242dg2d1g2..."
},
"_default": {
"link": "MyAppName"
}
}
}