zoukankan      html  css  js  c++  java
  • 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 怎么运行 上文有讲到)

  • 相关阅读:
    深入解读kubernetes网络基本原理
    Go!Go!Go!设计模式-组合设计模式
    Go!Go!Go!设计模式-创建型模式(简单工厂,工厂方法,抽象工厂)
    Linux内核之磁盘和分区
    Docker容器网络基础
    chart仓库之创建-入库-使用(helm,helm-push,chartmuseum)
    Go语言完整解析Go!Go!Go!(一)数据类型 之 Channel & Goroutine
    k8s爬坑集锦[网络问题]-服务无法访问
    数字证书的原理与应用&爬坑
    ingress的用法与原理
  • 原文地址:https://www.cnblogs.com/kingbo/p/3709942.html
Copyright © 2011-2022 走看看