iOS混合开发之uni-app本地打包集成到iOS原生项目
iOS混合开发
- 1.前言
- 2.项目背景
- 3.项目框架
- 4.从入坑到踩坑
- 4.1打包错误
- 4.2 运行错误
- 总结
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本地打包集成到iOS原生项目相关推荐
- 我的移动混合开发之旅
在移动开发这片热土上,除了原生之外,也有一些公司在尝试着新技术.新模式,这是混合开发诞生和延续意义以及价值. 原生开发和混合开发的优缺点也已经是一个老生常谈的事儿了,在这里我就简单来说一下: 原生开发 ...
- 移动端开发之Web App开发
写在前面:本人刚刚接触移动端开发,希望自己的见解能够帮助到他人,不足之处还望提醒. 1 移动端开发分类 1.1 Native App 原生App开发 优点: (1)用户体验好 (2)性能稳定 (3)操 ...
- uniapp 发行 原生APP本地打包 安卓APK(最全的步骤)
第11步没写完,后面还有些内容(第三方sdk配置之类的),有空再补上 第一步:正常运行的uniapp 你得有个uniapp,配置是好的可以在微信开发者工具中看的那种,小程序都用不了,就别考虑打包安卓了 ...
- 专访实战专家,揭秘iOS神奇开发之路
专访实战专家,揭秘iOS神奇开发之路 转自:http://www.ciitn.com/archive/5533.html 时间: 2012-03-29 10:59来源: 未知 作者: xinglu 点 ...
- 混合开发之phonegap开发相关知识解析
hybrid app(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具"Native App良好用户交互体验的优势"和"Web Ap ...
- iOS日常开发之Xcode的缓存清理
Xcode缓存占内存太大,清理一下 1.~/Library/Developer/Xcode/DerivedData/ 这个文件夹中保存的是Xcode的缓存文件,曾经在Xcode跑过的所有项目的索引.b ...
- iOS 游戏开发之unity5.0(百度贴吧转载收藏)
Unity 发布到IOS的注意事项1.开发环境 MAC环境:Xcode环境 7.2.1 Unity环境:Unity5.3 2.基本说明 首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总 ...
- 移动混合开发之android文件管理新建文件和删除文件
今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{display: ...
- 移动端混合开发之a标签的坑
iOS下嵌入h5页面: 老样子,先说一下前提: a标签的href属性不为空(例如:#或其他有效链接): 绑定了点击事件 点击事件中有路由跳转 下面说一下坑: 这种情况下页面会先跳转到href属性所对应 ...
最新文章
- 提升Web用户体验的71个设计要点
- 错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序
- b g opencv读入的图片 r_OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
- 老布特木糖醇蛋卷鸡蛋味
- 20210424:力扣第237周周赛(下)
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_13_使用字节流读取中文的问题...
- 标准Lena测试图像下载
- mysql 加权_数据库 – MySQL中的加权平均计算?
- WPS永久关闭热点、云服务、初始登陆界面
- oracle的解释计划,oracle解释执行计划-Oracle
- 没想到!2018微信年度数据报告显示使用最多的表情竟是...
- 哎 !互联网又偷偷进行了裁员
- 国学精华,千古绝唱500句
- shuipfcms二次开发之图片上传
- 884. 两句话中的不常见单词
- html 百度天气,百度天气预报api
- 贪婪算法处世?论程序算法与人生选择
- HBase Shell数据库操作
- 路飞学城1之课程与课程详细
- Android 下载APK 安装APK 打开APK
热门文章
- #03 ASP.NET主题
- js基础系列之函数调用与this
- 触摸屏中应用的电容式触摸芯片
- 小米5查看设备号信息及验证type-c数据线
- 一般对称性和轮换对称性
- python中save是什么意思_Python中的numpy.save()和joblib.dump()有什么区别?
- 3D场景搭建的隐秘功能——时间轴
- 成龙寿宴筹善款7000万 嘉宾:比春晚还热闹
- 上海JAVA5月就业环境,各位上海的大佬们呀 我准备下个礼拜出去上海找工作了!一年半的...
- 电脑如何查看如何无限WiFi密码?