Xcode,解析崩溃报告,未创建 dSYM 文件

Xcode, Parse Crash Reporting, dSYM file not created

我有一个 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 文件。在我的构建设置 > 构建选项中,我已将调试和发布的调试信息格式更改为 "DWARF with dSYM file"。 (以前,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()
    });
}

这里有一个关于这个问题的开放线程:https://developers.facebook.com/bugs/587774604658221/

我遇到了同样的问题,即使尝试手动操作它也显示文件 "wasn't found",但文件在那里。我注意到的一件事是 .dSYM 不是文件,对我来说它似乎是 folder/package.

抱歉,我没有发表评论的名誉,所以我会留下这个作为答案。

我得到了确切的问题。还使用最新的 Parse SDK。怀疑这是最新的 CLI 2.0.0 的问题,因为开发人员在更新到 2.0.0

后开始遇到你遇到的问题(我也遇到了)

订阅此 Facebook 错误报告 post 以获取未来的解决方案。 https://developers.facebook.com/bugs/466020460223551/

目前看来是SDK的问题。所以除了等待 Parse 解决这个问题之外别无他法。

(感谢@jairobjunior 向我介绍 Facebook 错误报告页面!)

阅读完 Facebook link @jairobjunior 发布的内容后,我在 Árni Jón Reginsson 的回答中找到了解决方法(至少对我自己而言)并进行了一些修改。

在 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 上所花费的时间远远超过 "up to one minute"(我花了超过 15 分钟)。上传完了就会有的,耐心点就好了。

只是想让您知道您并不孤单:虽然我的 DSYM 似乎可以正常上传,但无论我做什么,我的任何应用程序的崩溃报告都不会显示在 parse.com 上。我花了一个小时检查每个设置……一切看起来都不错。我使用与您相同的测试崩溃...

因此,如果您找到 parse.com 上未出现的崩溃的解决方案,请在此处更新。谢谢!

在我的例子中,问题可能是通过更改项目名称造成的,无论如何使用以下脚本就可以了:

parse symbols MyAppName --path="${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

MyAppName 是我在 parse/config 文件中找到的:

{
    "applications": {
        "MyAppName": {
            "applicationId": "....kjsldgjslkgjslkgj...",
            "masterKey": "....lksjmll242dg2d1g2..."
        },
        "_default": {
            "link": "MyAppName"
        }
    }
}

我发现这个很管用..

export PATH=/usr/local/bin:$PATH
cd YOUR_PATH
parse symbols AppName -p "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

将应用程序名称和 -p 添加到解析行