1.前言
前端统一开发越来越多,公司为了大一统前端的所有页面显示问题,同时为节约人力资源成本,决定做前端统一开发的预研以及选型。
2.项目背景
经过几次讨论后决定前端统一开发选型方案从以下几种方式进行:
- flutter
- reactnative
- uniapp
- ionic
各统一开发方案的优劣势与选型结果见文档:app技术选型.docx,提取码: qs6z
根据实际情况我们选择了uni-app进行后续前端统一开发的语言。其中最重要的有以下几点:
- uni-app热度逐渐上升趋势非常明显
- uni-app使用vue技术,公司部门内部部分人员已有vue前端开发基础
- 中文文档,上手快
3.项目框架
- 前端开发框架: HbuilderX 2.5.1
- 前端页面开发参考文档:5+App;uni-app开发(ps:因为前期统一使用uni-app进行开发,但是后来发现uni-app在按照文档的方式调用原生NFC读写iOS 13.0以上才支持的功能时不起作用,后来决定采用插件的形式进行iOS原生代码开发,安卓还是按照原有方式进行开发。另外页面显示上你可以直接集成某些vue的页面组件进行开发使用,例如ColorUI)
- App开发框架:Xcode
- 先看文档
- 多看文档
- 仔细看文档
4.从入坑到踩坑
4.1打包错误
- HbuilderX找不到iOS模拟器或真机
解决方案:Xcode->Preferences->Command Line Tools选上然后重启IDE,如下图
- 在演示App上正常显示,但是乱七八槽不确定的东西这么多我上架确定不会被拒吗?iOS创建最简工程参考iOS创建最精简离线打包工程,不要错误的参考了iOS离线打包,,也不要参考IOS平台5+SDK技术白皮书.docx(可以简单看一下,比较全但实际开发还是要看自己需求的,这明显不符合我的uni-app需求),不然你会在这条道路上越走越远。
- iOS创建工程运行时各种Error:根据error信息提示缺啥静态库动态库在下载的(5+ SDK下载)的SDK中找到补啥。
- 运行到模拟器或者真机弹框提示打包缺少XXX模块
解决方案:参考5+ SDK下载中Excel表格:Feature-iOS.xls - 使用uni-app iOS NFC读写功能时importClass(“NFCTagReaderSession”)失败
解决方案:在manifest.json源码视图中添加framework,参考 - 开发原生插件请认准自己的项目类型,我的项目框架要去看uni-app,或者更详细的5+app-uniplugin-demo,不要看html5+,也不要看5+ SDK中的插件开发说明。不然你会错的莫名其妙不知所措。
- 自定义基座看iOS平台离线生成自定义基座
- 在HbuilderX中调用iOS原生插件方法不起作用,本地打包放到在Xcode中试试看!记得先删掉模拟器或真机上的旧基座。
4.2 运行错误
-
运行到模拟器或者真机发现弹窗提示各种莫名其妙的ABCD,如下图

解决方案:做一下国际语言本地化生成Localizable.strings。问题参考,内容参考 -
启动图片未全屏?
解决方案:info下添加启动图片,参考示例工程info.plist中的字段UILaunchImages -
启动时黑屏,进入页面提示如下图

-
加上liblibNavigator.a之后,项目报错提示如下图

解决方案:根据提示添加AssetsLibrary.framework、AVFoundation.framework、AddressBook.framework、CoreLocation.framework -
最近提包到苹果市场后会有一个回馈邮件关于UIWebview使用废弃问题
ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs .
解决方案:Appstore审核反馈废弃UIWebview APIs问题的说明
说两个个我耗时比较久的问题,也比较简单:
- 集成到Xcode中显示HbuilderX编译版本高于手机SDK版本,查看详情提示升级HbuilderX需要手动升级手机SDK进入uni-app运行环境版本和编译器版本不一致的问题
解决方案:到HBuilderX官网下载最新的SDK重新集成到Xcode中 - uni-app中使用了uni.getLocation本地打包然后提交App Store总是得到一封ITMS-90683错误提示缺少NSLocationAlwaysUsageDescription的key,项目中没有用到持续定位但总是过不了,当我单独在本地基座中添加该隐私说明后App内授权弹框提示又不提示了。反复检查代码查看文档,也没有发现需要使用。
解决方案:iOS云打包修改权限提示语或NSLocationAlwaysUsageDescription 审核不过中按照该文档下评论修改为
"ios" : {
"privacyDescription" : {
"NFCReaderUsageDescription" : "需要使用您的NFC功能操作标签",
"NSLocationWhenInUseUsageDescription" : "需要访问您的位置显示天气信息",
"NSLocationAlwaysUsageDescription" : "需要访问您的位置显示天气信息",
"NSLocationAlwaysAndWhenInUseUsageDescription" : "需要访问您的位置显示天气信息"
}
}
然后在本地基座的info.plist中同样按先后顺序添加隐私权限发现成功了。
总结
总之一句话:还是多花时间仔仔细细看一下文档再去开发!
本文分享了iOS混合开发的项目背景、框架选择与实践过程,详细记录了从使用uni-app进行前端统一开发到解决各类打包与运行错误的经验,强调了深入理解文档的重要性。

2843

被折叠的 条评论
为什么被折叠?



