mac xcode自动化打包unity

代码放下,供研究,后面给出一些坑

#!/bin/sh
#UNITY程序的路径#
UNITY_PATH=/Users/d11/Documents/Projects/unity2019/build/MacEditor/Unity.app/Contents/MacOS/Unity

#游戏程序路径#
#test:::PROJECT_PATH="/Users/d11/Documents/TestPro"
PROJECT_PATH="/Users/d11/Documents/unlimited/project"

#IOS打包脚本路径#
BUILD_IOS_PATH=$PROJECT_PATH/../build_ipa.sh

#生成的Xcode工程路径#
XCODE_PATH=${PROJECT_PATH}/XcodeProject

#将unity导出成xcode工程#
#-logFile D:\Editor.log" 
$UNITY_PATH -batchmode -projectPath $PROJECT_PATH -executeMethod ProjectBuild.BuildForIOS -quit

echo "XCODE工程生成完毕"

#开始生成ipa#
$BUILD_IOS_PATH $XCODE_PATH

echo "ipa生成完毕"
# #!/bin/bash
#参数判断
if [ ! -d $1 ];then
	echo "The first param is not a dictionary."
    exit
fi
#工程路径
PROJECT_PATH=$1

#导出路径
ARCHIVE_PATH=${PROJECT_PATH}/build/xxx.xcarchive

#plist路径
exportOptionsPlist_PATH=${PROJECT_PATH}/../Assets/Plugin/iOS/Info.plist

#输出ipa的文件路径
IPA_PATH=${PROJECT_PATH}/build


#清理#
xcodebuild  clean

#编译工程
cd $PROJECT_PATH

xcodebuild archive -project Unity-iPhone.xcodeproj -scheme Unity-iPhone -archivePath ${ARCHIVE_PATH} -sdk iphoneos11.0 CONFIGURATION="Debug" ENABLE_BITCODE="NO" CODE_SIGN_IDENTITY="iPhone Developer: xxx (xxx)" PROVISIONING_PROFILE="xxx-xxx-xxx-xxx-xxx"

xcodebuild -exportArchive -archivePath ${ARCHIVE_PATH} -exportOptionsPlist ${exportOptionsPlist_PATH} -exportPath $IPA_PATH

#生产api
#-sdk :可以使用如下命令查看所支持的SDK.  xcodebuild -showsdks
  • 首先unity路径,是在Unity.app/Contents/MacOS/Unity下,而不是app
  • 程序路径可能找不到,我放在的是/Users/Documents/ 前面有/
  • 使用变量的时候需要加$符号,如果有多层记得用{}
  • 自动签名时CODE_SIGN_IDENTITY与PROVISIONING_PROFILE要对应,PROVISIONING_PROFILE记得在/Users/d11/Library/MobileDevice/Provisioning Profiles下,不要加后缀.mobileprovision
  • plist可以在archive以后,拷贝一下,加上对应的签名如下
    <key>provisioningProfiles</key>
    <dict>
        <key>com.xxx.xxx</key>
        <string>xxx-xxx-xx-xx-xxxxxx</string>
    </dict>
    <key>signingCertificate</key>
    <string>iPhone Developer: xxx (xxxx)</string>
	<key>ApplicationProperties</key>
  • #plist路径 exportOptionsPlist_PATH=${PROJECT_PATH}/../Assets/Plugin/iOS/Info.plist 这个可以自己更换
  • unity打包记得先switch,配置参数

-executeMethod ProjectBuild.BuildForIOS这个需要在Assets下的Editor下新建一个.cs:

using System.Collections;
using System.IO;
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
using System;
 
class ProjectBuild : Editor{
 
	//在这里找出你当前工程所有的场景文件,假设你只想把部分的scene文件打包 那么这里可以写你的条件判断 总之返回一个字符串数组。
	static string[] GetBuildScenes()
	{
		List<string> names = new List<string>();
 
		foreach(EditorBuildSettingsScene e in EditorBuildSettings.scenes)
		{
			if(e==null)
				continue;
			if(e.enabled)
				names.Add(e.path);
		}
		return names.ToArray();
	}
 
    //得到项目的名称
	public static string projectName
	{
		get
		{ 
			//在这里分析shell传入的参数, 还记得上面我们说的哪个 project-$1 这个参数吗?
			//这里遍历所有参数,找到 project开头的参数, 然后把-符号 后面的字符串返回,
		    //这个字符串就是 91 了。。
			//foreach(string arg in System.Environment.GetCommandLineArgs()) {
				//if(arg.StartsWith("project"))
				//{
					//return arg.Split("-"[0])[1];
				//}
			//}
			return "test";
		}
	}
	//shell脚本直接调用这个静态方法 
	static void BuildForIOS()
	{ 
        //打包之前先设置一下 预定义标签, 我建议大家最好 做一些  91 同步推 快用 PP助手一类的标签。 这样在代码中可以灵活的开启 或者关闭 一些代码。
        //因为 这里我是承接 上一篇文章, 我就以sharesdk做例子 ,这样方便大家学习 ,
		PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, "USE_SHARE");
        //这里就是构建xcode工程的核心方法了, 
        //参数1 需要打包的所有场景
        //参数2 需要打包的名子, 这里取到的就是 shell传进来的字符串 91
        //参数3 打包平台
		BuildPipeline.BuildPlayer(GetBuildScenes(), projectName, BuildTarget.iOS, BuildOptions.None);
	}
}
  • Bundle Identifier 要与注册的证书一致
  • 欢迎遇到有问题可以一起讨论

  • unity 打的Development包,对应Development的签名,不然匹配不上
  • 签名的时候报错:

            Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.

             这个是因为unity生成xcode工程的时候有一个配置选项,去掉这个勾勾就好了,

之后显示

理论这里能直接配置签名的,暂时没试过。

更新xcode后,可能后导致一些问题:

1.-sdk iphoneos13.2 这个版本可能会变化

2.xcodebuild命令可能会出问题,可以试一下下面的命令

xcode-select --install
sudo xcode-select -switch /Library/Developer/CommandLineTools

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值