IOS 使用xcodebuild xrun 编译 打包app 小结分享

肖XX 发布于 2016/02/24 21:47
阅读 1K+
收藏 0
iOS

       我做了差不多10年的开发,从以前学vfp,c,vb,java,然后玩了3个月c#就不自量力地去应聘.net程序员了,后面怀着拼一拼的心态转去玩symbian,又搞了几年的IOS,这两年又转行做项目管理,再到今天成了部门的负责人。最后,发现还是写代码有意思多了,自由自在,毫无功利性去研究任意的方向。

       做了这么久,好像没有做过什么分享,今天发一篇来骗骗人气好了。ios 自动化编译打包的网上代码多得是,我在这里总结一下:

       

       1,准备好打包用的mobileprovision 以及对应的.p12证书;

       2,修改项目工程文件后缀名为.xcodeproj里面的project.pbxproj,把里面所有节点为

XCBuildConfiguration的PRODUCT_BUNDLE_IDENTIFIER修改你指定的bundle identifier。如下图:

这步骤可重要呢!很多人换了不同的bundle identifier后,编译不通过了,都是这个原因。至于project.pbxproj这个工程文件,以后有时间我在解析其原理。

      3,使用命令导入.p12 以及.mobileprovision 文件:

           security unlock-keychain

           security import

      4,使用终端清理项目:

           xcodebuild  clean

      5,使用编译命令xcodebuild:

           xcodebuild  -project 或者是xcodebuild -workspace

      6,最后就是打包命令了:

            xcrun -sdk iphoneos PackageApplication

     说多没益,做个示例吧:

     假设我已经有以下信息:

     我的机器用户名为Fanty;

    bundle identifier 为com.test 的/Users/project/a.mobileprovision 以及/Users/project/a.p12,.p12密码为123456;

    我的keychain 密码为:654321。

    一个项目工程目录是/User/project/a.xcworkspace(考虑到现在多数的开发者都是多文档项目那种,尤其是整合了codpods,所以就用xcworkspace做示例),然后要编译的工程的target名为: myTarget。

     最后运行如下代码,生成一个ipa:/Users/project/a.ipa

    代码如下:

     ##修改工程的bundleidentifier,这步骤先不讨论如何代码实现了,以后有机会再说。 

     ##清空项目工程

     xcodebuild -workspace "/User/project/a.xcworkspace"-configuration Release -scheme "myTarget" clean

     ##导入.p12 以及.mobildprovision

     #安装p12

     #解锁,否则回弹框等待输入密码

     security unlock-keychain -p '654321' /Users/Fanty/Library/Keychains/login.keychain

    #导入证书到keychain

    security import '/Users/project/a.p12' -k login.keychain -P '123456' -T /usr/bin/codesign

    #安装mobileprovision证书

    uuid=`grep UUID -A1 -a '/Users/project/a.mobileprovision' | grep -io "[-A-Z0-9]\{36\}"`

    output=~/Library/MobileDevice/Provisioning\ Profiles/$uuid.mobileprovision

    dir=~/Library/MobileDevice/Provisioning\ Profiles

   

    if [ ! -d "$dir" ]; then

       cd ~/Library/MobileDevice/

       mkdir -p "$dir"

     fi

     cp  '/Users/project/a.mobileprovision"$output"

     ##开始编译了,先获取.mobileprovision 的UUID

     uuid=`grep UUID -A1 -a "/Users/project/a.mobileprovision" | grep -io "[-A-Z0-9]\{36\}"`

     ##编译

     xcodebuild -workspace '/Users/project/a.xcworkspace' -scheme 'myTarget' ONLY_ACTIVE_ARCH=NO -sdk iphoneos build VALID_ARCHS="armv7 armv7s" PROVISIONING_PROFILE=$uuid CONFIGURATION_BUILD_DIR="/Users/project/a.app"

      ##打包

     xcrun -sdk iphoneos PackageApplication -v "/Users/project/a.app" -o "/Users/project/a.ipa" PROVISIONING_PROFILE=$uuid

     当然,除了这个方法,还有可以编译成.xcarchive,然后再生成.ipa 的方法,这些不说了。反正比较灵活的的还是xcrun的方法。

     



      

加载中
0
滔哥
滔哥

好复杂的样子....

返回顶部
顶部