Unity iOS打包发布流程

这篇具有很好参考价值的文章主要介绍了Unity iOS打包发布流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、版本说明

  • Unity 2020.3.33f
  • MacOS Monterey 12.3.1
  • XCode 13.4.1

unity ios打包,unity,unity,ios,游戏引擎

二、开发者账号

苹果开发者平台 https://developer.apple.com/

类型 用途 限制 费用
个人开发者账号 用于个人开发者进行开发和向AppStore上传应用 只能有一个开发者,调试设备受限 $99
公司开发者账号 用于公司或团队进行开发和向AppStore上传应用 可以有多个开发者,调试设备受限,将个人开发者邀请到团队中来 $99
企业开发者账号 用于企业内部发布,不需要审核,但是不能将应用发布到AppStore 任何设备都可以通过苹果OTA方式进行安装 $290

三、证书

【1】创建证书签名文件(CSR)

unity ios打包,unity,unity,ios,游戏引擎

unity ios打包,unity,unity,ios,游戏引擎

【2】在线申请证书

证书是对电脑开发资格的认证,需要在电脑上安装证书才能正常打包,每个开发者帐号有一套,分为两种:

  1. Developer Certification(开发证书):用于开发测试;
  2. Distribution Certification(发布证书):用于打包测试ipa或者Appstore的安装包;
    unity ios打包,unity,unity,ios,游戏引擎
【3】关联签名文件,并下载证书双击使用

unity ios打包,unity,unity,ios,游戏引擎

【4】导出p12文件,供其他电脑使用

在钥匙串中,找到我的证书

unity ios打包,unity,unity,ios,游戏引擎
unity ios打包,unity,unity,ios,游戏引擎

四、APPID相关(用于后续出包)

苹果开发者平台 https://developer.apple.com/

【1】Identifiers(BoundID)

和unity中的Identifiers保持一致

unity ios打包,unity,unity,ios,游戏引擎

【2】Devices(添加测试设备UDID)

unity ios打包,unity,unity,ios,游戏引擎

获取设备的udid
第一种直接在XCode中查看
第二种通过蒲公英等工具获取,https://www.pgyer.com/tools/udid?sl=WrUS
unity ios打包,unity,unity,ios,游戏引擎

【3】Profiles(与证书配套使用的描述文件)

填写对应的appid
下载下来,后面打包发布会用到,文件后缀为mobileprovision
主要有 devreleasehoc几种版本

五、Unity打包iOS相关

【1】注意事项
  • 需要添加icon图,不然xcode出包会报错
  • Build 如果在版本号不变的情况下,每次打包需要递增
  • Scripting Backend IL2CPP
  • 相机、麦克风、定位等如果使用到的权限需要添加描述
  • ios最低版本号要求
  • Architecture(架构) 需要设置为ARM64

unity ios打包,unity,unity,ios,游戏引擎

【2】通过c#修改XCode项目配置(可跳过)
//打包后调用
[PostProcessBuild]
static void OnBuildFinish(BuildTarget target, string buildPath)
{
    if (target == BuildTarget.iOS)
    {
        SetXCodePro(buildPath);
    }
    Debug.Log("打包完成!");
}
static void SetXCodePro(string buildPath)
{
    PBXProject project = new PBXProject();
    project.ReadFromString(File.ReadAllText(PBXProject.GetPBXProjectPath(buildPath)));
    string targetGuid = project.GetUnityMainTargetGuid();
    //添加库
    //project.AddFrameworkToProject(targetGuid,"ARKit.framework",false);
    //添加权限
    PlistDocument plist = new PlistDocument();
    plist.ReadFromString(File.ReadAllText(Path.Combine(buildPath, "Info.plist")));
    plist.root.SetString("NSCameraUsageDescription", "APP需要您的同意,才能使用摄像头,以便于相机拍摄,检测现场环境");
    plist.root.SetString("NSMicrophoneUsageDescription", "APP需要您的同意,才能使用麦克风,以便于视频录制、语音识别、语音聊天");
    //缺少合规证明
    plist.root.SetBoolean("ITSAppUsesNonExemptEncryption", false);
    //URL Schemes
    var urlTypeArray = plist.root.CreateArray("CFBundleURLTypes");
    var urlTypeDict = urlTypeArray.AddDict();
    urlTypeDict.SetString("CFBundleTypeRole", "Editor");
    urlTypeDict.SetString("CFBundleURLName", "com.pisx.cy");
    var urlScheme = urlTypeDict.CreateArray("CFBundleURLSchemes");
    urlScheme.AddString("cy"); //scheme
    
    plist.WriteToFile(Path.Combine(buildPath, "Info.plist"));
    //设置签名证书
    project.SetBuildProperty(targetGuid, "CODE_SIGN_IDENTITY", "Apple Development: xin yang (V6P37FUD2P)");
    //project.SetBuildProperty(targetGuid, "PROVISIONING_PROFILE_SPECIFIER", "");
    project.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");
    
    project.WriteToFile(PBXProject.GetPBXProjectPath(buildPath));
    }

Xcode属性查看
在xcode工程所在目录右键->在终端中打开->输入命令xcodebuild -showBuildSettings能看到所有的属性名。

【3】打包结构图
  • .xcodeproj xcode工程文件
  • info.plist 权限配置文件
  • MapFileParser.sh 授权解析,终端命令, chmod +x 该文件路径

unity ios打包,unity,unity,ios,游戏引擎

六、Xcode打包

【1】将unity打包好的xcode工程用Xcode打开
【2】登录自己的开发者账号

Xcode>Preferences>Accounts

【3】配置签名

unity ios打包,unity,unity,ios,游戏引擎
unity ios打包,unity,unity,ios,游戏引擎

【4】bitcode

需要设置为No,否则发布时编译会无法通过
unity ios打包,unity,unity,ios,游戏引擎

【5】权限操作

用2019等较低的Unity版本打的包,需要勾选
File>ProjectSetting>Do not show a diagnostic…

文件读取授权,在终端窗口输入
chmod +x MapFileParser.sh文件的完整路径

【6】打包

测试包(Debug):用usb连接iPhone手机,选择该设备,点击Build
正式包(Release):Product > Archive,等待构建成功后,依次点击上传发布

提示:选中Xcode然后 状态栏Window - >Organizer就可以看到所有的Archive版本啦!

七、发布

前往苹果开发者平台的app store页面,新建App
unity ios打包,unity,unity,ios,游戏引擎

【1】TestFlight
  • 审核时间较短、一般用于内部测试
  • 可以生成公开链接(兑换码)的形式,在iPhone的TestFlight中下载应用进行试用(90天),这样外部人员也可以使用了。
  • 填写测试信息

unity ios打包,unity,unity,ios,游戏引擎

【2】AppStore
  • 审核时间长、较为严格、上架AppSrore,其他人可以进行下载
  • 需要填写详细的发布信息

unity ios打包,unity,unity,ios,游戏引擎

【3】Hoc 用于内测,直接发布ipa

八、参考链接

证书与文件配置:
https://zhuanlan.zhihu.com/p/208896244
打包视频教程:
https://www.bilibili.com/video/BV1Qt4y1a7aW?p=12&vd_source=226406b39053c6ed9e7307c51d05c436

九、Error合集

xxx.framework was build for iOS+iOS Simulator
项目 -> Build Settings -> Build Options -> Validate Workspace = Yes

no space left on devices
没有剩余空间,删除一些本地文件,留出内存

ERROR ITMS-90087: “Unsupported Architectures. The executable for XXX.app/Frameworks/XXXBLE.framework contains unsupported architectures ‘[x86_64]’.”
appstore不支持当前framework的架构,里面有不支持的静态库(framework)

$ lipo -info workspacePath/XXX.framework/XXX

命令来检查一下frame。
解决方法是生成binary的时候使用一段script来去掉那些不支持的结构。
在Xcode中选择项目->targets->Build Phases, 找到 Run Script。
Shell填入:/bin/sh

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

    # This script loops through the frameworks embedded in the application and

    # removes unused architectures.

    #find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
    find "$APP_PATH" -name 'AgoraRtcWrapper.framework' -type d | while read -r FRAMEWORK

do

FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)

    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"

    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

    EXTRACTED_ARCHS=()

    for ARCH in $ARCHS

do

echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"

    lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"

    EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")

    done

echo "Merging extracted architectures: ${ARCHS}"

    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"

    rm "${EXTRACTED_ARCHS[@]}"

    echo "Replacing original executable with thinned version"

    rm "$FRAMEWORK_EXECUTABLE_PATH"

    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

    done

ERROR ITMS-90085: “No architectures in the binary. Lipo failed to detect any architectures in the bundle executable.”
这样的话需要修改一个地方就可以了,因为不是全部的sdk 都需要,只修改对应的就可以了。文章来源地址https://www.toymoban.com/news/detail-792544.html

原来:"$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK 
更换后:"$APP_PATH" -name '[frameworkname].framework' -type d | while read -r 

到了这里,关于Unity iOS打包发布流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3d发布android项目,打包apk包流程(unity2021.3.10)

    1、如下图,在安装版本设置里,点击添加模块。如果没有添加模块,证明你安装路径不是目前版本的安装路径,先去设置回来。 2、框选Android Build Support,点击继续,如下图, 3、同意,安装,如下图, 4、等待安装完成即可,如下图。 1、点击菜单栏File→Build Settings,进行编辑

    2023年04月23日
    浏览(63)
  • 【unity与android的交互】移动游戏发布更安心!Unity安卓平台打包相关的常见参数全详解

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity基础实战 首先需要切换到安卓平台 step1 :打包前的基础参数的设置 step2:包名的设置需要勾选,必须要去设置的内容 打包后进行测

    2024年04月17日
    浏览(75)
  • Unity 2018发布在iOS 16.3偶尔出现画面不动的问题

    1)Unity 2018发布在iOS 16.3偶尔出现画面不动的问题 2)IL2CPP在Xcode下增量编译问题 3)帧同步实现PuppetMaster布娃娃系统的问题 这是第351篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。 Q:Unity 2018发布

    2024年02月10日
    浏览(60)
  • Unity手机游戏开发:从搭建到发布上线全流程实战

    前言: 技术书籍是学习技术知识的重要资源之一。读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的、全面的信息,帮助我们快速学习新技能和知识。同时技术书籍有助于保持你的竞争力,因为它们提供了最新的技术知识和实践。这在当今快速发展的技术领域

    2024年01月22日
    浏览(66)
  • Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入

    你好! 这将是一个系列的文章 第一篇 介绍客户端里支付的调起以及购买。 第二篇 介绍后台对购买结果的验证以及发货(IOS)。 第三篇 介绍后台对购买结果的验证以及发货(Android)。 第四篇 介绍后台对内购退单问题的处理(IOS欺诈检测以及欺诈信息反馈)。 我们是用的

    2024年04月13日
    浏览(46)
  • 【Unity iOS打包】The bundle at ‘***.app/Frameworks/UnityFramework.framework‘ contains disallowed file ··

    Unity导出XCode工程,打包上传AppleStoreConnect, Invalid Bundle. The bundle at \\\'AnimalsBAMBAM.app/Frameworks/UnityFramework.framework\\\' contains disallowed file \\\'Frameworks\\\'. (ID: 460dd08b-9828-4396-9d48-ca37cc7d1af5) 1. \\\"Always Embed Swift Standard Libraries\\\"设置为No: 2. 删除***.xcarchive(显示包内容)/Products/Applications/***.app(显示包

    2024年04月16日
    浏览(38)
  • 2311d游戏引擎适配ios

    原文 通过遵循 arsd:simpledisplay ( v11.0.0 之前)上的一些旧代码, Apple 的文档和 Jacob 的这一惊人贡献桥, 我已从 金属绑定 中删除了所有 extern(Objective-C) 代码,现在,所有 Objective-C 桥接代码都是使用 D的反射 生成的. 因此,给定此例代码: 现在有: 这是如何从 单独编译 中获得 实际优势

    2024年02月02日
    浏览(58)
  • iOS App的打包和上架流程

    个人开发者账号 费用:99 美元/年(688.00元) 协作人数:仅限开发者自己 不需要填写公司的邓百氏编码( D-U-N-S Number) 支持账号下的 app 上线 App Store 需要创建 Apple ID 公司开发者账号: 费用:99 美元/年(688.00元) 允许多个开发者协作开发 需要填写公司的邓百氏编码( D-U

    2024年02月08日
    浏览(48)
  • IOS真机调试、发布TestFlight等流程

    使用最新版本的xcode 14 可以简单的进行真机调试,不需要添加钥匙串之类的。 1、在Xcode - Preferences - Accounts 中添加苹果ID 2、创建你的项目,在Bundle Identifier中填写项目Identifier,格式为:com.domainname.appname 3、插入手机,项目的Signing中team上选择你的账号就可以运行了,中间会弹

    2024年02月05日
    浏览(47)
  • Uniapp App离线打包流程(Android、IOS待续)

    开发环境: Visual Studio Code 版本:1.84.2 (非必需,可跳过) HBuilder X 版本:3.96 Android Studio 版本: 2022.1.1 JDK 版本:11.0.1 Android SDK. 版本:34.0.0 官网打包流程:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android.html) 温馨提示:网盘下载如龟速,如需要SDK可以加V benjamin19950304 由于uniapp 3

    2024年04月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包