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 comm

问题一:接入SDK报错

接入第三方SDK的framework支持的版本在iOS8.0及以上,而自己的项目的最低版本为iOS6.0(第三方SDK版本较高,不兼容)会报以下错误(图1):

图1

而如果简单地把Development Target 改为iOS8.0,项目又会报出其他的错(图2):(这种错的解决方案却是需要把Development Target 改为iOS7.0以下,造成了问题的死循环)

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 comm_第1张图片
图2

解决方案:

1.如大部分人所说,选择Development Target 为iOS6.0,将framework重新编译后,再接入使用(这种方案一般不会成立,除非是自己的SDK,第三方是不愿费力气来兼容你的版本)

图3

2.不仅仅需要把项目下的Development Target修改成iOS8.0(图4),还需要把cocos2dx对应的iOS Development Target改成iOS8.0(图5),两者统一,问题完美解决

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 comm_第2张图片
图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),否则很容易出错

你可能感兴趣的:(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 comm)