• Unity3D研究院之IOS全自动打包生成ipa


    接着上一篇文章, 自动生成framework,这篇文章我把shell自动化打包ipa整理了一下,希望大家喜欢,嘿嘿。。 建议大家先看一下上一篇文章。 http://www.xuanyusong.com/archives/2720

    首先我们要先搞清楚nity全自动打包的重要步骤。

    1.自动生成xcode工程。

    2.自动生成.ipa和dsym文件。

    3.上传appstore(本篇略)

    首先我们在做渠道包时,一般每个渠道都有自己一些特殊的需求,比如 游戏名子 、游戏图标、SDK、等等。那么我在在做自动化打包的工具时,需要把渠道作为参数传入shell脚本中,如下图所示开始运行我的shell脚本,这里只接收一个参数,其实就是告诉脚本你要打什么渠道的包,这里我写91。

    Unity3D研究院之IOS全自动打包生成ipa(六十八) - 雨松MOMO程序研究院 - 1

    脚本比较简单,原理就是先生成xcode工程,然后接着生成.ipa 。 代码中的$1 就表示我传入的第一个参数 91字符串。

    UNITY_PATH :就是unity安装的路径, 如果你不改Unity的名子Mac上就会是这个路径。

    PEOJECT_PATH:这个是你游戏工程的路径。。就是 Assets/上一级的哪个路径。。

    BUILD_IOS_PATH:这个是我打包生成ipa的一个脚本,后面我会细说我目前把这个脚本放在我的游戏工程里, 所以他是一个相对路径。

    XCODE_PATH:这个是生成xcode工程的路径,因为可能有很多渠道,所以我就传入的91字符串作为文件名。

    脚本执行的过程,无需打开unity工程,它会自动打开unity工程,自动构建xcode工程,自动关闭unity工程,然后自动打包。。如下图所示,看到这样的字样你的IPA就生成完毕了。

    Unity3D研究院之IOS全自动打包生成ipa(六十八) - 雨松MOMO程序研究院 - 2

    然后你的.ipa和dsym文件就安安静静的放在build文件夹下,项目根目录/91/build文件夹下面,dsym文件也放在下面,如果你的渠道包比较多的话,你可以把它们统一移动到一个文件夹下面。还有dsym一定要打出来,因为只有dsym 和 .crash文件才能解析出 c#代码中哪个调用方法出的错, 以后有时间了我会整理以下dsym和.crash文件怎么解析出c#错误的堆栈来。。

    Unity3D研究院之IOS全自动打包生成ipa(六十八) - 雨松MOMO程序研究院 - 3

    ipa是出来了, 不过我们还是要看看它到底是怎么出来了。。在shell脚本中我调用了

     它的意思就是自动打开unity,然后打开你的游戏工程,然后调用ProjectBuild类中的BuildForIPhone的这个方法,然后关闭unity。ProjectBuild类是我自己写的,大家也可以定制自己的类 和方法,static的就可以。

    这里有个比较重要的参数 project-$1 这个参数就是外面我们传进来的 91 字符串。 这个字符串很重要,因为工程里面构建的时候需要根据不同的渠道打包不同的资源 包名 文件名 等等。我们在看看 ProjectBuild.cs

     你可以在打包之前 去修改projectSetting的参数, 比如 包名 游戏名 icon 等等 http://docs.unity3d.com/Manual/class-PlayerSettings.html

    OK shell脚本中就直接开始构建你的xcode工程。还记得上一篇文章我提到的XUPorter吗?它的原理就是当Xcode打完完毕后开始动态的编辑 framework plist oc代码。。 我们在回到XUPorter XCodePostProcess.cs这个类里面, 如果没看过我上一篇文章的 我建议看一下。。

    下面的代码 上一篇文章我已经介绍的很清楚了, 这里就不赘述了。主要看 54行 – 64行之间的代码。

     OK 到这一步我们的xcode工程已经做完。。 然后Shell 脚本开始 生成.ipa文件。

    #开始生成ipa#
    $BUILD_IOS_PATH $PROJECT_PATH/$1 $1

    上面代码的意思 就是 去调用我工程里面的buildios.sh文件。 需要传入两个参数 一个是 xcode工程的地址, 一个是 ipa的名子。。。 这个脚本我参考了 http://blog.csdn.net/ccf0703/article/details/7999112 这篇文章, 但是 最后生成ipa我没能成功, 自己又修改了一点。。

     OK,到这一步我们的教程就完毕了。。因为工程中涉及到我项目用的证书啊什么的,所以我不能给出来。 所以我把你需要修改的地方列出来。

    1.在关闭unity的状态下 运行 build脚本。 直接把build.sh 拖入终端里  然后空格  加一个你定义的参数  下图是我测试工程的目录结构。

    Unity3D研究院之IOS全自动打包生成ipa(六十八) - 雨松MOMO程序研究院 - 4

    2.在XCodePostProcess.cs 里面 把证书 还有包名 修改成你的。。

    3.你的shell脚本需要给它权限  代码很简单  chmod +x build

    4.我的工程下载地址:http://pan.baidu.com/s/1gd242dl

    如果我说的上面三点你都修改完毕, 那么这个代码必然会帮你自动生成.ipa

    本篇文章我主要给出一个大概的思路,大家可以在我的思路下去拓展,比如 一键打包多个渠道、 打包完毕后自动上传svn等操作。。

    有问题 给我留言吧, 嘿嘿!!!

  • 相关阅读:
    SQL语句实例学习汇总
    sql语句一些实用技巧for oracle
    无限级递归生成HTML示例及ListBox,DropDownList等无限树
    另类Sql语句直接导出表数据到Execl
    powerdesigner中sql脚本小写转大写,去双引号
    C#中利用jQuery获取Json值示例,Ajax方式。
    利用jquery解决下拉菜单被Div遮挡问题
    获取Textarea 元素当前的光标位置及document.selection.createRange()资料
    oracle中一些常用函数
    IE6 动态创建 iframe 无法显示的 bug,万恶的IE6
  • 原文地址:https://www.cnblogs.com/123ing/p/3819624.html
Copyright © 2020-2023  润新知