Uniapp iOS 本地离线打包(详细流程)

一、简介

  • App 离线 SDK 暂时不支持 Swift,依然使用的是 Object-C,未来不清楚。

  • uniapp 提供了 云打包本地打包 两种方案,云打包 需要排队且还有次数限制,本地打包 则就没有这些限制,而且会 本地打包 对开发 原生插件 有很大的帮助。

    在这里插入图片描述

  • 细节:需要 Xcode 打包的时候,记得先通过工具栏的 Product -> 先 Clean Buidl Folder... -> 再 Build -> 最后再打包或运行,生成基座或者测试离线包都适用这套流程。

    可以使用快捷键,先 Command + Shift + K,再 Command + B,再 打包或运行

二、准备工作

  • 按照官方文档中的 开发环境 下载好开发工具与 SDK 工程即可:iOS 离线官方文档地址

    在这里插入图片描述

  • 注意当前开发工具 HBuilderX 版本跟下载的 SDK 工程要求是否对应

    在这里插入图片描述

  • 双击工程文件夹内的 HBuilder-Hello.xcodeproj 打开项目,获取拖入 Xcode 运行起来项目。

三、创建 Uniapp 测试项目

  • 使用 HBuilderXCli 创建一个测试项目 demo,然后运行到测试机或者模拟器。附:Uniapp 运行到 iOS 真机或模拟器

    1、确认当前模拟器或者真机支持的 cpu 类型,然后进行勾选,这里就是配置要打包的 apk 需要支持哪些 cpu 类型的手机,全要支持可以全支持。

    对于 iOS 开发,通常使用 arm64 架构(当前所有最新的 iOS 设备都支持),而在 模拟器 上运行时可能会使用 x86_64arm64eApple Silicon Mac)。在开发跨平台应用,可以根据目标平台调整适配策略:

    • Android:需要指定 armeabi-v7aarm64-v8ax86 等。

    • iOS:通常只需要支持 arm64 即可,如果需要运行到模拟器则需要勾上 x86

    在这里插入图片描述

    2、测试项目正常运行后,则进行本地打包,获得编译后的源码。

    在这里插入图片描述

    3、看控制台,等待编译完成,去给出的目录找到编译后的源码。

    在这里插入图片描述

    4、替换离线打包工程中的源码

    在这里插入图片描述

    5、修改 control 文件里面的 appid,其实离线资源文件夹名称就是 appid,可以核对下免得出错。

    在这里插入图片描述

四、离线工程的调整

  • 代码导入后,需要进行一些离线打包工程上的细节调整,注意:没有开发者账号是不影响你本地运行模拟器跟真机调试的,运行真机是临时证书,有时效性的。

  • 包名替换(例如 com.dzm.test),及启动自动证书配置,未调整之前是这样的:

    在这里插入图片描述

    切到 Signing & Capabilities 进行配置,Team 账号不登录不影响本地模拟器测试,但影响真机调试与发包。

    在这里插入图片描述

    配置后再切回 General 看看

    在这里插入图片描述

  • 配置 App 名称,同 Uniapp 中的应用名称,也就是打包或运行到设备上显示的,修改 CFBundleDisplayName 就是 App 名称,官方提供了中英文版本配置:

    在这里插入图片描述

    如果不想这样配置,也可以直接把这个 InfoPlist.strings 删除,或者去除内部所有字段,因为 InfoPlist.strings 中的 CFBundleDisplayName 优先级更高,移除后去 info 配置中添加一个 Bundle display name 效果一样:

    在这里插入图片描述

    如果遇到展示问题,可以干脆直接将所有的 DisplayName 都写成一样的,包括 GeneralInfoPlistInfo 里面都保持一致,可以自行决定,但是按上面的配置应该不会有问题,这条仅做为备选方案。

  • 然后运行模拟器即可,可能会遇到报错 # iOS Building for ‘iOS-simulator‘, but linking in object file xxx 点这里进行解决,再重新运行即可。

    在这里插入图片描述

  • 模拟器运行成功后,会提示报错 appkey 配置错误,配置一下 appkey,需要申请一下,有则可以直接拷贝:

    1、打开 Uniapp 开发者后台,登录一下。

    在这里插入图片描述

    在这里插入图片描述

    2、点击应用名称进入,找到 各平台信息离线打包 Key 管理已经迁移到这里面),创建一个 iOS 平台的,每个平台都只能单独创建,不能共用。

    在这里插入图片描述

    3、点击 新增 后,提示填内容即可,点击 提交

    在这里插入图片描述

    4、在列表中点击 创建离线 Key,然后点击 查看离线 Key,拷贝即可

    在这里插入图片描述

    在这里插入图片描述

    5、拷贝好后,回到 XcodeInfo 配置中更换 appkey,找 dcloud_appkey 替换它的值,不要找错了,其他的什么 ID 先不要管,做到功能了再去替换。

    如果没有找到 dcloud_appkey,可以通过鼠标放到任意一行上悬浮,出来 + 号,添加一行,填入 dcloud_appkey,并在后面的值上填入拷贝好的 key 也是一样的。

    在这里插入图片描述
    在这里插入图片描述

    6、重新运行项目即可,可以删除手机或模拟器中的 app 后再重新运行。

    在这里插入图片描述

    7、如果运行后,有警告先不管,例如 using an empty LLDB target which can cause slow memory reads from remote devices. 这个是使用模拟器的警告,真机上没有影响。

五、运行到真机

  • 可以先登录自己的 Apple账号 以私人账号的身份使用下临时的证书,登录是的非开发者账号进行本地测试,这样能运行到真机,但不能导出 ipa 包,不能发布,如果证书没生成成功,可以切换一下上面的 Automatically manage signing 开关,或者重启一下 Xcode。这边生成证书后但 Debug 环境报了警告:附 # iOS xxx has conflicting provisioning settings. 解决方案。

    在这里插入图片描述

    解决后就是这样的:

    在这里插入图片描述

  • 在手机上打开 设置 -> 隐私与安全性 -> 开发者模式 打开,会自动重新启动手机。

  • 连接电脑与手机,然后在项目中选择自己的真机设备,运行即可,会开始给手机安装调试组件,等待运行成功即可。

    安装 app 成功后,这种情况下还会弹出是 不受信任的证书,需要去 设置 -> 通用 -> VPM与设备管理 里面找到不受信任的证书,点击信任,然后回到桌面打开应用即可,或者用 Xcode 重新运行自动打开也行。

    在这里插入图片描述

    在这里插入图片描述

六、打包

  • 附:# iOS Xcode 打包和发版【详细流程】,正式线上包还需要按下面的要求进行调整再打包,测试包直接按下面的打包 ipa 拿出来用就行。

  • 普通本地打包 ipa

    1、Product -> Archive 直接打包

    在这里插入图片描述

    2、如果有弹出授权窗口,直接输入密钥,点击始终允许

    在这里插入图片描述

    3、导出 ipa,这一步必须需要付费了的 开发者账号,之前登录自己的账号但不是 开发者账号 的可不导出。

    在这里插入图片描述

    在这里插入图片描述

  • 打包 ipa 发布到 AppStore 细节

    1、需要移除一下 control.xml 中的 debug=true 配置,如果是开发测试中则无所谓,这个配置会输出调试日志:

    在这里插入图片描述

    2、确保 RunArchive 编译状态为 Release,这是正式线上包必须要确认的,但当打包完成后,测试运行的时候 Run 还是需要恢复成 Debug

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    3、Product -> Archive 直接打包

    在这里插入图片描述

    4、如果有弹出授权窗口,直接输入密钥,点击始终允许

    在这里插入图片描述

    5、发包或导出 ipa,这一步必须需要付费了的 开发者账号,之前登录自己的账号但不是 开发者账号 的可不导出。

    在这里插入图片描述

    在这里插入图片描述

七、离线自定义基座打包

猜你喜欢

转载自blog.csdn.net/zz00008888/article/details/144351571
今日推荐