读书人

XCode 签字配置的快速设置工具

发布时间: 2012-09-01 09:33:03 作者: rapoo

XCode 签名配置的快速设置工具

之前看到过一篇无证做真机测试的文章,很受用~

不过因为当时手贱,把默认的“iPhone Developer”签名 改成了自己的名字

直接导致后来的每一个 XCode 项目,我想在真机上面看效果的话都要重新设置签名配置。

当然,是可以按照那篇文章把这个名字再修改回来,不过我当时懒,就一直这么弄着了

如今经过了那么长的时间,我电脑里面存储的很多工程都沿用了蛋疼的配置

所以一时半会儿要修改过来,也是一件很麻烦的事情。


而且,最近我们团队有通过 Versions 做项目管理进行协作开发~

好不容易解决了多人提交冲突的问题,但是还是存在一些令人不满意的地方,

那就是签名的问题,我的另一个伙计真机测试的话是用的他自己合法的签名

直接导致我更新或者他更新了以后,各自的签名被弄坏得重复的做一些签名的设置~

还有祸不单行,XCode 修改签名的时候有时修改不动,要关了再打开才能改的动,是个bug~

自从上次观察过 project.pbxproj 文件以后,我就发现签名的配置数据也是以明文的方式保存在这个里面的~

那么,完全有可能用 Java 写一个文本处理工具将签名配置那一段做文本替换,置换为我常用的签名配置。

开始我想的使用 Java 的正则表达式,但是一路都不成功。

不要还是因为我对正则表达式的适用范围了解地还不够深刻~

正则表达式擅长于做文本的行内处理,那种跨多行文本的情况用正则是不能取得很好效果的。

主要还是因为 Java 正则表达式的通配符 “.” 只能匹配除 \n 以外的所有其他字符所致~

后来我看到签名配置那段的开头和结尾都做了固定写法的注释,

这样的话我便抛弃了正则表达式的解决方案,直接用 String.indexOfString() 来做实现了

接下来基本上就是很简单的事情了,几行代码便解决了所有问题,下面上代码:

RepairWonderPipe.java

/* Begin XCBuildConfiguration section */BAAEAE4815A89BC600FF66D7 /* Debug */ = {isa = XCBuildConfiguration;buildSettings = {ARCHS = "$(ARCHS_STANDARD_32_BIT)";CODE_SIGN_ENTITLEMENTS = "";CODE_SIGN_IDENTITY = "";"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";GCC_C_LANGUAGE_STANDARD = gnu99;GCC_OPTIMIZATION_LEVEL = 0;GCC_PREPROCESSOR_DEFINITIONS = (DEBUG,"COCOS2D_DEBUG=1",);GCC_SYMBOLS_PRIVATE_EXTERN = NO;GCC_VERSION = com.apple.compilers.llvmgcc42;GCC_WARN_ABOUT_RETURN_TYPE = YES;GCC_WARN_UNUSED_VARIABLE = YES;IPHONEOS_DEPLOYMENT_TARGET = 4.3;"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";SDKROOT = iphoneos;};name = Debug;};BAAEAE4915A89BC600FF66D7 /* Release */ = {isa = XCBuildConfiguration;buildSettings = {ARCHS = "$(ARCHS_STANDARD_32_BIT)";CODE_SIGN_ENTITLEMENTS = "";CODE_SIGN_IDENTITY = "";"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";GCC_C_LANGUAGE_STANDARD = gnu99;GCC_PREPROCESSOR_DEFINITIONS = NDEBUG;GCC_VERSION = com.apple.compilers.llvmgcc42;GCC_WARN_ABOUT_RETURN_TYPE = YES;GCC_WARN_UNUSED_VARIABLE = YES;IPHONEOS_DEPLOYMENT_TARGET = 4.3;OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";SDKROOT = iphoneos;};name = Release;};BAAEAE4B15A89BC600FF66D7 /* Debug */ = {isa = XCBuildConfiguration;buildSettings = {ALWAYS_SEARCH_USER_PATHS = YES;CODE_SIGN_ENTITLEMENTS = Entitlements.plist;CODE_SIGN_IDENTITY = yang3wei;"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = yang3wei;COPY_PHASE_STRIP = NO;GCC_DYNAMIC_NO_PIC = NO;GCC_PRECOMPILE_PREFIX_HEADER = YES;GCC_PREFIX_HEADER = WonderPipe/Prefix.pch;"GCC_THUMB_SUPPORT[arch=armv6]" = "";GCC_VERSION = com.apple.compilers.llvmgcc42;INFOPLIST_FILE = WonderPipe/Resources/Info.plist;IPHONEOS_DEPLOYMENT_TARGET = 4.3;OTHER_LDFLAGS = "-lz";PRODUCT_NAME = "$(TARGET_NAME)";PROVISIONING_PROFILE = "";"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";TARGETED_DEVICE_FAMILY = "1,2";USER_HEADER_SEARCH_PATHS = "\"WonderPipe/libs\"";WRAPPER_EXTENSION = app;};name = Debug;};BAAEAE4C15A89BC600FF66D7 /* Release */ = {isa = XCBuildConfiguration;buildSettings = {ALWAYS_SEARCH_USER_PATHS = YES;CODE_SIGN_ENTITLEMENTS = Entitlements.plist;CODE_SIGN_IDENTITY = yang3wei;"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = yang3wei;COPY_PHASE_STRIP = YES;GCC_PRECOMPILE_PREFIX_HEADER = YES;GCC_PREFIX_HEADER = WonderPipe/Prefix.pch;"GCC_THUMB_SUPPORT[arch=armv6]" = "";GCC_VERSION = com.apple.compilers.llvmgcc42;INFOPLIST_FILE = WonderPipe/Resources/Info.plist;IPHONEOS_DEPLOYMENT_TARGET = 4.3;OTHER_LDFLAGS = "-lz";PRODUCT_NAME = "$(TARGET_NAME)";PROVISIONING_PROFILE = "";"PROVISIONING_PROFILE[sdk=iphoneos*]" = "";TARGETED_DEVICE_FAMILY = "1,2";USER_HEADER_SEARCH_PATHS = "\"WonderPipe/libs\"";VALIDATE_PRODUCT = YES;WRAPPER_EXTENSION = app;};name = Release;};/* End XCBuildConfiguration section */

读书人网 >移动开发

热点推荐