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報(bào)錯(cuò)

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

圖1

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

圖2

解決方案:

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

圖3

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

圖4
圖5


(下面的問題不只是cocos2dx項(xiàng)目會(huì)出現(xiàn),只要是iOS開發(fā),都有可能出現(xiàn))

問題二:內(nèi)購問題

1.內(nèi)購測試出錯(cuò):測試機(jī)iPhone升級(jí)系統(tǒng)至iOS11后,原來的測試帳號(hào)不能使用(無限循環(huán)地讓輸入帳號(hào)密碼),重新申請(qǐng)測試帳號(hào)解決!

2.內(nèi)購沙盒測試正常,應(yīng)用上線后,點(diǎn)擊支付一直返回失?。ㄓ脩艨吹降慕Y(jié)果是沒任何反應(yīng)),支付確認(rèn)提示框都沒有彈出。

解決方案:

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

3.您已購買此App內(nèi)購買項(xiàng)目此項(xiàng)目將免費(fèi)恢復(fù)

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

解決方案1:

由于在用戶購買成功或者點(diǎn)擊取消購買的選項(xiàng)后回調(diào)方法

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

在該方法內(nèi)除了通過支付信息編寫自身的業(yè)務(wù)的代碼外,還要記得調(diào)用

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

方法通知蘋果的支付隊(duì)列該交易已經(jīng)完成。

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

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

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

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://已經(jīng)購買過該商品

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

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

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

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

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

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

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

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

? ? ? ? ? }

}

問題三:磁盤內(nèi)存不足

項(xiàng)目編譯報(bào)錯(cuò)lipo,讀寫錯(cuò)誤;Mac磁盤內(nèi)存不足,清理磁盤解決!

再附上Xcode清理方式:

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

DerivedData里面存儲(chǔ)的是Xcode運(yùn)行APP的緩存文件,可以直接刪除

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

問題四:Archive打包后上傳AppStore時(shí)報(bào)錯(cuò)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容