iOS混合开发之uni-app本地打包集成到iOS原生项目_把uniapp导入ios原生工程-程序员宅基地

技术标签: 技术笔记  uni-app本地打包  iOS+HbuilderX  HbuilderX  iOS混合开发  uni-app  

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+Appuni-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中同样按先后顺序添加隐私权限发现成功了。

总结

总之一句话:还是多花时间仔仔细细看一下文档再去开发!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/longlongValue/article/details/104654244

智能推荐

TensorFlow里,shape=(?, 120)里的问号是怎么回事呢_tf shape为什么有问号-程序员宅基地

文章浏览阅读4.1k次。TensorFlow里,shape=(?, 120)里的问号是怎么回事呢125self.cos_sim(1024,51)Tensor("cosine-imilarity-layer/mul_2:0",shape=(1024,51),dtype=float32)126type(self.query_batch):<class'tensorflow...._tf shape为什么有问号

[RK3568 Android11] 开发之调试RK809 codec音频-SPK喇叭_rk3568 喇叭左右声道问题-程序员宅基地

文章浏览阅读5.5k次,点赞2次,收藏10次。目录前言一、注册声卡顺序二、SPK喇叭路由配置三、tinyalsa调试工具前言瑞芯微RK809是一种复杂的功率管理集成电路(PMIC)集成编解码器,适用于由外部电源供电的多核系统应用;同时它也集成了音频编解码器,这样在硬件设计上可以直接使用RK809 codec功能,不必再外挂个其他codec芯片;RK809 codec不仅支持SPK,还支持耳机,MIC功能;一、注册声卡顺序设备树dts里面原厂帮我们配置好了rk809_sound,我们直接..._rk3568 喇叭左右声道问题

验证码的两种生成方式_"<img id=\"code\" src=\"verify/code.action\">"-程序员宅基地

文章浏览阅读1.8k次。验证码是一个非常常见的东西,基本上每一个做web开发的程序员都会遇到。本文介绍两种验证码的生成方式。一种是后台生成验证码,一种是前台直接生成验证码在spring MVC模式 中,后台生成生成验证码传递到前台。后台代码:import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImag_""

VMware16安装CentOS7、网络配置、远程连接_远程访问vm16虚拟机-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏8次。目录1、安装准备2、安装3、网络配置4、远程连接安装准备VMware16转载 - Linux>>CentOS 7镜像下载安装转载 - VMware 16 安装 CentOS 7.9 详细图文教程注意1、以下不要选,我选了启动不了虚拟机2、若在安装时配置网络,网关、掩码参数需要确定网络配置:连通网络,设置静态IP初始状态:ping不通百度、IP地址为空、网卡配置文件也是默认配置方法方法一:安装时配置,如上述教程方法二:安装后进入系统配置1、_远程访问vm16虚拟机

Java数据库连接API(JDBC)_java连接数据库用什么api好-程序员宅基地

文章浏览阅读323次。JDBC的PreparedStatement是预编译的Statement,防止SQL注入,由于是预编译的,查询一次之后放到数据库的缓存,下次执行时发现相同,所以执行效率高。_java连接数据库用什么api好

JavaScript增强AJAX基础-程序员宅基地

文章浏览阅读69次。<title>js类型</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> <script type="text/javascript"> //num为number类型 v..._ajax增强

随便推点

免费获取股票历史交易数据方法与代码获取股票实时数据方法集合_哪里有股票的历史实时数据-程序员宅基地

文章浏览阅读6.7k次,点赞2次,收藏34次。小编在这里提供2种方法去获取股票数据,第一种通过使用第三方平台提供的方法来获取到所需要的股票历史数据。第二种通过接口使用代码获取实时的股票数据_哪里有股票的历史实时数据

泛微Ecology9.0流程Ecode实践:通过修改Store对象隐藏流程明细表列实例_泛微oa根据主表选择按钮隐藏明细表列-程序员宅基地

文章浏览阅读570次,点赞7次,收藏9次。Ecology9复写组件,E9隐藏明细表列,E9隐藏明细表栏,泛微隐藏明细表列_泛微oa根据主表选择按钮隐藏明细表列

趋势预测算法大PK!_趋势预测算法 csdn-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏61次。https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/106368395趋势预测在很多应用场景中都会起到至关重要的作用,比如淘宝商家会考虑库存量应该保持在多少才能够满足客户需求,商场希望得知假期会迎来多大的客流量以安排系列活动,机场想要预测五一黄金周会有多大的客运量来做相应的应急部署等。在智能运维领域,趋势预测同样具有一定的理论意义和实际应用价值。趋势预测在运维场景中的应用背景在实时监控系统中会采集到大量的数据,有些数据具有周期性等时_趋势预测算法 csdn

【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)-程序员宅基地

文章浏览阅读713次,点赞23次,收藏21次。摘要本文提出了一种基于神经网络的(NN-based)数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的跟踪问题。控制目标是使系统的输出在每次迭代过程中跟踪参考轨迹。因此,在每次迭代过程的每个相对时间点上,使用广义回归神经网络(GRNN)作为估计器来解决系统的关键参数,并使用径向基函数神经网络(RBFNN)作为控制器来解决控制输入。

Flask核心机制_runtimeerror: working outside of application conte-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏4次。python编程快速上手(持续更新中…)python实战网上书店项目(Flask技术点More))1.首先写一段测试代码我们通过db.create_all(app=app)的方式解决了working outside application context的错误,下面我们来深究,这个错误出现的具体原因是什么。from flask import Flask, current_appapp = Flask(name)断点调试这里显示current_app=[LocalProxy]a = cur_runtimeerror: working outside of application context.

java中间件 - redis其他问题_master最好不要做任何持久化工作-程序员宅基地

文章浏览阅读1.1k次。Redis常见性能问题和解决方案?Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。尽量避免在压力较大的主库上增加从库Master调用BGREWRITEAOF重写AOF文件,AOF在重写的时候会占大量的CPU和内存资源,导致服务load过高,出现短暂服务暂停现象。为了Master的稳定性,主_master最好不要做任何持久化工作

推荐文章

热门文章

相关标签