设为首页 收藏本站
查看: 869|回复: 0

[经验分享] 在Mac OS X中安装XCODE 4.6.2,配套ios 5.1的sdk,cocos2dx 2.2.不用证书生成ipa,装进ipad1跑起来的全过程

[复制链接]

尚未签到

发表于 2016-5-18 11:07:50 | 显示全部楼层 |阅读模式
说明一下,这个东西是给我自己看的,各位过客有问题也不要问我,因为我很可能也解答不出来。笔者只有一个ipad1可以用于ios调试,ipad1最高可以安装5.1.1。经调查5.1.1其实还是有不少用户在使用,好多的4s用户。
 
下载一个xcode4.6.2的dmg,安装之,你会发现里面的sdk只有6.1版本的。如果是更高版本的xcode,可能会对应7.0的sdk,所以我们第一件事就是安装5.1的sdk。
 
下载一个xcode4.3.1的dmg,然后双击dmg  右键Xcode.app “显示包内容” 然后:
Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs  将此目录下的对应版本文件夹拷贝到
现在xcode4.6 的对应目录中: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
切换到桌面 finder --->前往-->文件夹输入 /Volums/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
复制 iPhoneSimulator5.1.sdk文件夹到如下目录/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
在Finder中推出Xcode卷
然后重新启动 xcode 
 
接下来就是安装cocos2d了,我用的是2.2版本
下载解压到桌面上
终端打开cocos2d-x-2.2.0文件下tools/project-creator
根据我这里的地址命令是cd /Users/len/Documents/cocos2d-x-2.2.0/tools/project-creator
然后输入创建命令  ./create_project.py -project cbgame02 -package com.yezibao.game -language cpp
前面的   ./    点斜杠不能漏  cbgame02是项目名 com.yezibao.game是项目前缀/包名 
上面顺利执行完后在cocos2d-x-2.2.0下的projects文件夹里就有了你刚刚所创建的跨平台项目了
然后打开projects文件夹中的ios内的.xcodeproj工程文件,就可以开启你刚才创建的项目了
 
再接下来就是编译输出成ipa了,因为笔者没有证书,所以只能歪门邪道了
当然ipad要越狱,这个就不说了
第一步,创建假证书
打开Finder,左侧边栏里找到Applications,从中找到Utilities工具夹,如图1所示。打开该Utilities工具夹并找到Keychain Access(钥匙串访问),并将其打开,或是直接在Finder中输入Keychain Access来搜索。然后在菜单栏里Keychain Access->Certificate Assistant->Create ACertificate…设置如图2所示,此处必须把Name改为iPhone Developer,Certificate类型设置为Code Signing,并将Let me override defaults选中,以后的步骤就不需要做任何的设置,全部默认或空着即可。
这里的步骤可以参考文章:http://blog.csdn.net/fightingbull/article/details/8059651
 
二、修改Xcode的配置文件
1.请先将Xcode按Command+Q完全关闭。
2.修改配置文件:
按照该路径找到SDKSettings.plist然后进行编辑:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/SDKSettings.plist
将以下两段中的YES改为NO
<key>CODE_SIGNING_REQUIRED</key>
<string>YES</string>

<key>ENTITLEMENTS_REQUIRED</key>
<string>YES</string>
3.下面修改另外一个文件:
按照该路径找到Info.plist然后进行编辑:
Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
将Info.plist中全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,他们分别在DefaultProperties分支下、OverrideProperties分支下和RuntimeRequirements分支下。
4.添加文件:
连接互联网后在终端执行:
mkdir /Applications/Xcode.app/Contents/Developer/iphoneentitlements
cd /Applications/Xcode.app/Contents/Developer/iphoneentitlements
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
 
如果没有联网,可以在/Applications/Xcode.app/Contents/Developer文件夹下创建一个iphoneentitlements文件夹,然后在该文件夹下手动创建一个gen_entitlements.py文件,并授予其执行权限(命令:sudo),这个文件的内容为:
#!/usr/bin/env python
import sys
import struct
if len(sys.argv) != 3:
print "Usage: %s appnamedest_file.xcent" % sys.argv[0]
sys.exit(-1)
APPNAME = sys.argv[1]
DEST = sys.argv[2]
if not DEST.endswith('.xml') and notDEST.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()
 
 
三、修改工程设置
        特别注意:本阶段之前的修改配置文件、准备脚本等,只需要做一次。但本阶段的操作,对每个需要真机调试的工程都要做一遍。
        这个步骤的主要作用是支持真机调试,如果不做这个步骤,仍然可以通过步骤5来生成ipa在真机上运行,但是无法使用Xcode内置的调试器对在真机上运行的程序进行单步跟踪。如果您的程序在点击Run真机调试时秒退,请检查此步骤是否正确完成。
1.禁用Xcode自动的签名操作
将工程配置中Code Signing选项中的Debug和Release设为Don't Code Sign。讲其中的Any iOS SDK都设置为iPhone Developer
[不然5.1的sdk会抱错,6.1的sdk可以全部设为Don’t Code Sign]
 
2.添加自定义的生成后脚本
在Build Phases中添加一个Phase,右下角的Add Build Phase,然后单击Add Run Script,输入以下脚本:
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
 
关于上面这部分可以参看文章:http://bbs.weiphone.com/read-htm-tid-7056725.html
 
至此配置全部完成,下面就可以插上iPhone,重新选择生成目标来测试一下在线调试了!如果是第一次使用该设备调试,请先在Organizer中将设备切换为开发模式(iPhone右部的小绿点亮)。
 
四、生成IPA文件
        如果我的程序调试好了,怎么才能发给别人用呢?正常情况下ipa文件是从Xcode的Organizer中输出的,但是我们没有证书,这样输出会产生错误。我们只能用个小技巧来完成这个操作了。
        先将代码生成为Release目标,然后打开工程的输出文件夹,通常情况下这个目录是/Users/用户名/Library/Developer/Xcode/DerivedData/以工程名打头的文件夹/Build/Products/Release-iphoneos这个目录下有个xxx.app的文件,就是生成的程序了。把这个xxx.app拖到iTunes中,它会出现在应用程序那个列表中,然后再把它从iTunes的那个列表中拖出来(比如拖到桌面),它就这样变成xxx.ipa了!把这个.ipa发给别人,大家就可以跟您一起分享这个程序了。
 
 
 
上面的地址中的一些解决方案都不能很完美的解决我需要的开发编译调试环境,所以不能通篇全看,按上面的指示,部分参阅即可,如果通篇照抄,可能会遇到以下的错误:
 
XCode 编译出现错误如下:
[BEROR]CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 5.0'
 
解决方法如下:
  
选择工程->Build Settings -> Code Signing -> Code Signing Identity -> Debug -> Any ios SDK 将选项改为:iPhone Developer
 
 
 
 
要实现真机调试,ios设备越狱之后出现的问题就比较少,但是实际调试的时候一般还是会出现一些问题,个人在真机调试的时候出现了如下问题:
Error  Starting executable:
          error launching remote program failed to get the task for process 715
 
这个问题的解决方案如下(本人使用的是Xcode4.2):
     1.Select File->New File->ios->resources->property List         name the file "Entitlements.plist‘  -->Creat
     2.点击这个Entitlements.plist,在右侧的空白处右键选择Add Row  自己新建一个"Can be debugged"设置为Boolen 然后选择YES
 
   3.在build setting当中找到Code Singing Entitlements 将那项值改为刚刚新建的Entitlements.plist
 
 
 
如果在CCImage.mm文件中遇到NSLineBreakByWordWrapping未定义错误
  
  是因为不同的sdk版本造成的,把[str drawInRect:CGRectMake(textOriginX, textOrigingY, textWidth, textHeight) withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:(NSTextAlignment)align];
  替换成
  
 
  
        [str drawInRect:CGRectMake(textOriginX, textOrigingY, textWidth, textHeight) withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:(UITextAlignment)align];

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-218655-1-1.html 上篇帖子: Mac OS X: launchd plist在线编辑器 下篇帖子: Mac 可设置环境变量的位置、查看和添加PATH环境变量
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表