概观
我们的命令行构建(构建和创建.ipa)不再有效.
iTunesConnect已开始拒绝使用CODE_SIGN_RESOURCE_RULES_PATH构建设置的构建.
如果我们构建没有该设置,则PackageApplication工具(我们用于创建签名的.ipa)失败.
似乎PackageApplication使用resource-rules参数调用/ usr/bin/codesign,即使CODE_SIGN_RESOURCE_RULES_PATH排除了构建设置也是如此
我怀疑PackageApplication需要更新,以便在CODE_SIGN_RESOURCE_RULES_PATH排除构建设置时不会使用resource-rules参数调用/ usr/bin/codesign .
有人找到了解决方案吗?
细节
我们在命令行上构建我们的应用程序,如下所示:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'
我们在命令行上创建签名的.ipa,如下所示:
xcrun -log -sdk iphoneos PackageApplication "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.app" -o "/Users/mpv/dev/myApp/build/AppStoreDistribution-iphoneos/myApp.ipa" -sign "iPhone Distribution: MyTeam (XXXXXXXXXX)" -embed /Users/mpv/Library/MobileDevice/Provisioning\ Profiles/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.mobileprovision
iTunesConnect现在拒绝我们的构建,并出现以下错误:
"此捆绑包无效.Info.plist包含myApp [myApp.app]包中的无效密钥'CFBundleResourceSpecification'"
如果我们'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist'从构建命令中删除该位,那么应用程序是在没有CFBundleResourceSpecificationplist键的情况下构建的(我认为这是我们想要的).新的构建命令如下所示:
xcodebuild -workspace myApp.xcworkspace -scheme myApp -sdk iphoneos -configuration AppStoreDistribution OBJROOT=$PWD/build SYMROOT=$PWD/build ONLY_ACTIVE_ARCH=NO 
现在的问题是构建.ipa的命令失败,出现以下错误:
错误:/ usr/bin/codesign --force --preserve-metadata = identifier,entitlements,resource-rules --sign iPhone Distribution:MyTeam(XXXXXXXXXX)--resource-rules =/var/folders/2b/7hylk7nn13dgrl9yyh2wp0lm0000gn/T /zDRRJMkKtQ/Payload/myApp.app/ResourceRules.plist …
如何使用UIViewController容器转换方法使用自动布局:
-(void)transitionFromViewController:(UIViewController *)fromViewController
                   toViewController:(UIViewController *)toViewController 
                           duration:(NSTimeInterval)duration
                            options:(UIViewAnimationOptions)options
                         animations:(void (^)(void))animations
                         completion:(void (^)(BOOL finished))completion;
传统上,使用Springs/Struts,您可以设置初始帧(在调用此方法之前),并在传递给方法的动画块中设置最终帧.
该方法可以将视图添加到视图层次结构并为您运行动画.
问题是您不能在同一位置(在方法调用之前)添加初始约束,因为视图尚未添加到视图层次结构中.
任何想法我如何使用此方法以及自动布局?
以下是使用Springs/Struts(框架)执行此操作的示例(谢谢cocoanetics) http://www.cocoanetics.com/2012/04/containing-viewcontrollers
- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController
{
    // XXX We can't add constraints here because the view is not yet in the view hierarchy
    // animation setup 
    toViewController.view.frame = _containerView.bounds;
    toViewController.view.autoresizingMask = _containerView.autoresizingMask;
    // notify
    [fromViewController willMoveToParentViewController:nil];
    [self addChildViewController:toViewController];
    // transition
    [self transitionFromViewController:fromViewController
                      toViewController:toViewController
                              duration:1.0
                               options:UIViewAnimationOptionTransitionCurlDown
                            animations:^{
                            }
                            completion:^(BOOL finished) {
                                [toViewController didMoveToParentViewController:self];
                                [fromViewController removeFromParentViewController];
                            }];
}
我最近在我的Xcode项目构建设置中启用了模块("启用模块(C和Objective-C)"),现在我经常遇到以下构建错误.它在我下次构建时工作(没有任何变化),但它很烦人,因为它经常发生(一小时几次).
致命错误:AST文件格式错误或损坏:'无法找到文件'/Users/mpv/dev/project/Crashlytics.framework/Headers/Crashlytics.h'由AST文件引用'注意:修改系统头后,请删除模块缓存在'/ Users/mpv/Library/Developer/Xcode/DerivedData/ModuleCache/M5WJ0FYE7N06'
Crashlytics建议从预编译的头文件(.pch)中删除Crashlytics.h,并直接导入需要它的每个源文件中.这大大减少了问题,但我仍然偶尔会在构建时发现Crashlytics.h文件未找到错误.
fatal error: 'Crashlytics/Crashlytics.h' file not found
#import <Crashlytics/Crashlytics.h>