今天运营同事要求把已经上架到appStore,上传到同步推市场(tui.tongbu.com),在使用过程,感觉是无从下手,官方上没有任何文档,问客服也是爱搭不理,给他们提个建议也是很差的态度,来了句我们不支持。上传到同步推应用市场要的ipa文件必须是破解的,下面就来说下,也是记录下自己在使用过程遇到的些问题。
一、准备工作
系统OS X Yosemite 10.10,Xcode6.1 ,越狱设备一台
二、破解Xocde
1.伪造签名证书:
打开实用工具-钥匙串访问。然后在菜单栏里点击钥匙串访问-证书助理-创建证书来打开向导。必须要把名称命名为iPhone Developer,将类型设定为代码签名,将"让我覆盖这些默认值"选中。之后的步骤无需更改,一路点击“确定”和“继续”来完成这个向导就可以!
2.修改Xcode配制文件
1)修改SDKsettings.plist文件
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/
打开SDKSettings.plist文件,把CODE_SIGNING_REQUIRED和ENTITLEMENTS_REQUIRED的值改成NO。图如下:
2)修改Info.plist文件
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/
打开该目录下的Info.plist文件,右击--Add Row,增加两项:
PROVISIONING_PROFILE_ALLOWED 值为 NO
PROVISIONING_PROFILE_REQUIRED 值为 NO
3)将上面Info.plist文件中的 "XCiPhoneOSCodeSignContext"
替换成"XCCodeSignContext"(共3处)
3.设置gen_entitlements.py脚本
在命令终端中执行如下命令:
mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
/* 在 /Applications/Xcode.app/Contents/Developer/ 目录下创建一个 名为iphoneentitlements的目录*/
cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
/* 进入刚刚创建的iphoneentitlements目录*/
curl
-O http://www.bobzy.cn/xcode/gen_entitlements.txt
/*
把gen_entitlements.txt放到刚创建的iphoneentitlements目录,gen_entitlements.txt如下
#!/usr/bin/env python import sys import struct if len(sys.argv) != 3: print "Usage: %s appname dest_file.xcent" % sys.argv[0] sys.exit(-1) APPNAME = sys.argv[1] DEST = sys.argv[2] if not DEST.endswith('.xml') and not DEST.endswith('.xcent'): print "Dest must be .xml (for ldid) or .xcent (for codesign)" sys.exit(-1) entitlements = """ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>%s</string> <key>get-task-allow</key> <true/> </dict> </plist> """ % APPNAME f = open(DEST,'w') if DEST.endswith('.xcent'): f.write("\xfa\xde\x71\x71") f.write(struct.pack('>L', len(entitlements) + 8)) f.write(entitlements) f.close()
*/
mv gen_entitlements.txt gen_entitlements.py
/*重命名刚刚下载的文件,命名为gen_entitlements.py*/
sudo chmod 777 gen_entitlements.py
/* 修改这个文件的权限,加上任意人可执行(此处要求你输入系统账号密码)*/
4. 修改项目属性 (每次新建项目都要执行)
1)点击TARGETS项目图标,找到"BuildSettings"选项下的"Code Signing",将其值全部改为"Don‘t
Code Sign"
2)点击Project项目图标,找到"BuildSettings"选项下的"Code Signing",将其值全部改为"iPhone Developer"
3)点击TARGETS项目图标,
切换到Build Phases选项,点击Editor – Add Build Phase – Add Run Script Build Phase,然后输入以下脚本:
export CODESIGN_ALLOCATE=/Applications/Xcode副本.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate if [ "${PLATFORM_NAME}" == "iphoneos" ] || [ "${PLATFORM_NAME}" == "ipados" ]; then /Applications/Xcode副本.app/Contents/Developer/iphoneentitlements/gen_entitlements.py "</span><span style="font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:12px; line-height: 22.75px; background-color: rgb(255, 255, 255);">my.company</span><span style="background-color: rgb(255, 255, 255);">.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent"; codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"; fi
注意:my.company.${PROJECT_NAME}
替换为自己项目的Bundle Identifier。
5. 连接设备调试打包
先将代码生成为Release,调试这里不多介绍了,主要介绍下打包ipa。
product -->Archive
拖放到itunes中,在show in Finder就可以看到ipa了,保存到自己想到的位置,至此工作都已完成,到同步推上传即可。
在使用过程中遇到的问题:
Add
Run Script Build Phase:这里要注意if then前后的路径要保持一致,我只修改了前面没有注意then后面的,就会有错误提示。
Command
/bin/sh failed with exit code 1:这是由于有2个一样的密钥造成的,删除一个就OK了。