`
dcj3sjt126com
  • 浏览: 1837174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何在一个设备上安装一个App的两个不同版本

    博客分类:
  • IOS
 
阅读更多

最近干了件蠢事,事情是这样的,我们App有2套图标,一套是测试版图标用于发布OTA的内部测试版,一套是正式版用于发布到AppStore,每次打包,我都会检查图标,结果上次粗心搞错了,把测试版的图标打包发布到AppStore了,发现之后想死的心都有了。马上修改了一版,申请紧急审核,结果你可能猜到了,没有通过。这是个很大的教训,像这一类的手动来改都不靠谱,毕竟有忘掉的概率存在,能不能自动处理呢? 在这篇Blog上找到了答案,我大概的翻译一下。

iOS系统区分两个App是否相同的根据是App的Bundle ID是否相同,在安装一个程序时,系统是根据Bundle ID来判断是全新安装还是升级。那想在一个系统上安装一个App的两个不同版本,其实是需要两个不同的Bundle ID。就是说正式版一个Bundle ID,OTA版本/Debug版本用一个Bundle ID,假设AppStore版的ID是com.mycompany.myapp,OTA版的是com.mycompany.myapp-beta。同时为了直观的区分两个App,一般也会使用两套图标, 假设AppStore版的图标名称为Icon.png, Icon@2x.png, OTA版是Icon-beta.png, Icon-beta@2x.png. 那如果做到自动化的配置呢?答案在Build设置(Build Setting)里。

默认Xcode会提供2个Build配置(Build Configuration):DebugRelease,我们再加一个AppStore,这样来用:

  • Debug: 用来直接连机调试
  • Release:用于发布OTA的测试版
  • AppStore:用户提交到AppStore

下一步我们来在项目的Build Setting里添加两个自定义的设置,一个命名为BUNDLE_IDENTIFIER, 另一个命名为APP_ICON_NAME,如下图这样设置:

add_user_define_setting

这两个值分别定义个Bundle ID和图标的名称,下一步需要在Info.plist(名字格式是YourAppName-Info.plist)中修改BundleId 和Icon图标名称,把bundle identifier值设置为${BUNDLE_IDENTIFIER},把图标值设置为${APP_ICON_NAME}@2x.png 和 ${APP_ICON_NAME}.png,如果提供了72px和144px等图标也类似这样。

${xxx}语法是预处理语法,都会被替换为xxx对应的真实值,在刚才的设置的基础上,在Debug的时候,实际的Bundle ID会替换为com.mycompany.myapp-beta,图标对应的为Icon-beta.pngIcon-beta@2x.png,Cooool

实际上我自己实践的时候,新建了一个叫myApp-AppStoreSchema,在不同的Schema里的Archive里是用不同的Build配置,myApp-AppStore的Schema里Archive的Build配置为”AppStore”,原来的myApp这个Schema的Build配置为Release,这样当我想发布OTA的时候,选择myApp-AppStore这个Schema,然后Archive,就能使用AppStore的自定义的配置来打包,用来提交AppStore;当选择myApp这个Schema的时候,Archive得到的是使用Release的自定义配置来打包的,用来上传到OTA测试。整个过程是自动化的,包括BundleId和图标文件的名称,如果你有别的类似的需要,也可以参考着来。

总之,麻麻再也不用担心我的图标会搞错了。

这篇文章编译自:How to Have Two Versions of the Same App on Your Device) ,原作者Blog上还有其他精彩的文章等你发现。

 

分享到:
评论

相关推荐

    ios判断App是否安装.

    ios判断App是否安装: 自已写的A,B两个程序。用该方法可以使A程序判断B程序是否在ios设备中有没有安装。 不能判断任意程序是否安装。

    基于NFC技术的设备巡检App设计与实现.pdf

    本系统主要由两个组件构成:服务器端和终端。终端在多数应用场景下要与服务器联网,使得数据可以同步到服务器上。整个系统所需的组件有:服务器主机、NFC终端、一个联网设备和NFC便签。 二、App设计与实现 1. 核心...

    手机模拟BLE设备发送广播App

    这两个App可以完成2台Android手机,通过BLE4.0进行通信,可以发送和接收数据。 其中一台Android手机T模拟发出广播,作为BLE设备(周边设备),这个BLE设备在生产环境中就是我们用到的气体检测传感器、智能手环、...

    蓝牙BLE4.0接收广播App

    这两个App可以完成2台Android手机,通过BLE4.0进行通信,可以发送和接收数据。 其中一台Android手机T模拟发出广播,作为BLE设备(周边设备),这个BLE设备在生产环境中就是我们用到的气体检测传感器、智能手环、...

    app store上传材料须知

    关键字是应用程序的搜索关键字,需要提供至少一个关键字,以便用户在 App Store 中能够搜索到应用程序。 5. 应用 Icon 应用 Icon 是应用程序的图标,需要提供一个尺寸为 1024*1024 的 PNG 格式的图片。 6. 应用...

    安卓一键锁屏APP(提供源代码)

    这个应用不需要什么权限,只要在“安全”(安卓差异多,差不多包含这两个字样的地方)找到“设备管理器”、激活(或者启用)这个app,就可以点击黑屏啦。 源代码也在资源里有下载。 1.1版本修复锁屏前界面闪现问题。...

    基于阿里云物联网平台的Android即时聊天app源码

    本例程开发了一种基本的即时聊天app,本app只提供了基本实现方法,只具备两个人聊天的功能,添加多个好友、建群的功能后续会陆续开发,敬请关注。用到的基本技巧有:物联网在阿里云物联网平台设备接入、订阅、发布、...

    刷机包定制 App2zip Pro v1.04

    刷机有风险,不能保证支持所有设备,所以想使用的用户可以在安装之后进行测试,选择一个不经常使用的软件进行备份,然后删除掉,再进入recovery模式将它刷回来,这样就能确认自己的设备是否可以使用这个工具。

    基于Android的校园网络故障报修APP的设计.pdf

    Android系统是一个以Linux为基础的开源移动设备操作系统,主要应用于智能手机和平板电脑。Android系统作为手机应用的开发平台主要有以下特点:应用框架可以重复使用、针对移动终端优化的Dalvik虚拟机、内嵌了基于...

    基于Android的智能家居App的设计与实现.pdf

    设备连接可以将不同房间之中的设备进行连接,将数据信息上传到App数据库之中,以便发布有针对性的指令。场所选定可以结合用户家中的实时情况,向智能家居App数据库之中进行信息传送。添加遥控可以让用户实现对电气...

    基于Android的寻人定位APP——爱守护·老人.pdf

    该APP名称为"爱守护·老人",分为主控端和被控端两个部分。主控端安装在儿女的手机上,用于监控老人的位置;被控端安装在老人的手机上,用于发送位置信息。 Android系统是基于Linux的自由、开放源代码的操作系统,...

    输电线路巡检移动APP系统的应用探讨.pdf

    在输电重点区段管理中,输电重点区段管理分为外力破坏隐患管控和树障隐患管控两个部分。其中,外力破坏重点管控模块具备针对每一个外力破坏隐患工作记录实现全过程治理流程纪录。现场人员能在移动作业APP内填写外力...

    Web APP技术框架下“大学校园助手”APP的设计与实现.pdf

    界面内容有两种数据类型:需要及时更新与管理的数据(存放在服务器端的数据库中)和短时间不需要进行调整的数据(存放在本地数据库或者设备上)。 模块功能设计 该APP主要面向新生及预报考的人群,各模块功能应...

    交互式儿童教育APP产品设计探析.pdf

    笔者从两个方面来阐述当前交互式儿童教育APP的设计。 首先,儿童有特定的心理特点和生理特点,如对色彩敏感、善于模仿、专注时间短等,这些特点的存在,使得信息化教育的效果更好。另外,中国移动设备普及率连...

    Smart个人所得税计算器 完全免费安卓版 之 App截图及安装包APK

    每类的个税试算,对应于App中的一个Tab页签。 6.本款 App 简洁易用,短小精悍。 相对于某些 App 动辄 数 MB 的大块头,本款App 所需手机内存空间非常小,安装包只有区区 166 KB。是一款不可或缺的实用型、财务类...

    Snipper App 1.4.1 代码片段管理器

    带有语法高亮显示的开发编辑器,支持多种编程语言,不同的存储类型,Snipper App 还包括明暗两个主题界面。Snipper以一种支持多种存储的方式设计,支持的存储类型将在下一个版本中得到扩展。目前支持本地存储,...

    使用手机APP实现FTU人机交互界面设计.pdf

    该解决方案主要包括两个部分:一是FTU上的蓝牙通信模块,二是智能手机上的专门APP小程序。 FTU上的蓝牙通信模块是基于蓝牙技术的,使用蓝牙技术可以将智能手机、PDA手持终端、笔记本电脑等便于携带的智能设备与...

    轻松实现微信中扫二维码直接下载APP(整合IOS和安卓).docx

    集成好的接口会自动判断设备,自动唤醒外部浏览器,用户轻松实现微信跳转外部浏览器直接下载APP自动化,很大程度上提升了用户体验,提高了转化率,降低了推广的成本,下面为大家介绍一种实现方法另外提供代码供大家...

    Android2个App之间跳转

    Android2个App之间跳转,内涵2个Android stutio项目。

    Linux下的IMX6ULL-开发板的第一个APP和驱动实验(三)

    在Linux中,应用程序(App)和驱动程序(Driver)是两个不同的概念和角色。 应用程序是运行在操作系统上的用户级程序,通过操作系统提供的API(应用程序接口)来实现特定的功能。应用程序可以包括各种类型的软件,...

Global site tag (gtag.js) - Google Analytics