2015-11-23 68 views
8

當我從Xcode爲真實設備構建共享擴展時,Xcode會隨意停止調試。但是當我爲模擬器啓動時,問題不會發生。iOS9 Share Extension無法在Xcode上調試

環境
的Xcode 7.1.1
的iOS 9.1

詳細
當我建立份額擴展,Xcode中顯示 「已完成運行MobileSafari.app在iPhone」,但Safari不運行。而且,方形停止按鈕是任意灰色的。所以,我自己發佈Safari並選擇我的擴展和後期。調試部分不顯示任何內容。另外,URL請求不會被髮送到Rails服務器。

這是構建真實設備的共享擴展時的圖片。 enter image description here

我不知道爲什麼真正的設備無法在Xcode上啓動共享擴展。
如果有人知道關於這個問題的答案,請告訴我。

回答

0

我也遇到過這個問題,但不幸的是我不知道確切的解決方案,也許我可以提供一些可能有用的信息。

我(就像你,根據你的屏幕截圖判斷)正在使用Cocoapods,Cocoapods在代碼簽名後將資源從pod複製到應用程序擴展的包中。如果內存服務,這會干擾代碼簽名,從而阻止應用程序在調試器下運行。

我認爲其中的一個症狀是,日誌出現在Mac的控制檯(或設備的控制檯,不記得是哪一個)中,說「使用舊的skool [sic]方法對設備進行爆破」。 「

您可以通過從項目中刪除Cocoapods或在編譯後需要複製資源的任何窗格來確認情況。我相信解決方案是在擴展項目中添加某種特殊的構建階段來複制捆綁資源,並禁用默認情況下使用的任何Cocoapods。

作爲一種臨時解決方案,我認爲從設備中刪除您的應用程序應該允許您在第一次安裝該應用程序的運行中附加一次調試器。您也可以嘗試刪除項目的派生數據。

+0

謝謝本。通過你的文章,我注意到我還沒有重新安裝在設備上。 – penlight

+0

所以我試了一下,並檢查應用擴展是否正常。結果是App Extension在iPhone上運行,我可以看到調試器輸出。我沒有刪除Cocoapods Library,但我認爲你的回答是合理的。所以我選擇你的答案是最好的答案。 – penlight

+0

問題重新出現。所以,接下來我刪除Cocoapods表單項目,但問題未被刪除。 – penlight

6

通常,您可以通過轉到調試 - >附加到進程或PID並輸入共享擴展名來調試共享擴展。從那裏你可以在你的設備或模擬器上打開共享擴展,並且Xcode的調試器應該正確連接並打破斷點。但是,我注意到這樣做時不會顯示日誌消息,也不會在調試器視圖中爲變量填充值。

下面是我如何使調試工作正常。運行共享擴展方案。當它詢問你要運行什麼應用程序時,選擇「照片」(因爲這是您的擴展程序將運行的應用程序)。照片應用程序將在您的設備上啓動,您可以繼續使用您的擴展程序。 Xcode中的調試器應該按預期工作。

+0

我會盡快查看。 –