mPaas iOS多开发环境切换介绍


一 背景

在iOS⼯程开发过程中,⼏乎都会遇到多环境下切换和开发的需求,iOS原⽣开发Xcode 下是⽀持多target ⼯程开发的,基于mPaaS 框架开发多target ⼯程,在mPaaS 插件下默认是不⽀持的。但对于此类⾼频通⽤场景需求,在mPaaS 框架下也是有⽅案解决的。

基于mPaaS 框架的iOS开发分两种⽅式接⼊mPaaS 框架,⽅式⼀是使⽤mPaaS 插件接⼊,⽅式⼆是使⽤ CocoaPods 接⼊。两种接⼊⽅式在mPaaS官⽹⽂档有详细介绍,参考⽂档: https://help.aliyun.com/document_detail/87352.htmlhttps://help.aliyun.com/document_detail/106682.html

二 多Target⼯程

1. 创建新的Target

选中⼯程project ⽂件下 TARGETS 新建Target(快捷键command + D)

mPaas iOS多开发环境切换介绍

复制后会在原来target基础上⽣成⼀个新的target,可以⾃定义新建target 的名字,同时会⽣成⼀个新的plist⽂件。plist⽂件的位置是在项⽬的主⽬录下,如果觉得放着不合适可以挪到某个⽂件夹下然后在引⼊到项⽬中。

mPaas iOS多开发环境切换介绍

创建完成后在可以⾃定义plist⽂件名称(推荐于target 名称⼀致),修改后需要在Build Settings 下修改Info.plist File 的路径。

2. mPaaS 插件接⼊

2.1. 导⼊配置

打开mPaaS插件 ->编辑⼯程 ->导⼊云端元数据,选中对应的target 点击选择配置⽂件,选中⾃⼰本地与之target 对应的config ⽂件,开始导⼊。导⼊后⼯程mPaaS⽂件夹下对应target ⽂件下会⽣成对应的 meta.config 文件和 yw_1222.jpg 无线保镖图片。

选中不同的target 导⼊对应的 .config 配置⽂件,重复上述步骤直⾄所有target 环境都配置完成。

mPaas iOS多开发环境切换介绍

2.2. 编辑模块

使⽤mPaaS 插件编辑⼯程添加模块,这⾥必须要选中第⼀个target,添加需要的模块,勾选copy 开始编辑。

注:因mPaaS插件默认不⽀持多target,这⾥编辑添加模块只能选中第⼀个target 为⼊⼝编辑。否则会编辑模块报错,也会导致原本导⼊的配置⽂件和⽆线保镖被删除。

mPaas iOS多开发环境切换介绍

2.3. 勾选Target Membership

  1. 在不同target 下创建的plist ⽂件、导⼊的 meta.config 和⽆线保镖,需要⼿动勾选对应的 Target Membership。

mPaas iOS多开发环境切换介绍

  1. ⼿动复制原target 下APMobileFramework 和 mPaas⽂件夹,到新建target ⽂件下,⼿动修改DTFrameworkInterface 和 MPaaSInterface 分类名字(与target 名称匹配)。
  2. 将不同target 下⽤到的m类⽂件⼿动勾选对应的 Target Membership。
  3. 将mPaaS插件导⼊的各个模块framework 全选,⼿动勾选所有的 Target Membership。

注:这⾥推荐勾选所有target 为的是保证,各个target 下⼯程编译⼀致。也可以⼿动对不同target 勾选不同framework,但是需要客户⾃⾏分清各个模块framework的依赖关系,会得不偿失。

将上述四步操作完成后,就可以正常编译、运⾏不同target 下⼯程。

3. CocoaPods 接⼊

3.1. 导⼊配置和模块

  1. 重命名下载的 .config 配置⽂件,将⽂件名中的 ios 改为 iOS 。
  2. 将重命名后的 .config 配置⽂件拷⻉到⼯程的根⽬录下(与 Podfile 同级)。
  3. 在命令⾏执⾏ pod mpaas init 命令,⾃动处理 Podfile ⽂件,并添加 pluginsource 以及 mPaaS_baseline 配置。
  4. 配置 Podfile ⽂件。

指定 mPaaS 基线,修改 mPaaS_baseline 。添加 mPaaS 组件依赖,使⽤ mPaaS_pod 。 eg: mPaaS_pod "mPaaS_Nebula" ,其中 mPaaS_Nebula 为组件名称,更多组件名称参考上述官⽹⽂档。

添加多个target 的Podfile 配置内容,参考如图:

mPaas iOS多开发环境切换介绍

  1. 执⾏ pod install 即可完成接⼊。您还可以追加 --verbose 查看详细⽇志。

3.2. 勾选 Target Membership

  1. 在不同target 下创建的plist ⽂件、导⼊的 meta.config 和⽆线保镖,需要⼿动勾选对应的 Target Membership。
  2. 将不同target 下⽤到的m类⽂件⼿动勾选对应的 Target Membership,包括pod 创建的 DTFrameworkInterface 和 MPaaSInterface 分类。

注:pod 是可以在不同 target 导⼊不同mPaaS组件模块,不同target 下重复的组件模块 CocoaPods 也只会导⼊⼀份,因此不同target 完全可以编辑相同的Podfile 内容。

将上述步操作完成后,就可以正常编译、运⾏不同target 下的⼯程。

3. 不同Target 环境的加密和公钥

3.1. ⽹关加密和公钥

在创建不同target 时已经对应⽣成了 info.plist ⽂件,正常添加mPaaS ⽹关配置的加密公钥和加密⽹关地址即可。

mPaas iOS多开发环境切换介绍

3.2. H5离线包的公钥配置

在对应target 下的DTFrameworkInterface 分类中正常添加H5的验签公钥即可,示例如下图:

mPaas iOS多开发环境切换介绍

3.3. 热修复公钥配置

因热修复的公钥需要在main⽂件中使⽤,且需要对应的公钥签名数组。这⾥推荐使⽤宏定义,分别定义各个target 环境的宏定义开关。关于如何⾃定义target 宏定义开关,⽹上有很多Target宏定义的讲解:《 iOS 创建多个Target实现多渠道打包或者环境区分》。

mPaaS热修复在main 中使⽤具体参考热修复⽂档,这⾥只是宏定义开关举例,如图:

mPaas iOS多开发环境切换介绍

三 总结

在mPaaS框架下使⽤多target 环境⼯程还有⼀些注意点:

  1. 在编译不同target 环境时注意编辑Schemes,Run 和打包Archive 对应选择⾃⼰创建的Preprocessor

Macros。

  1. 不同target 环境的公钥,包括H5离线包验签公钥和热修复验签公钥,注意区分不要混淆。
  2. 在不同target 环境切换后,注意检查各项配置,特别是上线App Store的⽣产环境配置着重检查。
上一篇:mPaaS-H5导航栏动态化修改


下一篇:mPaas H5离线包优化指南