2015年3月1日 星期日

Library not loaded: @rpath/libswiftCore.dylib 在Swift專案中匯出IPA檔有可能會遇到的問題

會碰到這個問題大約是你已經準備要將你的App IPA(類似於Android apk)匯出來用

想要知道怎麼匯出IPA其實很簡單, 在此不再敘述.
本篇主要想討論的問題是在Swift中匯出IPA檔後,安裝到時機上總是會閃退
查看Log就會發現到
Error: Library not loaded: @rpath/libswiftCore.dylib

這其實只會發生在你用舊的Devolper ID去做匯出才會碰到,起碼我碰到的是這樣
如果你有Google些英文資料應該會看到這篇:

https://www.airsignapp.com/ios-apps-using-swift-crash-when-signed-with-inhouse-certificate/





基本上這篇說的才是對的,至於那些什麼升級OSX 還是升級xCode純粹是唬爛你的..
(OS: 這是一個被唬爛的人內心悶騷抱怨

不過或許他說得沒有很清楚,你不是很瞭解到底要砍掉哪個重建哪個certification

首先來到這頁:
https://developer.apple.com/account/ios/certificate/certificateList.action

你會發現到大約有幾項大標:
Certificates
Identifiers
Devices
Provisioning Profiles
看到這裡或許答案很明顯的,請進入Certificates裡面,選擇你專案的Certificates
然後,為了確保安全性你可以先不要砍掉它,而是依照他去重建一個一模一樣的憑證
也就是利用你Mac中的keychain抓出CSR檔(請選對哦)重build一個certificates
以上動作類似於這篇文章:
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32

好的,現在你已經有新的憑證了,如果沒有,請開啟xCode然後在Target->General->Team 改成None,再改回來, 我想應該就有了!
然後開啟你的keychain,把舊的憑證砍掉,然後重build一次專案,如果他有跟你說Multi idenfier的問題就把codeSign改成IOS Distribution,應該就可以.

這樣匯出的IPA檔就沒問題了,至於原因是為什麼,如同一篇連結文章所說,是因為新的Certification多了一組key "OU=XXXXXXX",這應該是swift特有的現象吧!

btw:
有時候你Run的時候會跳出這個alert再xCode:
process launch failed: failed to get the task for process
其實我也不是很懂這到底是怎樣,不過基本上你的code是成功compile到手機上哦!
你手動點一下icon他就能正常運作了,只是xCode console就沒有 message可以看了XD




沒有留言:

張貼留言