zoukankan      html  css  js  c++  java
  • IPA文件的自动化生成和无线分发

    1. IPA的无线分发

      iOS应用开发测试过程中,通过无线网络进行IPA包的分发将是非常便捷的,于是也就有了类似testflightapp之类的平台。对于这一功能,我们也可以自己实现,只需要一个简单的http server,并部署三个文件:

      index.htm
      AppName.plist
      AppName.ipa

    AppName.plist 和 AppName.ipa 文件的生成方式会在后面讲述,而 index.htm的内容如下:

    <a href="itms-services://?action=download-manifest&url=http://192.168.1.5/AppName/AppName.plist">Click to Install AppName</a>

    可以猜测,该index.htm页面的功能是下载plist文件,并进行触发ipa文件的下载和安装。

    注:

      iOS Developer Program 类账号可注册的测试设备上限为100台,只有注册了其UDID的设备才可以安装该账号开发的App;

      iOS developer Enterprise Program 类账号则对设备数量不做限制,相对iOS Developer Program来讲,企业账号支持“in-house”应用,但不能提交应用到AppStore。该账号可创建"in-house"类型的Provisioning Profile,使用该Profile的App则可以安装到任何设备上,无须注册设备的UDID。

    2. IPA文件的自动化生成

      手动生成(Xcode 5):

      点击 Xcode->Product->Archive 菜单项,会打开 Organizer-Archives 窗口,点击 Distribute...,然后选择 Save for Enterprise or Ad Hoc Deployment,之后要选择相应的Provisioning Profile文件,点击 Export 按钮会弹出保存ipa文件的窗口,勾选窗体下方的 Save for Enterprise Distribution 选项

    其中"Application URL"为IPA文件的链接地址,如 http://192.168.1.5/AppName/AppName.ipa,然后填写Title后,其它内容都可不填。这样,保存后将会生成AppName.ipa 和 AppName.plist 两个文件。

      自动生成:

     上面讲到的生成ipa包的过程,需要点击、选择、填写等多个步骤。这里利用Xcode提供的命令行工具可以自动化完成,其关键命令为

    xcodebuild -exportArchive -exportFormat IPA -archivePath AppName.xcarchive -exportPath AppName.ipa -exportProvisioningProfile 'MyApp Distribution Profile'
    

    意为,使用provisionging profile 'MyApp Distribution Profile' 将归档文件 AppName.xcarchive 导出为IPA文件 AppName.ipa


    其中 AppName.xcarvhive 文件在使用上面提到的Xcode->Product->Archive菜单项即可生成(这里要讲到的自动化生成,即在点击该菜单项后自动化生成IPA文件),此时生成的archive文件名都遵循按Xcode自定的命名规则,并统一生成到一个既定目录下(~/Library/Developer/Xcode/Archives)

    在Archive Scheme中添加Post-actions

      在Product > Scheme > Edit Scheme 的 Archive 项中添加Post-actions,并在其Run Script中添加如下脚本

    archive=`bash ~/tools/newest_archive.sh`
    ipa_path=~/ipa/AppName.ipa
    
    rm "${ipa_path}"
    xcodebuild -exportArchive -exportFormat IPA -archivePath "${archive}" -exportPath "${ipa_path}" -exportProvisioningProfile "MyApp Distribution Profile"

    该脚本将在Archive菜单项的操作完成后自动执行。

    获取最新的archive归档文件

      上面的shell脚本中的 newest_archive.sh 是一个简单的bash脚本,用以获取最新的archive文件,即刚刚由Archive菜单项生成的,其内容如下

    //! newest_archive.sh
    newest=
    backIFS=$IFS
    IFS=$(echo -en '
    ')
    for f in `find ~/Library/Developer/Xcode/Archives -name *.xcarchive`
    do
            if [ -z $newest ]
            then
                    newest=$f
            elif [ $f -nt $newest ]
            then
                    newest=$f
            fi
    done
    echo "${f}"
    FS=$backIFS
    

    如此,在每次点击Archive菜单项时,都会将最新生成的archive归档文件自动导出为AppName.ipa文件,并将其存到~/ipa目录之下。

    注:

      1. 也许Xcode有提供更方便的访问相应archive文件的方法,如有请指教

      2. plist文件手工生成一次即可,所以也就没有plist文件的自动化生成...

    参考资料:

    1. Wireless AdHoc Distribution http://gknops.github.io/adHocGenerate/

    2. 颁发用于iOS设备的企业级应用程序 http://help.apple.com/iosdeployment-apps/mac/1.1/?lang=zh-cn

    3. Xcode命令行工具之xcodebuild说明 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html

  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1036. Boys vs Girls (25)
    1035 Password (20)
    1027 Colors in Mars (20)
    1009. Product of Polynomials (25)
    1006. Sign In and Sign Out
    1005 Spell It Right (20)
    1046 Shortest Distance (20)
    ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
    IIS7.0上传文件限制的解决方法
  • 原文地址:https://www.cnblogs.com/cqgreen/p/3554870.html
Copyright © 2011-2022 走看看