新增扩展程序功能打包提交新版 WARNING ITMS-90473 警告问题
1、问题描述
- 自从在主应用中加入SiriShortCut功能之后,打包程序上传至 iTunes Connect 就会出现警告,看其原因描述是CFBundleVersion主应用与子应用的不一致导致的
Prepared archive for uploading
Uploaded with warnings
warning: App Store Connect Operation Warning
WARNING ITMS-90473: "CFBundleVersion Mismatch. The CFBundleVersion value '1.1' of extension 'ukon.app/PlugIns/CHSiriIntent.appex' does not match the CFBundleVersion value '181212.337' of its containing iOS application 'ukon.app'."
2、问题解决
如果对工程上的初始配置没有修改过,例如:没有使用脚本动态修改CFBundleVersion,那么可以直接使用以下方法解决
2.1 直接修改Build
- 主程序

- siriShortCut子程序


- 只要保证主子程序内容一致就可以了
- 主程序
2.2 动态修改Build
- 动态修改Build使用脚本来修改,由于主程序中使用了动态修改,子程序中也需要使用动态修改。我这里由于接的是老项目,不了解工程配置,找了好久才找出原因
- 脚本使用sh脚本
BUILD_REV=`date +%y%m%d`.`git rev-list HEAD | wc -l | awk '{print $1}'`
GIT_HASH=`git log --oneline -n 1 | awk '{print $1}'`
INFO_PATH="${TARGET_BUILD_DIR}"/${INFOPLIST_PATH} /usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${BUILD_REV}" ${INFO_PATH}
/usr/libexec/PlistBuddy -c "Delete :GIT_HASH" ${INFO_PATH}
/usr/libexec/PlistBuddy -c "Add :GIT_HASH string ${GIT_HASH}" ${INFO_PATH}
- 在主程序与子程序中分别创建脚本文件

- 双击重命名为Update CFBundleVersion(Build Version)

- 展开粘贴以上脚本

- 由于脚本中的拼接还使用到了CFBundleShortVersionString,所以还要保持这里一致
- 主子程序都要修改,其中CFBundleVersion在这里设置无效

- 至此,就可以动态修改保持主子程序CFBundleVersion一致了,得出的构建版本是:日期 + 应用版本号
新增扩展程序功能打包提交新版 WARNING ITMS-90473 警告问题的更多相关文章
- 【03】Chrome提示印象笔记剪藏插件"已停用不支持的扩展程序"怎么办?
[03] Chrome提示印象笔记剪藏插件"已停用不支持的扩展程序"怎么办? 刚好也遇上了这个问题,百度了一下,以下是解决方法,亲测可行: 1.首先把需要安装的第三方插件,后缀.c ...
- sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类
sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类 详述 使用sbt对写的Spark程序打包,过程中没有问题 spark-submit提交jar包运行提示找不到对应的类 解 ...
- 16、如何将安装在chrome上的插件(扩展程序)打包成".crx"文件
1.打开扩展程序: 2.打开开发者模式并选择要打包的插件: 3.打包扩展程序: (1) (2) (3)
- 解决新版chrome无法手动拖动安装插件 提示“无法从该网站添加应用,扩展程序和用户脚本”
开发模式安装 把下载后的.crx扩展名的离线Chrome插件的文件扩展名改成.zip或者.rar 解压压缩文件 在Chrome的地址栏中输入:chrome://extensions/ 打开Chrome ...
- 谷歌浏览器(chrome)查找、打包已安装的扩展程序
我们有时候会安装浏览器扩展程序,正常情况下,我们回去谷歌应用商店里面进行下载,但是这个需要VPN,有时候我们没法使用VPN,想从其他已安装扩展程序的浏览器上直接安装就可以使用我们下面这个方法 win1 ...
- Chrome扩展程序的二次开发:把它改得更适合自己使用
我当然知道未经作者允许修改别人程序是不道德的了,但作为学习研究之用还是无可厚非,这里仅供交流. 一切都是需求驱动的 话说某天我在网上猎奇的时候无意间发现这么一款神奇的谷歌浏览器插件:Extension ...
- chrome添加 postman扩展程序图文简介
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.无论是web前端开发 或 android.ios开发,只要涉及调用后端接口,postman这类型工具就必不可少了.相对于 ...
- MAC上postman离线安装时提示加载扩展程序出错怎么办?
目前的postman插件如果想正常使用,必须安装Postman Interceptor插件,这样才能直接使用chrome浏览器的cookie等信息,否则postman是无法完成老版本的功能的.post ...
- 使用DeviceOne实现微信小程序功能
微信小程序即将推出,还没推出就火的不行了.基于微信这个巨大平台,小程序必然能有巨大成功.不过它并不能完全取代App,该开发App还得开发.如果我们自己想实现一个基于自己的APP包含类似微信的小程序功能 ...
随机推荐
- python使用pika链接rabbitmq Connection reset by peer 解决办法
记录一下, 最近在用机器学习打算做一个Rest API, 数据存入mongo,任务采用消息队列,rabbitmq 由于引擎采用python编写,所以WEB也直接打算用python编写了,比较省事. W ...
- Android 4 学习(14):Internet Resources
参考<Professional Android 4 Development> 使用Internet资源 打开URI String myFeed = getString(R.string.m ...
- delphi 原生 ADODB.recordset
ADODB.recordset ..\source\rtl\win\Winapi.ADOInt.pas..\17.0\OCX\Servers\ADODB2010.pasCLASS_Recordset: ...
- 在Linux-PC上建立kdump调试环境
kdump就是kernel dump的简称,它是从DDR中直接获取的linux内核数据(系统代码/数据).分析kdump是定位内核panic问题的有效手段之一,同时,通过kdump研究内核数据结构,也 ...
- MFC小程序
1.将菜单栏归零,工具栏放在窗口低部,加载自己新建的工具栏 CMainFrame::OnCreate()函数中 this->SetMenu(0); 2.将窗口初始化为最大化 APP类中:m_pM ...
- Oracle 环境下 GoldenGate 集成抽取(Integrated Capture)模式与传统抽取模式(Classic Capture)间的切换
检查抽取进程模式 在 GGSCI 环境下,执行类似如下语句查看特定进程的状态. GGSCI> info <Group_Name> 其中,<Group_Name> 为进程名 ...
- const与指针的纠缠
当使用带有const的指针时其实有两种意思.一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容. 先说指向const的指针,它的意思是指针指向的内容是不能被修改的.它有两种写法. ...
- 简单tarjan》一道裸题(BZOJ1051)(easy)
这是一道水题,实际考察的是你会不会写强连通分量...(在BZOJ上又水了一道题) Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B ...
- AOP基本概念、AOP底层实现原理、AOP经典应用【事务管理、异常日志处理、方法审计】
1 什么是AOP AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件 ...
- Gnu C API使用指南
1)posix_fadvise http://blog.yufeng.info/archives/1917 2)fts系列 http://www.cnblogs.com/patientAndPersi ...