新组件开发/发布的流程

原理:在build程序包之前,会根据平台提供的程序包的组件依赖信息,来other linker flags进行删减更新,仅保留依赖包的配置,这样以来,就可以针对打包平台提供的APP依赖,来生成相应的产品APP。 添加新组件的步骤

  1. 在平台注册组件名称
  2. 在主工程配置other linker flags(支持静态库/Framework)
  3. 把组件包集成到主工程中,取消在项目的勾选

创建库组件

创建一个xcode工程项目,在工程中新建组件target

代码编写完成后,编译生成新库包

集成库
  1. .a/.Framework库包拖入主项目,设置依赖类型:必需/可选
    1. 必需:默认类型,直接拖入主项目,Xcode默认会勾选中
    2. 可选: 拖入主项目中,取消默认的勾选即可
  2. 配置other linker flags
    1. 当是.a静态库时,新增-force_load静态库路径相邻的两行
    2. framework时,新增 -frameworkFramework名称相邻的两行 (测试有问题,预测需要填写framework项目路径)
加载库
  1. API类的方式加载 需要运行时,反射的方式加载
  2. 资源包的方式加载
    1. .a 静态库可以借助storyboard/xib来实现组件的装载。
    2. .Framework可以直接作为bundle资源库装载,需要把库包拖入Copy bundle Resources
1
2
3
4
    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"jinher_app_IntelDecision" ofType:@"framework"];
    NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"IntelDecision" bundle:resourceBundle];
    UIViewController *ygPatrolNav = [storyboard instantiateViewControllerWithIdentifier:@"RoomListViewController"];    

资源bundle包,主要配合.a静态库使用

选择macOS平台—>Framework&Library—>Bundle,创建之后,设置为iOS平台的支持:

  1. build settings 配置:base SDK:lastest ios
  2. 建议删除plist: 删除资源库的plist文件,否则审核不通过
  3. 把资源包库包拖入Copy bundle Resources 加载资源包的方式案例:
1
2
NSBundle *bundle = [NSBundle bundleWithURL: [[NSBundle mainBundle] URLForResource:@"JHAudioPlayResources" withExtension:@"bundle"]];
NSArray *apparray= [bundle loadNibNamed:@"mycell" owner:nil options:nil];  

将组件注册到打包平台

组件配置文件ComponentInfomation.plst:在iMac编译服务器上的核心文件 结构

  1. Component Infomation:组件清单字典,其中元素即为一个组件
    1. 库配置:
      ios_payment: 组件名称,在打包平台创建功能组件时,保持一致。 libName :静态库名(可选) Resource: 静态库依赖的bundle资源库(可选) Framework: 配置framework(可选)最动态库的支持
  2. Component Dependence 暂时没有用到
  3. Filter List 所有组件名的列表清单,(组件索引,便于后台过滤组件),就是在Component Infomation新增的组件名称,需要在这里同步配置。

平台打包证书配置