多Target、组件化实践

作者: qc_zyl | 来源:发表于2017-07-07 16:39 被阅读102次

前言

因为公司项目的特性:每个城市对应一个APP,每个APP又有着或多或少的区别;

所以开发人员面临的问题是:开发多个相似APP。

解决方案

先说一下之前的解决方案:

将所有APP整合为一个大的项目,通过修改配置文件,调用不同APP所需代码。

这样确实是解决了问题,但是方案肯定是不好的。

这样做的缺点:

  1. 任何一个APP都需要加载所有APP的文件,资源
  2. 每次查看不同城市的APP都需要修改配置文件,同时还要修改服务器地址,很容易发生遗漏
  3. 所有APP的icon,名称无法单独设置

下面是本文的解决方案:

  1. 通过Target管理不同城市的APP

  2. 通过cocoapods私有库将项目组件化

    大家可使用cocoapods私有库制作脚本进行私有库制作。更多cocoapods私有库制作请点击

  3. 不同的Target导入不同的cocoapods私有仓库

project 'SXC.xcodeproj'

platform :ios, '8.0'
use_frameworks!

pod 'QCRouter', :path => '../QCRouter'

target 'SXC_GX' do
  # Pods for SXC-GX
  pod 'SSQ/GX', :path => '../SSQ'
  
end

target 'SXC_HLJ' do
  # Pods for SXC-HLJ
  pod 'SSQ/HLJ', :path => '../SSQ'
  
end

target 'SXC_NX' do
  # Pods for SXC-NX
  pod 'SSQ/NX', :path => '../SSQ'
  
end

target 'SXC_TJ' do
  # Pods for SXC-TJ
  pod 'SSQ/TJ', :path => '../SSQ'

end

target 'SXC_ZJ' do
  # Pods for SXC-ZJ
  pod 'SSQ/ZJ', :path => '../SSQ'

end

注意事项

  1. 多Target使用预定义宏问题

    由于本项目为Swift项目,所以如下使用预定义宏

    #if SXC_TJ
        let scheme = "sxc-tj"
    #elseif SXC_NX
        let scheme = "sxc-nx"
    #elseif SXC_GX
        let scheme = "sxc-gx"
    #elseif SXC_HLJ
        let scheme = "sxc-hlj"
    #elseif SXC_ZJ
        let scheme = "sxc-zj"
    #else
        let scheme = ""
    #endif
    
  2. 组件化的话,使用了自己开发的QCRouter来进行解耦,思路不知道对不对,大家有什么好的建议可以提一下。

  3. 创建类的时候要注意选择正确的Target


本文demo地址

参考文章

  1. iOS项目中多target的配置
  2. CocoaPods 私有仓库的创建(超详细)

相关文章

  • 多Target、组件化实践

    前言 因为公司项目的特性:每个城市对应一个APP,每个APP又有着或多或少的区别; 所以开发人员面临的问题是:开发...

  • 组件化实践《一》创建私有pod

    0x01 前言 本次组件化实践的方式来自于casaty组件化方案,该方案是基于target-action模式和Me...

  • iOS组件化实践(基于CocoaPods)

    iOS组件化实践(基于CocoaPods) iOS组件化实践(基于CocoaPods)

  • iOS 组件化2

    组件化2 本文主要讲组件化之间是如何通讯的 组件化通讯方案 1、URL路由 2、target-action 3、p...

  • 组件化实践详解(二)

    在上一篇文章《组件化实践详解(一)》中我们介绍了组件化实践的目标和实践步骤,本文继续说说关于组件化实践遇到的问题及...

  • 蜂鸟商家版 iOS 组件化 / 模块化实践总结

    蜂鸟商家版 iOS 组件化 / 模块化实践总结 蜂鸟商家版 iOS 组件化 / 模块化实践总结

  • ios 组件化

    参考 iOS 组件化实践《二》基于现有项目拆分组件化实践 在现有工程中实施基于CTMediator的组件化方案 i...

  • 组件化的几个方案对比

    组件化(一) CTMediator 设计模式:中介(Mediator)模式 + Target-Action模式 ...

  • 组件化方案

    组件化方案引用 在现有工程中实施基于CTMediator的组件化方案 iOS组件化实践(一):简介 iOS组件化实...

  • Target-action 组件化demo

    组件化 组件化就是将模块独立开发,建立pod仓库,通过引入仓库,利用target-action调用模块内的功能。 ...

网友评论

    本文标题:多Target、组件化实践

    本文链接:https://www.haomeiwen.com/subject/offrhxtx.html