首页IT科技unity发布到ios(Unity iOS打包发布流程)

unity发布到ios(Unity iOS打包发布流程)

时间2025-09-21 06:54:50分类IT科技浏览5616
导读:一、版本说明 Unity 2020.3.33f MacOS Monterey 12.3.1 XCode 13.4.1...

一              、版本说明

Unity 2020.3.33f MacOS Monterey 12.3.1 XCode 13.4.1

二                       、开发者账号

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

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

三      、证书

【1】创建证书签名文件(CSR) 【2】在线申请证书

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

Developer Certification(开发证书):用于开发测试; Distribution Certification(发布证书):用于打包测试ipa或者Appstore的安装包; 【3】关联签名文件                    ,并下载证书双击使用 【4】导出p12文件               ,供其他电脑使用

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

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

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

【1】Identifiers(BoundID)

和unity中的Identifiers保持一致

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

获取设备的udid

第一种直接在XCode中查看

第二种通过蒲公英等工具获取                     ,https://www.pgyer.com/tools/udid?sl=WrUS 【3】Profiles(与证书配套使用的描述文件)

填写对应的appid

下载下来                  ,后面打包发布会用到,文件后缀为mobileprovision

主要有 dev                        、release          、hoc几种版本

五      、Unity打包iOS相关

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

六                  、Xcode打包

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

Xcode>Preferences>Accounts

【3】配置签名 【4】bitcode

需要设置为No,否则发布时编译会无法通过

【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

【1】TestFlight 审核时间较短                  、一般用于内部测试 可以生成公开链接(兑换码)的形式                  ,在iPhone的TestFlight中下载应用进行试用(90天),这样外部人员也可以使用了                    。 填写测试信息 【2】AppStore 审核时间长                      、较为严格   、上架AppSrore,其他人可以进行下载 需要填写详细的发布信息 【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 都需要               ,只修改对应的就可以了            。 原来:"$APP_PATH" -name *.framework -type d | while read -r FRAMEWORK 更换后:"$APP_PATH" -name [frameworkname].framework -type d | while read -r

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
王者露娜出装顺序:露娜出装顺序图片(王者荣耀露娜的出装是什么?) seo权重提高(seo排名快速上升)