iOS

iOS

Appstore: Supporting IPv6-only Networks 提审必须支持IPv6,禁止IPv4的API

游戏开发atool 发表了文章 • 0 个评论 • 1307 次浏览 • 2016-05-10 18:15 • 来自相关话题

2016年06月后,appstore要求上线的APP必须支持ipv6,具体:
 
1. If you’re writing a client-side app using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses. If you aren’t connecting by name, you probably should be. See Avoid Resolving DNS Names Before Connecting to a Host to learn how. For information on CFNetwork, see CFNetwork Framework Reference. 
2. If you’re writing a server-side app or other low-level networking app, you need to make sure your socket code works correctly with both IPv4 and IPv6 addresses. Refer to RFC4038: Application Aspects of IPv6 Transition.

怎么检查自己的APP是否能过关?主要有以下几项:

一、代码中IP地址
只要存在IP格式的字符串(正则为:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})都尽量删除,不排除appstore就是通过正则来检查的。建议全部换成域名,然后通过域名解析。
 
二、API方法
一些只支持IPv4的方法不可在用。具体有以下:inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()如果用到了下面左边的这些IPv4的类型(常量值),那么它们相应的IPv6类型也需要做处理:





关于苹果要求IPv6:https://developer.apple.com/news/?id=05042016a 查看全部
2016年06月后,appstore要求上线的APP必须支持ipv6,具体:
 
1. If you’re writing a client-side app using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses. If you aren’t connecting by name, you probably should be. See Avoid Resolving DNS Names Before Connecting to a Host to learn how. For information on CFNetwork, see CFNetwork Framework Reference. 
2. If you’re writing a server-side app or other low-level networking app, you need to make sure your socket code works correctly with both IPv4 and IPv6 addresses. Refer to RFC4038: Application Aspects of IPv6 Transition.

怎么检查自己的APP是否能过关?主要有以下几项:

一、代码中IP地址
只要存在IP格式的字符串(正则为:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})都尽量删除,不排除appstore就是通过正则来检查的。建议全部换成域名,然后通过域名解析。
 
二、API方法
一些只支持IPv4的方法不可在用。具体有以下:
inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()
如果用到了下面左边的这些IPv4的类型(常量值),那么它们相应的IPv6类型也需要做处理:
f2bcddfde26919a9c3832cdaf0bc56de.png


关于苹果要求IPv6:https://developer.apple.com/news/?id=05042016a

xcode6打包ipa重签失败——无法安装

游戏开发atool 发表了文章 • 0 个评论 • 527 次浏览 • 2016-04-22 14:16 • 来自相关话题

升级xocde6之后,使用achieve打包, 然后zip成ipa包之后,送去重签,发现安装问题。

使用itools安装提示证书问题;

使用itunes安装,直接是灰色图标

原因很简单,改两项xcode配置即可:

1.Project - Target - Building Setting - Code Signing中的Code Signing Resource Rules Path项,这一项在Xcode5中是不存在的,升级之后,这一项默认为空,设置为:$(SDKROOT)/ResourceRules.plist 即可,Xcode会自动换成相应的路径;

2.targets中的名字都不能带有空格,很多项目默认生成的target name是: project空格iOS 和 project空格Mac,双击修改即可。

具体看如下的图片:(博客转移,图片丢失)
  查看全部
升级xocde6之后,使用achieve打包, 然后zip成ipa包之后,送去重签,发现安装问题。

使用itools安装提示证书问题;

使用itunes安装,直接是灰色图标

原因很简单,改两项xcode配置即可:

1.Project - Target - Building Setting - Code Signing中的Code Signing Resource Rules Path项,这一项在Xcode5中是不存在的,升级之后,这一项默认为空,设置为:$(SDKROOT)/ResourceRules.plist 即可,Xcode会自动换成相应的路径;

2.targets中的名字都不能带有空格,很多项目默认生成的target name是: project空格iOS 和 project空格Mac,双击修改即可。

具体看如下的图片:(博客转移,图片丢失)
 

Error Domain=AVFoundationErrorDomain Code=-11823 "无法存储"

移动开发atool 发表了文章 • 0 个评论 • 1497 次浏览 • 2016-04-22 13:19 • 来自相关话题

在IOS上使用AVFoundation的库进行视频录制,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11823 "无法存储" UserInfo=0x1782f8a00 {NSUnderlyingError=0x17064f4e0 "The operation couldn’t be completed. (OSStatus error -12672.)", AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedRecoverySuggestion=请重试存储。, NSLocalizedDescription=无法存储},video.mov -- file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/Documents/

对于一些英文语言的机器,显示的是:

Error Domain=AVFoundationErrorDomain Code=-11823 "Cannot Save" UserInfo=0x16fb20 {NSLocalizedRecoverySuggestion=Try saving again., NSLocalizedDescription=Cannot Save}

出现Error Domain=AVFoundationErrorDomain Code=-11823这个错误的原因都是需要写文件,但是文件是存在的。不知道为什么ios不允许直接覆盖?在android上,同样的逻辑没有任何问题。

知道问题的原因,那么解决也非常简单,每次再录制视频之前(写文件之前),检查文件是否存在,存在则删除即可:

//如果文件存在,则删除
if ([[NSFileManager defaultManager] fileExistsAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"]]) {
NSError *error;
if ([[NSFileManager defaultManager] removeItemAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"] error:&error] == NO) {
NSLog(@"removeitematpath %@ error :%@", [documentsDirPath stringByAppendingPathComponent:@"video.mp4"], error);
}
}修改之后,没有任何问题。Enjoy~ 查看全部
在IOS上使用AVFoundation的库进行视频录制,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11823 "无法存储" UserInfo=0x1782f8a00 {NSUnderlyingError=0x17064f4e0 "The operation couldn’t be completed. (OSStatus error -12672.)", AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedRecoverySuggestion=请重试存储。, NSLocalizedDescription=无法存储},video.mov -- file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/Documents/

对于一些英文语言的机器,显示的是:

Error Domain=AVFoundationErrorDomain Code=-11823 "Cannot Save" UserInfo=0x16fb20 {NSLocalizedRecoverySuggestion=Try saving again., NSLocalizedDescription=Cannot Save}

出现Error Domain=AVFoundationErrorDomain Code=-11823这个错误的原因都是需要写文件,但是文件是存在的。不知道为什么ios不允许直接覆盖?在android上,同样的逻辑没有任何问题。

知道问题的原因,那么解决也非常简单,每次再录制视频之前(写文件之前),检查文件是否存在,存在则删除即可:

//如果文件存在,则删除
if ([[NSFileManager defaultManager] fileExistsAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"]]) {
NSError *error;
if ([[NSFileManager defaultManager] removeItemAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"] error:&error] == NO) {
NSLog(@"removeitematpath %@ error :%@", [documentsDirPath stringByAppendingPathComponent:@"video.mp4"], error);
}
}
修改之后,没有任何问题。Enjoy~

Cocos2d-x 横屏竖屏异常uncaught exception“UIApplicationInvalidInterfaceOrientation”

游戏开发atool 发表了文章 • 0 个评论 • 598 次浏览 • 2016-04-22 13:18 • 来自相关话题

在Cocos2d-x横屏游戏中集成社会化分享的时候,会出现异常

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'

大致意思是cocos2d-x游戏设置的可支持屏幕方式找不到需要的方向。这是因为游戏中设置的是只支持横屏方式,但是在RootViewController中shouldAutorotate返回的又是YES,恰好分享的时候弹出的授权页面时竖屏的,所以弹出框自动旋转到竖屏,确又找不到可以支持的竖屏方向,所以抛出异常,程序也卡死了,解决办法如下,仅仅针对于Cocos2d-x代码,其他APP如果出现类似问题,可以参考:

1.AppController.mm加入方法
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return UIInterfaceOrientationMaskAll;
}
else {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}2.RootViewController.mm 加入方法
//For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
#ifdef __IPHONE_6_0
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;//方向也可以仅定义为横屏中的一个方向
#endif
}如此就可以了,反正我是解决了~兼容性已测,不存在问题!Enjoy~ 查看全部
在Cocos2d-x横屏游戏中集成社会化分享的时候,会出现异常

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'

大致意思是cocos2d-x游戏设置的可支持屏幕方式找不到需要的方向。这是因为游戏中设置的是只支持横屏方式,但是在RootViewController中shouldAutorotate返回的又是YES,恰好分享的时候弹出的授权页面时竖屏的,所以弹出框自动旋转到竖屏,确又找不到可以支持的竖屏方向,所以抛出异常,程序也卡死了,解决办法如下,仅仅针对于Cocos2d-x代码,其他APP如果出现类似问题,可以参考:

1.AppController.mm加入方法
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return UIInterfaceOrientationMaskAll;
}
else {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}
2.RootViewController.mm 加入方法
//For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
#ifdef __IPHONE_6_0
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;//方向也可以仅定义为横屏中的一个方向
#endif
}
如此就可以了,反正我是解决了~兼容性已测,不存在问题!Enjoy~

xcode编译cocos2d-x 3.0及以上版本支持arm64位

游戏开发atool 发表了文章 • 0 个评论 • 1822 次浏览 • 2016-04-22 13:05 • 来自相关话题

在使用cocos2d-x 3.0rc lua版本完成游戏过程中,真机存在一个问题:

1. 使用iphone4s真机调试,可以正常运行通过;

2. 使用iphone4s以上版本真机调试的时候,不能够正常编译,出现的的错误是cc命名空间下的很多方法找不到,具体都是cocos2d-x的代码找不到。

虽然直接使用iphone4s连接手机,achieve出来的ipa包也可以在所有ios设备上运行,但是提交appstore的时候,就会出现错误:ERROR ITMS-90086:"missing 64-bit support. beginning on february 1, 2015, new iOS apps submitted to the app store must be include 64-bit support and be built with the ios8 SDK......"。




大致意思是app store从2015年2月1号开始,不再接受不支持64位的app上线。

解决办法如下:

1.将所有的cocos2d-x xcode项目的project和target中的building-setting设置项中的architectures、supported platforms、validarchitectures,另外非常重要的一个配置是build active architecture only全部设置为No。下图所示:




需要修改p2,cocos2d_lua_bindings.xcodeproj, cocos2d_libs.xcodeproj三个项目中的building-setting。如下图所示:




修改之后,就会发现之前出现的“cc命名空间下的很多方法找不到”的错误都消失了,出现的都是关于图片读取的问题,这个问题解决见步骤2;

2.因为cocos2d-x3.0rc版本没有将图片相关的64位库加入,引入相关的图片读取解析的64位库;如下图所示:




具体就是上述中_arm64.a结尾的库。

上述问题解决了,但是又出现lua里面的方法找不到的错误,解决办法见步骤3;

3.由于cocos2d-x3.0rc使用的是luajit,但是只引入了libluagit.a库,这个库是32位的,所以无法编译64位,于是找到一个liblua.a的库,引入lua.a到项目即可。如下图:




三步完成,问题全部解决,打包,重签,测试,没有任何问题。

Enjoy~
  查看全部
在使用cocos2d-x 3.0rc lua版本完成游戏过程中,真机存在一个问题:

1. 使用iphone4s真机调试,可以正常运行通过;

2. 使用iphone4s以上版本真机调试的时候,不能够正常编译,出现的的错误是cc命名空间下的很多方法找不到,具体都是cocos2d-x的代码找不到。

虽然直接使用iphone4s连接手机,achieve出来的ipa包也可以在所有ios设备上运行,但是提交appstore的时候,就会出现错误:ERROR ITMS-90086:"missing 64-bit support. beginning on february 1, 2015, new iOS apps submitted to the app store must be include 64-bit support and be built with the ios8 SDK......"。
111.png

大致意思是app store从2015年2月1号开始,不再接受不支持64位的app上线。

解决办法如下:

1.将所有的cocos2d-x xcode项目的project和target中的building-setting设置项中的architectures、supported platforms、validarchitectures,另外非常重要的一个配置是build active architecture only全部设置为No。下图所示:
222.png

需要修改p2,cocos2d_lua_bindings.xcodeproj, cocos2d_libs.xcodeproj三个项目中的building-setting。如下图所示:
333.png

修改之后,就会发现之前出现的“cc命名空间下的很多方法找不到”的错误都消失了,出现的都是关于图片读取的问题,这个问题解决见步骤2;

2.因为cocos2d-x3.0rc版本没有将图片相关的64位库加入,引入相关的图片读取解析的64位库;如下图所示:
444.png

具体就是上述中_arm64.a结尾的库。

上述问题解决了,但是又出现lua里面的方法找不到的错误,解决办法见步骤3;

3.由于cocos2d-x3.0rc使用的是luajit,但是只引入了libluagit.a库,这个库是32位的,所以无法编译64位,于是找到一个liblua.a的库,引入lua.a到项目即可。如下图:
555.png

三步完成,问题全部解决,打包,重签,测试,没有任何问题。

Enjoy~
 

Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"

移动开发atool 发表了文章 • 0 个评论 • 1763 次浏览 • 2016-04-22 12:59 • 来自相关话题

在iOS上开发视频操作的时候,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"UserInfo=0x1780fb480 {NSUnderlyingError=0x1706495d0 "The operation couldn’t be completed. (OSStatus error -12673.)", NSLocalizedFailureReason=发生未知错误(-12673), AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedDescription=这项操作无法完成},file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/video.mov

具体是使用AVFoundation录制使用,然后保存再文件中。

产生错误:Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"的原因都是因为存储的文件路径NSURL有问题。即使你打印出来没有什么问题,但是就是报错,确实蛋疼。

解决办法,重写输出文件的路径NSURL。给一个例子:
// 初始化保存的路径
NSString *documentsDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSURL *documentsDirUrl = [NSURL fileURLWithPath:documentsDirPath isDirectory:YES];
self.saveMovieFile = [NSURL URLWithString:@"video.mp4" relativeToURL:documentsDirUrl];当然,在使用这个路径之前,记得先检查这个文件是否存在,如果存在则先删除文件,否则会报另外一个错误。
Enjoy~
  查看全部
在iOS上开发视频操作的时候,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"UserInfo=0x1780fb480 {NSUnderlyingError=0x1706495d0 "The operation couldn’t be completed. (OSStatus error -12673.)", NSLocalizedFailureReason=发生未知错误(-12673), AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedDescription=这项操作无法完成},file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/video.mov

具体是使用AVFoundation录制使用,然后保存再文件中。

产生错误:Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"的原因都是因为存储的文件路径NSURL有问题。即使你打印出来没有什么问题,但是就是报错,确实蛋疼。

解决办法,重写输出文件的路径NSURL。给一个例子:
// 初始化保存的路径
NSString *documentsDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSURL *documentsDirUrl = [NSURL fileURLWithPath:documentsDirPath isDirectory:YES];
self.saveMovieFile = [NSURL URLWithString:@"video.mp4" relativeToURL:documentsDirUrl];
当然,在使用这个路径之前,记得先检查这个文件是否存在,如果存在则先删除文件,否则会报另外一个错误。
Enjoy~
 

xcode6打包ipa重签失败——无法安装

游戏开发atool 发表了文章 • 0 个评论 • 527 次浏览 • 2016-04-22 14:16 • 来自相关话题

升级xocde6之后,使用achieve打包, 然后zip成ipa包之后,送去重签,发现安装问题。

使用itools安装提示证书问题;

使用itunes安装,直接是灰色图标

原因很简单,改两项xcode配置即可:

1.Project - Target - Building Setting - Code Signing中的Code Signing Resource Rules Path项,这一项在Xcode5中是不存在的,升级之后,这一项默认为空,设置为:$(SDKROOT)/ResourceRules.plist 即可,Xcode会自动换成相应的路径;

2.targets中的名字都不能带有空格,很多项目默认生成的target name是: project空格iOS 和 project空格Mac,双击修改即可。

具体看如下的图片:(博客转移,图片丢失)
  查看全部
升级xocde6之后,使用achieve打包, 然后zip成ipa包之后,送去重签,发现安装问题。

使用itools安装提示证书问题;

使用itunes安装,直接是灰色图标

原因很简单,改两项xcode配置即可:

1.Project - Target - Building Setting - Code Signing中的Code Signing Resource Rules Path项,这一项在Xcode5中是不存在的,升级之后,这一项默认为空,设置为:$(SDKROOT)/ResourceRules.plist 即可,Xcode会自动换成相应的路径;

2.targets中的名字都不能带有空格,很多项目默认生成的target name是: project空格iOS 和 project空格Mac,双击修改即可。

具体看如下的图片:(博客转移,图片丢失)
 

Appstore: Supporting IPv6-only Networks 提审必须支持IPv6,禁止IPv4的API

游戏开发atool 发表了文章 • 0 个评论 • 1307 次浏览 • 2016-05-10 18:15 • 来自相关话题

2016年06月后,appstore要求上线的APP必须支持ipv6,具体:
 
1. If you’re writing a client-side app using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses. If you aren’t connecting by name, you probably should be. See Avoid Resolving DNS Names Before Connecting to a Host to learn how. For information on CFNetwork, see CFNetwork Framework Reference. 
2. If you’re writing a server-side app or other low-level networking app, you need to make sure your socket code works correctly with both IPv4 and IPv6 addresses. Refer to RFC4038: Application Aspects of IPv6 Transition.

怎么检查自己的APP是否能过关?主要有以下几项:

一、代码中IP地址
只要存在IP格式的字符串(正则为:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})都尽量删除,不排除appstore就是通过正则来检查的。建议全部换成域名,然后通过域名解析。
 
二、API方法
一些只支持IPv4的方法不可在用。具体有以下:inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()如果用到了下面左边的这些IPv4的类型(常量值),那么它们相应的IPv6类型也需要做处理:





关于苹果要求IPv6:https://developer.apple.com/news/?id=05042016a 查看全部
2016年06月后,appstore要求上线的APP必须支持ipv6,具体:
 
1. If you’re writing a client-side app using high-level networking APIs such as NSURLSession and the CFNetwork frameworks and you connect by name, you should not need to change anything for your app to work with IPv6 addresses. If you aren’t connecting by name, you probably should be. See Avoid Resolving DNS Names Before Connecting to a Host to learn how. For information on CFNetwork, see CFNetwork Framework Reference. 
2. If you’re writing a server-side app or other low-level networking app, you need to make sure your socket code works correctly with both IPv4 and IPv6 addresses. Refer to RFC4038: Application Aspects of IPv6 Transition.

怎么检查自己的APP是否能过关?主要有以下几项:

一、代码中IP地址
只要存在IP格式的字符串(正则为:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})都尽量删除,不排除appstore就是通过正则来检查的。建议全部换成域名,然后通过域名解析。
 
二、API方法
一些只支持IPv4的方法不可在用。具体有以下:
inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()
如果用到了下面左边的这些IPv4的类型(常量值),那么它们相应的IPv6类型也需要做处理:
f2bcddfde26919a9c3832cdaf0bc56de.png


关于苹果要求IPv6:https://developer.apple.com/news/?id=05042016a

xcode6打包ipa重签失败——无法安装

游戏开发atool 发表了文章 • 0 个评论 • 527 次浏览 • 2016-04-22 14:16 • 来自相关话题

升级xocde6之后,使用achieve打包, 然后zip成ipa包之后,送去重签,发现安装问题。

使用itools安装提示证书问题;

使用itunes安装,直接是灰色图标

原因很简单,改两项xcode配置即可:

1.Project - Target - Building Setting - Code Signing中的Code Signing Resource Rules Path项,这一项在Xcode5中是不存在的,升级之后,这一项默认为空,设置为:$(SDKROOT)/ResourceRules.plist 即可,Xcode会自动换成相应的路径;

2.targets中的名字都不能带有空格,很多项目默认生成的target name是: project空格iOS 和 project空格Mac,双击修改即可。

具体看如下的图片:(博客转移,图片丢失)
  查看全部
升级xocde6之后,使用achieve打包, 然后zip成ipa包之后,送去重签,发现安装问题。

使用itools安装提示证书问题;

使用itunes安装,直接是灰色图标

原因很简单,改两项xcode配置即可:

1.Project - Target - Building Setting - Code Signing中的Code Signing Resource Rules Path项,这一项在Xcode5中是不存在的,升级之后,这一项默认为空,设置为:$(SDKROOT)/ResourceRules.plist 即可,Xcode会自动换成相应的路径;

2.targets中的名字都不能带有空格,很多项目默认生成的target name是: project空格iOS 和 project空格Mac,双击修改即可。

具体看如下的图片:(博客转移,图片丢失)
 

Error Domain=AVFoundationErrorDomain Code=-11823 "无法存储"

移动开发atool 发表了文章 • 0 个评论 • 1497 次浏览 • 2016-04-22 13:19 • 来自相关话题

在IOS上使用AVFoundation的库进行视频录制,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11823 "无法存储" UserInfo=0x1782f8a00 {NSUnderlyingError=0x17064f4e0 "The operation couldn’t be completed. (OSStatus error -12672.)", AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedRecoverySuggestion=请重试存储。, NSLocalizedDescription=无法存储},video.mov -- file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/Documents/

对于一些英文语言的机器,显示的是:

Error Domain=AVFoundationErrorDomain Code=-11823 "Cannot Save" UserInfo=0x16fb20 {NSLocalizedRecoverySuggestion=Try saving again., NSLocalizedDescription=Cannot Save}

出现Error Domain=AVFoundationErrorDomain Code=-11823这个错误的原因都是需要写文件,但是文件是存在的。不知道为什么ios不允许直接覆盖?在android上,同样的逻辑没有任何问题。

知道问题的原因,那么解决也非常简单,每次再录制视频之前(写文件之前),检查文件是否存在,存在则删除即可:

//如果文件存在,则删除
if ([[NSFileManager defaultManager] fileExistsAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"]]) {
NSError *error;
if ([[NSFileManager defaultManager] removeItemAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"] error:&error] == NO) {
NSLog(@"removeitematpath %@ error :%@", [documentsDirPath stringByAppendingPathComponent:@"video.mp4"], error);
}
}修改之后,没有任何问题。Enjoy~ 查看全部
在IOS上使用AVFoundation的库进行视频录制,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11823 "无法存储" UserInfo=0x1782f8a00 {NSUnderlyingError=0x17064f4e0 "The operation couldn’t be completed. (OSStatus error -12672.)", AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedRecoverySuggestion=请重试存储。, NSLocalizedDescription=无法存储},video.mov -- file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/Documents/

对于一些英文语言的机器,显示的是:

Error Domain=AVFoundationErrorDomain Code=-11823 "Cannot Save" UserInfo=0x16fb20 {NSLocalizedRecoverySuggestion=Try saving again., NSLocalizedDescription=Cannot Save}

出现Error Domain=AVFoundationErrorDomain Code=-11823这个错误的原因都是需要写文件,但是文件是存在的。不知道为什么ios不允许直接覆盖?在android上,同样的逻辑没有任何问题。

知道问题的原因,那么解决也非常简单,每次再录制视频之前(写文件之前),检查文件是否存在,存在则删除即可:

//如果文件存在,则删除
if ([[NSFileManager defaultManager] fileExistsAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"]]) {
NSError *error;
if ([[NSFileManager defaultManager] removeItemAtPath:[documentsDirPath stringByAppendingPathComponent:@"video.mp4"] error:&error] == NO) {
NSLog(@"removeitematpath %@ error :%@", [documentsDirPath stringByAppendingPathComponent:@"video.mp4"], error);
}
}
修改之后,没有任何问题。Enjoy~

Cocos2d-x 横屏竖屏异常uncaught exception“UIApplicationInvalidInterfaceOrientation”

游戏开发atool 发表了文章 • 0 个评论 • 598 次浏览 • 2016-04-22 13:18 • 来自相关话题

在Cocos2d-x横屏游戏中集成社会化分享的时候,会出现异常

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'

大致意思是cocos2d-x游戏设置的可支持屏幕方式找不到需要的方向。这是因为游戏中设置的是只支持横屏方式,但是在RootViewController中shouldAutorotate返回的又是YES,恰好分享的时候弹出的授权页面时竖屏的,所以弹出框自动旋转到竖屏,确又找不到可以支持的竖屏方向,所以抛出异常,程序也卡死了,解决办法如下,仅仅针对于Cocos2d-x代码,其他APP如果出现类似问题,可以参考:

1.AppController.mm加入方法
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return UIInterfaceOrientationMaskAll;
}
else {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}2.RootViewController.mm 加入方法
//For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
#ifdef __IPHONE_6_0
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;//方向也可以仅定义为横屏中的一个方向
#endif
}如此就可以了,反正我是解决了~兼容性已测,不存在问题!Enjoy~ 查看全部
在Cocos2d-x横屏游戏中集成社会化分享的时候,会出现异常

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'

大致意思是cocos2d-x游戏设置的可支持屏幕方式找不到需要的方向。这是因为游戏中设置的是只支持横屏方式,但是在RootViewController中shouldAutorotate返回的又是YES,恰好分享的时候弹出的授权页面时竖屏的,所以弹出框自动旋转到竖屏,确又找不到可以支持的竖屏方向,所以抛出异常,程序也卡死了,解决办法如下,仅仅针对于Cocos2d-x代码,其他APP如果出现类似问题,可以参考:

1.AppController.mm加入方法
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
return UIInterfaceOrientationMaskAll;
}
else {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}
2.RootViewController.mm 加入方法
//For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
- (NSUInteger) supportedInterfaceOrientations{
#ifdef __IPHONE_6_0
return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;//方向也可以仅定义为横屏中的一个方向
#endif
}
如此就可以了,反正我是解决了~兼容性已测,不存在问题!Enjoy~

xcode编译cocos2d-x 3.0及以上版本支持arm64位

游戏开发atool 发表了文章 • 0 个评论 • 1822 次浏览 • 2016-04-22 13:05 • 来自相关话题

在使用cocos2d-x 3.0rc lua版本完成游戏过程中,真机存在一个问题:

1. 使用iphone4s真机调试,可以正常运行通过;

2. 使用iphone4s以上版本真机调试的时候,不能够正常编译,出现的的错误是cc命名空间下的很多方法找不到,具体都是cocos2d-x的代码找不到。

虽然直接使用iphone4s连接手机,achieve出来的ipa包也可以在所有ios设备上运行,但是提交appstore的时候,就会出现错误:ERROR ITMS-90086:"missing 64-bit support. beginning on february 1, 2015, new iOS apps submitted to the app store must be include 64-bit support and be built with the ios8 SDK......"。




大致意思是app store从2015年2月1号开始,不再接受不支持64位的app上线。

解决办法如下:

1.将所有的cocos2d-x xcode项目的project和target中的building-setting设置项中的architectures、supported platforms、validarchitectures,另外非常重要的一个配置是build active architecture only全部设置为No。下图所示:




需要修改p2,cocos2d_lua_bindings.xcodeproj, cocos2d_libs.xcodeproj三个项目中的building-setting。如下图所示:




修改之后,就会发现之前出现的“cc命名空间下的很多方法找不到”的错误都消失了,出现的都是关于图片读取的问题,这个问题解决见步骤2;

2.因为cocos2d-x3.0rc版本没有将图片相关的64位库加入,引入相关的图片读取解析的64位库;如下图所示:




具体就是上述中_arm64.a结尾的库。

上述问题解决了,但是又出现lua里面的方法找不到的错误,解决办法见步骤3;

3.由于cocos2d-x3.0rc使用的是luajit,但是只引入了libluagit.a库,这个库是32位的,所以无法编译64位,于是找到一个liblua.a的库,引入lua.a到项目即可。如下图:




三步完成,问题全部解决,打包,重签,测试,没有任何问题。

Enjoy~
  查看全部
在使用cocos2d-x 3.0rc lua版本完成游戏过程中,真机存在一个问题:

1. 使用iphone4s真机调试,可以正常运行通过;

2. 使用iphone4s以上版本真机调试的时候,不能够正常编译,出现的的错误是cc命名空间下的很多方法找不到,具体都是cocos2d-x的代码找不到。

虽然直接使用iphone4s连接手机,achieve出来的ipa包也可以在所有ios设备上运行,但是提交appstore的时候,就会出现错误:ERROR ITMS-90086:"missing 64-bit support. beginning on february 1, 2015, new iOS apps submitted to the app store must be include 64-bit support and be built with the ios8 SDK......"。
111.png

大致意思是app store从2015年2月1号开始,不再接受不支持64位的app上线。

解决办法如下:

1.将所有的cocos2d-x xcode项目的project和target中的building-setting设置项中的architectures、supported platforms、validarchitectures,另外非常重要的一个配置是build active architecture only全部设置为No。下图所示:
222.png

需要修改p2,cocos2d_lua_bindings.xcodeproj, cocos2d_libs.xcodeproj三个项目中的building-setting。如下图所示:
333.png

修改之后,就会发现之前出现的“cc命名空间下的很多方法找不到”的错误都消失了,出现的都是关于图片读取的问题,这个问题解决见步骤2;

2.因为cocos2d-x3.0rc版本没有将图片相关的64位库加入,引入相关的图片读取解析的64位库;如下图所示:
444.png

具体就是上述中_arm64.a结尾的库。

上述问题解决了,但是又出现lua里面的方法找不到的错误,解决办法见步骤3;

3.由于cocos2d-x3.0rc使用的是luajit,但是只引入了libluagit.a库,这个库是32位的,所以无法编译64位,于是找到一个liblua.a的库,引入lua.a到项目即可。如下图:
555.png

三步完成,问题全部解决,打包,重签,测试,没有任何问题。

Enjoy~
 

Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"

移动开发atool 发表了文章 • 0 个评论 • 1763 次浏览 • 2016-04-22 12:59 • 来自相关话题

在iOS上开发视频操作的时候,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"UserInfo=0x1780fb480 {NSUnderlyingError=0x1706495d0 "The operation couldn’t be completed. (OSStatus error -12673.)", NSLocalizedFailureReason=发生未知错误(-12673), AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedDescription=这项操作无法完成},file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/video.mov

具体是使用AVFoundation录制使用,然后保存再文件中。

产生错误:Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"的原因都是因为存储的文件路径NSURL有问题。即使你打印出来没有什么问题,但是就是报错,确实蛋疼。

解决办法,重写输出文件的路径NSURL。给一个例子:
// 初始化保存的路径
NSString *documentsDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSURL *documentsDirUrl = [NSURL fileURLWithPath:documentsDirPath isDirectory:YES];
self.saveMovieFile = [NSURL URLWithString:@"video.mp4" relativeToURL:documentsDirUrl];当然,在使用这个路径之前,记得先检查这个文件是否存在,如果存在则先删除文件,否则会报另外一个错误。
Enjoy~
  查看全部
在iOS上开发视频操作的时候,出现错误:

Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"UserInfo=0x1780fb480 {NSUnderlyingError=0x1706495d0 "The operation couldn’t be completed. (OSStatus error -12673.)", NSLocalizedFailureReason=发生未知错误(-12673), AVErrorRecordingSuccessfullyFinishedKey=false, NSLocalizedDescription=这项操作无法完成},file:///var/mobile/Applications/D0CA65C7-F218-46F1-80BC-B0FA886EDF3B/video.mov

具体是使用AVFoundation录制使用,然后保存再文件中。

产生错误:Error Domain=AVFoundationErrorDomain Code=-11800 "这项操作无法完成"的原因都是因为存储的文件路径NSURL有问题。即使你打印出来没有什么问题,但是就是报错,确实蛋疼。

解决办法,重写输出文件的路径NSURL。给一个例子:
// 初始化保存的路径
NSString *documentsDirPath =[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSURL *documentsDirUrl = [NSURL fileURLWithPath:documentsDirPath isDirectory:YES];
self.saveMovieFile = [NSURL URLWithString:@"video.mp4" relativeToURL:documentsDirUrl];
当然,在使用这个路径之前,记得先检查这个文件是否存在,如果存在则先删除文件,否则会报另外一个错误。
Enjoy~