一、简介
-
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_64
或arm64e
(Apple Silicon Mac
)。在开发跨平台应用,可以根据目标平台调整适配策略:-
Android
:需要指定armeabi-v7a
、arm64-v8a
、x86
等。 -
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
,这一步必须需要付费了的开发者账号
,之前登录自己的账号但不是开发者账号
的可不导出。