Uniapp iOS 当地离线打包(具体流程)

打印 上一主题 下一主题

主题 1881|帖子 1881|积分 5643

一、简介



  • 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 测试项目



  • 使用 HBuilderX 或 Cli 创建一个测试项目 demo,然后运行到测试机或者模拟器。附:Uniapp 运行到 iOS 真机或模拟器。
    1、确认当前模拟器或者真机支持的 cpu 类型,然后进行勾选,这里就是设置要打包的 apk 必要支持哪些 cpu 类型的手机,全要支持可以全支持。
    对于 iOS 开发,通常使用 arm64 架构(当前所有最新的 iOS 装备都支持),而在 模拟器 上运行时可能会使用 x86_64arm64e(Apple 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 都写成一样的,包括 General、InfoPlist、Info 里面都保持同等,可以自行决定,但是按上面的设置应该不会有问题,这条仅做为备选方案。
  • 然后运行模拟器即可,可能会遇到报错 # iOS Building for ‘iOS-simulator‘, but linking in object file xxx 点这里进行解决,再重新运行即可。

  • 模拟器运行成功后,会提示报错 appkey 设置错误,设置一下 appkey,必要申请一下,有则可以直接拷贝:
    1、打开 Uniapp 开发者后台,登录一下。


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

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

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


    5、拷贝好后,回到 Xcode 的 Info 设置中更换 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、确保 Run 与 Archive 编译状态为 Release,这是正式线上包必须要确认的,但当打包完成后,测试运行的时候 Run 还是必要恢复成 Debug。



    3、Product -> Archive 直接打包

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

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


七、离线自定义基座打包



  • Uniapp iOS 离线生成自定义基座(具体流程)
  • Uniapp iOS 离线生成自定义基座(官方文档)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表