赞
踩
首先给一个官方的文档:Command line arguments
具体的参数请去官网文档查看
这里直接来Python代码,里面有一些绝对路径,要麻烦自己替换成自己打包机子的路径
_unityPath:需要打包的unity版本的路径
_projectPath:需要打包的Unity工程
PlatformBuild.BuildIOS:Editor中的打包代码
下面代码是传入版本号和构建号来打包
#! /usr/bin/python3 # -*- coding: utf-8 -*- import os import argparse def exportXcode(version, build): _unityPath = "/Applications/Unity/Hub/Editor/2019.3.15f1/Unity.app/Contents/MacOS/Unity" _projectPath = "../../../../BountyHunter_Unity" _platform = "iOS" _exeStr = _unityPath + " -quit -batchmode -projectPath " + _projectPath + " -executeMethod PlatformBuild.BuildIOS " + version + " " + build + " -buildTarget " + _platform + " -logFile /Users/dengly/Documents/Code.indie/BountyHunter/client/BountyHunter_Unity/projects/ios/log.txt" print("begin build iOS") os.system(_exeStr); print("end build iOS") if __name__=='__main__': parser = argparse.ArgumentParser(description='## 自动化打包工具##', add_help=True) parser.add_argument('-v', '--version', dest='v', action='store', required=True, help='发布包的版本号') parser.add_argument('-b', '--build', dest='b', action='store', required=True, help='发布包的build号') args = parser.parse_args() exportXcode(args.v, args.b)
下面是打包Android和iOS的打包代码,keystore和ApplicationIdentifier的设置请根据自己的项目来,version和build是上面Python脚本中传入的version和build
PlatformBuild.BuildIOS代码如下:
using UnityEditor; /// <summary> /// 这里是项目用命令行打包调用的代码 /// </summary> public class PlatformBuild { public static void BuildAndroid() { PlayerSettings.Android.keystoreName = ""; PlayerSettings.Android.keystorePass = ""; PlayerSettings.Android.keyaliasName = ""; PlayerSettings.Android.keyaliasPass = ""; string[] strs = System.Environment.GetCommandLineArgs(); string version = strs[7].ToString(); string build = strs[8].ToString(); PlayerSettings.bundleVersion = version; PlayerSettings.iOS.buildNumber = build; PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, ""); BuildUnityPlayer_Android(); } public static void BuildIOS() { string[] strs = System.Environment.GetCommandLineArgs(); string version = strs[7].ToString(); string build = strs[8].ToString(); PlayerSettings.bundleVersion = version; PlayerSettings.iOS.buildNumber = build; PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.iOS, ""); BuildUnityPlayer_IOS(); } public static void BuildUnityPlayer_Android() { Postprocessor.importHePostProcess = true; BuildAndroidPlayer(); } public static void BuildUnityPlayer_IOS() { Postprocessor.importHePostProcess = true; BuildIOSPlayer(); } private static void BuildIOSPlayer() { #if UNITY_EDITOR_OSX BuildTarget buildTarget = BuildTarget.iOS; string projectPath = FileUtility.PathCombine(GetProjectPath(buildTarget), PlayerSettings.productName); BuildPipeline.BuildPlayer(EditorUtils.GetBuildScenes().ToArray(), projectPath, BuildTarget.iOS, EditorUtils.GetBuildOptions()); UnityEngine.Debug.Log(" ios BuildPlayer"); #endif } private static void BuildAndroidPlayer() { BuildTarget buildTarget = BuildTarget.Android; string projectPath = GetProjectPath(buildTarget); BuildPipeline.BuildPlayer(EditorUtils.GetBuildScenes().ToArray(), projectPath, BuildTarget.Android, EditorUtils.GetBuildOptions()); UnityEngine.Debug.Log(" android BuildPlayer"); } }
BuildIOSPlayer和BuildAndroidPlayer就是具体的打包代码了,这个在其他地方可以很方便的获取怎么做的,这里就不把全部代码贴出来了,上面部分我相信你已经知道怎么处理的了。
提示:可千万别直接贴代码哦,因为PlatformBuild的代码跟项目相关,要自己设置的哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。