iOS與cocos2dx2.2.6混編常遇問題 ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/QuickUnifyPlatform.framework/QuickUnifyPlatform) for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

問題一:接入SDK報錯

接入第三方SDK的framework支持的版本在iOS8.0及以上,而自己的項目的最低版本為iOS6.0(第三方SDK版本較高,不兼容)會報以下錯誤(圖1):

圖1

而如果簡單地把Development Target 改為iOS8.0,項目又會報出其他的錯(圖2):(這種錯的解決方案卻是需要把Development Target 改為iOS7.0以下,造成了問題的死循環)

圖2

解決方案:

1.如大部分人所說,選擇Development Target 為iOS6.0,將framework重新編譯后,再接入使用(這種方案一般不會成立,除非是自己的SDK,第三方是不愿費力氣來兼容你的版本)

圖3

2.不僅僅需要把項目下的Development Target修改成iOS8.0(圖4),還需要把cocos2dx對應的iOS Development Target改成iOS8.0(圖5),兩者統一,問題完美解決

圖4
圖5


(下面的問題不只是cocos2dx項目會出現,只要是iOS開發,都有可能出現)

問題二:內購問題

1.內購測試出錯:測試機iPhone升級系統至iOS11后,原來的測試帳號不能使用(無限循環地讓輸入帳號密碼),重新申請測試帳號解決!

2.內購沙盒測試正常,應用上線后,點擊支付一直返回失敗(用戶看到的結果是沒任何反應),支付確認提示框都沒有彈出。

解決方案:

切換網絡、修改網絡DNS為8.8.8.8、重啟手機等方法多試幾次,可以正常購買。但是仍然有許多用戶不知道上述方法,不知道是不是蘋果服務器的問題才造成支付失敗。在AppStore上更新幾次版本后,可以正常支付。

3.您已購買此App內購買項目此項目將免費恢復

出現這種情況,可能是在交易取消或購買成功后,沒有從交易隊列中移除本次交易。

解決方案1:

由于在用戶購買成功或者點擊取消購買的選項后回調方法

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction;

在該方法內除了通過支付信息編寫自身的業務的代碼外,還要記得調用

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

方法通知蘋果的支付隊列該交易已經完成。

解決方案2:如果上述原因不成立,可以使用下面的方案:

在每次發起購買之前,先檢查交易隊列中是否有未完成的交易,將隊列中的交易全部處理完,就不會再有上述提示。

// 獲取之前未完成的交易,處理

NSArray* transactions = [SKPaymentQueue defaultQueue].transactions;

if (transactions.count > 0) {

? ? ? ? ?NSLog(@"有未完成的交易%@",[transactions firstObject]?:@"nil");

????????//檢測是否有未完成的交易

????????SKPaymentTransaction* transaction = [transactions firstObject];

????????if (transaction) {

????????????????switch (transaction.transactionState) {

????????????????????????????case SKPaymentTransactionStatePurchased://交易完成

????????????????????????????{

????????????????????????????????????????[self completeTransaction:transaction];

????????????????????????????????????????[[SKPaymentQueue defaultQueue] finishTransaction: transaction];

????????????????????????????????????????return;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

????????????????????????????case SKPaymentTransactionStateFailed://交易失敗

????????????????????????????{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[self failedTransaction:transaction];

????????????????????????????????????????????[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

????????????????????????????????????????????return;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

????????????????????????????????case SKPaymentTransactionStateRestored://已經購買過該商品

????????????????????????????????{

????????????????????????????????????????????[self restoreTransaction:transaction];

????????????????????????????????????????????[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?return;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? default:

????????????????????????????????????????????????break;

? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? }

}

問題三:磁盤內存不足

項目編譯報錯lipo,讀寫錯誤;Mac磁盤內存不足,清理磁盤解決!

再附上Xcode清理方式:

command + shift + G ?(快捷鍵)前往文件夾 : ? /Users/用戶名/Library/Developer/Xcode/DerivedData

DerivedData里面存儲的是Xcode運行APP的緩存文件,可以直接刪除

這里有個清理MAC的鏈接:http://blog.csdn.net/qq_26598821/article/details/51849209

問題四:Archive打包后上傳AppStore時報錯

注意:Archive之前,Clean一下工程(快捷鍵 command+shift+K),否則很容易出錯

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容