iOS混合开发

  • 1.前言
  • 2.项目背景
  • 3.项目框架
  • 4.从入坑到踩坑
    • 4.1打包错误
    • 4.2 运行错误
  • 总结

1.前言

    前端统一开发越来越多,公司为了大一统前端的所有页面显示问题,同时为节约人力资源成本,决定做前端统一开发的预研以及选型。

2.项目背景

    经过几次讨论后决定前端统一开发选型方案从以下几种方式进行:

  1. flutter
  2. reactnative
  3. uniapp
  4. ionic

各统一开发方案的优劣势与选型结果见文档:app技术选型.docx,提取码: qs6z

    根据实际情况我们选择了uni-app进行后续前端统一开发的语言。其中最重要的有以下几点:

  1. uni-app热度逐渐上升趋势非常明显
  2. uni-app使用vue技术,公司部门内部部分人员已有vue前端开发基础
  3. 中文文档,上手快

3.项目框架

  1. 前端开发框架: HbuilderX 2.5.1
  2. 前端页面开发参考文档:5+App;uni-app开发(ps:因为前期统一使用uni-app进行开发,但是后来发现uni-app在按照文档的方式调用原生NFC读写iOS 13.0以上才支持的功能时不起作用,后来决定采用插件的形式进行iOS原生代码开发,安卓还是按照原有方式进行开发。另外页面显示上你可以直接集成某些vue的页面组件进行开发使用,例如ColorUI)
  3. App开发框架:Xcode
  4. 先看文档
  5. 多看文档
  6. 仔细看文档

4.从入坑到踩坑

4.1打包错误

  1. HbuilderX找不到iOS模拟器或真机
    解决方案:Xcode->Preferences->Command Line Tools选上然后重启IDE,如下图
  2. 在演示App上正常显示,但是乱七八槽不确定的东西这么多我上架确定不会被拒吗?iOS创建最简工程参考iOS创建最精简离线打包工程,不要错误的参考了iOS离线打包,,也不要参考IOS平台5+SDK技术白皮书.docx(可以简单看一下,比较全但实际开发还是要看自己需求的,这明显不符合我的uni-app需求),不然你会在这条道路上越走越远。
  3. iOS创建工程运行时各种Error:根据error信息提示缺啥静态库动态库在下载的(5+ SDK下载)的SDK中找到补啥。
  4. 运行到模拟器或者真机弹框提示打包缺少XXX模块
    解决方案:参考5+ SDK下载中Excel表格:Feature-iOS.xls
  5. 使用uni-app iOS NFC读写功能时importClass(“NFCTagReaderSession”)失败
    解决方案:在manifest.json源码视图中添加framework,参考
  6. 开发原生插件请认准自己的项目类型,我的项目框架要去看uni-app,或者更详细的5+app-uniplugin-demo,不要看html5+,也不要看5+ SDK中的插件开发说明。不然你会错的莫名其妙不知所措。
  7. 自定义基座看iOS平台离线生成自定义基座
  8. 在HbuilderX中调用iOS原生插件方法不起作用,本地打包放到在Xcode中试试看!记得先删掉模拟器或真机上的旧基座。

4.2 运行错误

  1. 运行到模拟器或者真机发现弹窗提示各种莫名其妙的ABCD,如下图

    解决方案:做一下国际语言本地化生成Localizable.strings。问题参考,内容参考

  2. 启动图片未全屏?
    解决方案:info下添加启动图片,参考示例工程info.plist中的字段UILaunchImages

  3. 启动时黑屏,进入页面提示如下图

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

    解决方案:根据提示添加AssetsLibrary.framework、AVFoundation.framework、AddressBook.framework、CoreLocation.framework

  5. 最近提包到苹果市场后会有一个回馈邮件关于UIWebview使用废弃问题

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs .

    解决方案:Appstore审核反馈废弃UIWebview APIs问题的说明

说两个个我耗时比较久的问题,也比较简单:

  1. 集成到Xcode中显示HbuilderX编译版本高于手机SDK版本,查看详情提示升级HbuilderX需要手动升级手机SDK进入uni-app运行环境版本和编译器版本不一致的问题
    解决方案:到HBuilderX官网下载最新的SDK重新集成到Xcode中
  2. 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原生项目相关推荐

  1. 我的移动混合开发之旅

    在移动开发这片热土上,除了原生之外,也有一些公司在尝试着新技术.新模式,这是混合开发诞生和延续意义以及价值. 原生开发和混合开发的优缺点也已经是一个老生常谈的事儿了,在这里我就简单来说一下: 原生开发 ...

  2. 移动端开发之Web App开发

    写在前面:本人刚刚接触移动端开发,希望自己的见解能够帮助到他人,不足之处还望提醒. 1 移动端开发分类 1.1 Native App 原生App开发 优点: (1)用户体验好 (2)性能稳定 (3)操 ...

  3. uniapp 发行 原生APP本地打包 安卓APK(最全的步骤)

    第11步没写完,后面还有些内容(第三方sdk配置之类的),有空再补上 第一步:正常运行的uniapp 你得有个uniapp,配置是好的可以在微信开发者工具中看的那种,小程序都用不了,就别考虑打包安卓了 ...

  4. 专访实战专家,揭秘iOS神奇开发之路

    专访实战专家,揭秘iOS神奇开发之路 转自:http://www.ciitn.com/archive/5533.html 时间: 2012-03-29 10:59来源: 未知 作者: xinglu 点 ...

  5. 混合开发之phonegap开发相关知识解析

    hybrid app(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具"Native App良好用户交互体验的优势"和"Web Ap ...

  6. iOS日常开发之Xcode的缓存清理

    Xcode缓存占内存太大,清理一下 1.~/Library/Developer/Xcode/DerivedData/ 这个文件夹中保存的是Xcode的缓存文件,曾经在Xcode跑过的所有项目的索引.b ...

  7. iOS 游戏开发之unity5.0(百度贴吧转载收藏)

    Unity 发布到IOS的注意事项1.开发环境 MAC环境:Xcode环境 7.2.1 Unity环境:Unity5.3 2.基本说明 首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总 ...

  8. 移动混合开发之android文件管理新建文件和删除文件

    今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{display: ...

  9. 移动端混合开发之a标签的坑

    iOS下嵌入h5页面: 老样子,先说一下前提: a标签的href属性不为空(例如:#或其他有效链接): 绑定了点击事件 点击事件中有路由跳转 下面说一下坑: 这种情况下页面会先跳转到href属性所对应 ...

最新文章

  1. 提升Web用户体验的71个设计要点
  2. 错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序
  3. b g opencv读入的图片 r_OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
  4. 老布特木糖醇蛋卷鸡蛋味
  5. 20210424:力扣第237周周赛(下)
  6. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_13_使用字节流读取中文的问题...
  7. 标准Lena测试图像下载
  8. mysql 加权_数据库 – MySQL中的加权平均计算?
  9. WPS永久关闭热点、云服务、初始登陆界面
  10. oracle的解释计划,oracle解释执行计划-Oracle
  11. 没想到!2018微信年度数据报告显示使用最多的表情竟是...
  12. 哎 !互联网又偷偷进行了裁员
  13. 国学精华,千古绝唱500句
  14. shuipfcms二次开发之图片上传
  15. 884. 两句话中的不常见单词
  16. html 百度天气,百度天气预报api
  17. 贪婪算法处世?论程序算法与人生选择
  18. HBase Shell数据库操作
  19. 路飞学城1之课程与课程详细
  20. Android 下载APK 安装APK 打开APK

热门文章

  1. #03 ASP.NET主题
  2. js基础系列之函数调用与this
  3. 触摸屏中应用的电容式触摸芯片
  4. 小米5查看设备号信息及验证type-c数据线
  5. 一般对称性和轮换对称性
  6. python中save是什么意思_Python中的numpy.save()和joblib.dump()有什么区别?
  7. 3D场景搭建的隐秘功能——时间轴
  8. 成龙寿宴筹善款7000万 嘉宾:比春晚还热闹
  9. 上海JAVA5月就业环境,各位上海的大佬们呀 我准备下个礼拜出去上海找工作了!一年半的...
  10. 电脑如何查看如何无限WiFi密码?