• XCode 自动化打包总结


       最近一个礼拜折腾xcode 中ipa 自动化打包,对我来说也说是磕磕碰碰。毕竟对mac下的命令行模式完全不熟悉。而且我们的项目是基于cordova的一个项目。 之前我自己对cordova 项目的命令行模式也是不了解。

       于是乎就开始了漫长的尝试自己做打包过程。 可以说按照网上的一些资料来阅读,然后自己去实现。

       一开始的资料便是http://www.infoq.com/cn/articles/build-ios-continuous-integration-platform-part1

    自动话集成的概念。 感觉自己完全走偏了。 自动化打包和自动化集成? 是同一个感念???

        但不管怎么样,也有不少的收获,从中也我了解到 可以通过xcodebuild 命令来编译生成app,也了解到其实在xcode工具中点击运行时,最终也会执行xcodebuild 命令行的。但是在我们装到手机中的格式是ipa 文件,又怎样来进行处理生成呢?

       同样的在不断的搜索中也找到了有xcrun 这个命令。于是又开始学习xcodebuild 以及xcrun相关的命令,并用他们进行测试。当然这些都是在 terminal(终端)下进行的。发现这些都可以完成,并开始有了点小激动。也一直有了一种思想。自动化搞定没什么问题。小菜一碟............. 

       但一开始我在运行xcodebuild  我们的项目时,出现了一问题。用xcodebuild -target netcall一直提示:"CDVViewcontrol.h" file not file,而手动去生成完全可以生成app。总以为这个问题应该是个小问题,网上随便找找就是一大把的吧....结果悲剧了,一晃就是三四天过去了。。。。。还是找不到解决方案。。。。尼玛 找不到啊 有木有!

        很快一周过去了,也没有相关的同事可以帮忙。只有自己去解决了,怎么办呢?  后来我换了一个思路想:既然cordova 有创建平台的语句,说不定生成app的命令也有啊。于是乎,带着这个疑问开始研究cordova本身的命令行

    相关资料如下:http://cordova.apache.org/docs/en/3.4.0/guide_cli_index.md.html#The%20Command-Line%20Interface。结果是可喜的,里面果然有,但是我们这里从来没有人使用过。开始尝试,终于发现还是可以实现的。大喜。最终生成的IPA 语句很简单,如下:

    #!/bin/sh

    # AutoCompileScript.sh
    # SQLiteDemo
    #
    # Created by tom on 5/5/14.
    #

    #指定 phonegap 存放路径?

    projectPath="/Users/tom/Desktop/netcallmobile"
    # cd 到指定的目录,熟悉mac 命令行的朋友完全不用解释
    cd ${projectPath}

    #use cordova compile and create app file
    cordova prepare ios
    cordova compile ios

    #use xcrun to create ipa file
    #相对于根目录cordova 项目生成的app 相对路径 (包含xxx.app)
    appDir="platforms/ios/build/device/xxx.app"
    #根据跟目录和相对路径合成  绝对路径
    appPath=${projectPath}/${appDir}
    #保存IPA 到指定的目录中(这里含有xxx.ipa)
    ipaPath="/Users/tom/Documents/ipa/netcall.ipa"
    #用xcrun命令行 将app生成ipa文件
    xcrun -sdk iphoneos PackageApplication -v ${appPath} -o ${ipaPath}

       最后保存在mac 下的格式为Command 后缀,这样就实现不要每次都要打开xcode然后点击build 或者achive 进行生成了(这里的shellscript 怎么运行 上文有讲到)

  • 相关阅读:
    网络时钟同步SOCKET代码
    NTP时间同步之同步时钟要领
    3分钟 Markdown 快速入门(超详细)(Day_33)
    如何在idea中将项目生成API文档(超详细)(Day_32)
    多条件分页 (Day_31)
    常见判断错误 (Day_30)
    HTML 标签隐藏占用空间与不占用空间(Day_29)
    EasyUI_使用datagrid分页 (Day_28)
    (xxx) is not defined at HTMLInputElement.onblur(Day_27)
    EasyUI系列—点击按钮加载tabs_day26
  • 原文地址:https://www.cnblogs.com/kingbo/p/3709942.html
Copyright © 2020-2023  润新知