IT技术互动交流平台

同步推上传破解ipa方法

发布日期:2014-12-30 23:18:25

今天运营同事要求把已经上架到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("úÞqq")
	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 "my.company.${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了。

 

Tag标签: 方法  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规