zoukankan      html  css  js  c++  java
  • IBM X系列手提 成功安装MAC OS 并实现IPhone真机调试 教程


    前言

    我和同事奋斗了2个星期,终于能在自己的笔记本上成功安装了苹果操作系统,并实现了真机调试。剩下了99$! 

    过程简直是心酸,艰苦。苹果一个文件都几个G,下错了、版本错了就全部重来,甚至一个步骤错了,也会卡死几天,这篇文章就详细的介绍整个安装过程。

    安装前检测

    首先要查看自己的机器能不能安装虚拟机,下载个 securable.exe, 检测下。

    其次要看看硬件是否够强,我的IBM笔记本是x201i, i3芯片,4G内存,跑起来非常流畅,和macbook一样速度。 

    安装雪豹虚拟机

    下载 VMware-workstation-full-7.1.5-491717.exe

    下载 darwin.iso

    下载 LeoSnow.DMG

    下载 VMWare 注册机 

    下载 MacOSXUpdCombo10.6.8.dmg 

    安装VMWare还是很简单的,一步步next就行了,最后用注册机注册了就完成。

    运行VMWare, 新建一个虚拟机

     

    接下来弹出框,选择Typical如图:

     

    installer disc image file中选择,引导镜像文件路径如图: 

     

     选择otherFreeBSD 64bit如图

     

     输入虚拟机名称和安装路径如图;

     

      输入系统占用大小如图这里是40G

     

     最后一步单击完成就行了

    这一步很重要,打开刚才新建虚拟机的安装目录,找到后缀为. vmx的文件用记事本打开,然后找到guestOS =这一行,把这行改成guestOS = "darwin10"。保存关闭。

    启动虚拟机,单击power on this virtual machine如图

     

    当安装界面提示:please insert the mac os x dvd时,设置虚拟机的镜像文件路径,如图 

     

     接下来

     

     单击ok,接下来

     

     完成。接下来就按章系统的提示进行安装

      安装mac os补丁(如果没有安装补丁可能导致开发环境安装不了)

     下载补丁(MacOSXUpdCombo10.6.8.dmg)拷贝到虚拟机中(怎么拷贝下面会介绍)此补丁是把虚拟机升级到10.6.8版本

    双击打开MDG文件,运行pkg文件如图  

     


    安装XCODE和IPhone的SDK

    下载 xcode_3.2.5_and_ios_sdk_4.2_final.dmg

     网上下载文件,把文件放到u盘或者移动硬盘之类的设备

    通过u盘把文件移动到mac虚拟机上,注意插进u盘后虚拟机不能识别u盘需要做一下操作

     VMWare右下角有个按钮如图

     

     1、 单击Connect虚拟机就能识别到u盘了,u盘将会在虚拟机的桌面右上角显示。

    找文件双击打开

     

     打开xcode and ios sdk直接按照提示安装就行了

      

    破解XCode 

     1.       创建证书

     

    进去后,选择钥匙串访问 ,在进入目录:

     

     

     2.       破解XCode

     进入终端:

     

     修改SDKSettings.plist

    先备份原文件:
    cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/
    sudo cp SDKSettings.plist SDKSettings.plist.orig

    进行编辑:
    sudo vi SDKSettings.plist

    将以下两段中的YES改为NO
    <key>CODE_SIGNING_REQUIRED</key>
    <string>YES</string>
    ...
    <key>ENTITLEMENTS_REQUIRED</key>
    <string>YES</string>

    修改Info.plist

    同样先备份原文件:
    cd /Developer/Platforms/iPhoneOS.platform/
    sudo cp Info.plist Info.plist.orig

     

    进行编辑:
    sudo vi Info.plist

     

    将全部的XCiPhoneOSCodeSignContext 修改成 XCCodeSignContext,一共有 3 处。

    (3)在桌面上新建并编辑名为script的脚本:
    cd ~/Desktop
    vi script

    输入以下内容:(点击“i”进入编辑模式)
    #!/bin/bash
    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "xc3x26x00x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    保存并退出(点击Esc,输入:wq)
    授予这个脚本执行权限并执行它
    chmod 777 script
    ./script

    运行成功会输出类似结果:
    223+1 records in
    223+1 records out
    111648 bytes transferred in 0.002678 secs (41692099 bytes/sec)

    (4)生成脚本
    执行命令:
    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    如果上面的代码运行有问题,也可以在/Developer目录下新建一个entitlements.py文件,并把下面的代码复制到该文件中,最后赋予777权限:

    #!/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()

     3.       项目配置

     一定要安装xcode 4.2,新建一个项目 helloworld3

     

     

     

     

     2.脚本设置,将下面的代码添加到Phase中:

    export
    CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/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


     

     

     

     完成

     后续

     不要看本文短短几行,只要走错一步,都会浪费一天时间,我们可是花了2个星期,才成功进入果粉时代。

     如果有朋友看本文还是觉得模糊,可以加入我们的讨论群: 192700436

     如果有需要文中涉及到的所有文件,一共13个G,可以联系我们 pixysoft.taobao.com,我们发个U盘给你,188元。还有iPHone入门教材的视频,保证1天能够成功开发个QQ Iphone版本的界面的软件出来。

    参考文献:

     http://www.iinterest.net/2011/10/03/xcode4-port-program-to-idevice-without-idp/

  • 相关阅读:
    C++11的enum class & enum struct和enum
    c++11 中成员变量初始化的顺序
    c++11 lambda
    Java-NIO
    .Net之路(十五)图解LoadRunner压力測试
    activiti入门3排他网关,并行网管,包括网关,事件网关
    [移动端]移动端上遇到的各种坑与相对解决方式
    《软件调试艺术》读后感四
    [C++设计模式] command 命令模式
    iOS学习笔记23-音效与音乐
  • 原文地址:https://www.cnblogs.com/zc22/p/2289483.html
Copyright © 2011-2022 走看看