美文网首页
模块化-ThemeKit (二)Pods公用资源管理

模块化-ThemeKit (二)Pods公用资源管理

作者: HH思無邪 | 来源:发表于2021-12-15 16:42 被阅读0次

    背景:

    1. 公用资源管理是为后续做模块化做铺垫
    2. 比如网络图片默认占位图、公用组件图标、可能每个模块都需要用到
    3. 为了方便的管理和替换资源

    由于公用的图片不多,根据我的项目实际情况,我这里把公用资源都放在Themekit中

    image.png

    STThemeKit => 制作的本地主题 pods库
    common.xcassets => 项目公用的资源文件
    ProjectPlaceholder=> 不同项目个性化的网络图片占位图

    如果到这里就完了,你会打我吗?
    我想你们都是善良切文明礼貌地,定不会打死我的。

    解惑环节

    一、如何实现每个项目能个性化配置图片资源

    重点:利用pod 的环境变量 ENV

    • ENV这家伙具体咋整呢?
      看过来
    # 根据环境变量加载不同项目资源
    if ENV['PRODUCT_TYPE'] == 'unicom_store' #联通智慧厅店
      puts 'unicom_store - ThemeKit'
      s.subspec 'ZHTD' do |sp|
        sp.source_files = 'STThemeKit/ZHTD'
        sp.resources = 'STThemeKit/ZHTD/*.xcassets'
      end
    else
      s.subspec 'WJYS' do |sp|
        sp.source_files = 'STThemeKit/WJYS'
      end
    end
    

    定义名叫PRODUCT_TYPE的变量

    如果多个项目,可以写个简单的shell脚本来简化执行命令
    本来每次你需要在终端执行这样的命令

    env PRODUCT_TYPE="unicom_store"  pod install --no-repo-update
    

    变量不多其实也还好
    优雅一点就直接执行shell 脚本就行了

    CustomerId=$1
    echo "<<目标CustomerId: ${CustomerId}"
    #当前路径
    project_path=$(pwd)/./
    echo "$project_path"
    
    Product="unicom_store"
    EnvName="unicom_store"
    if [ $CustomerId == 1000 ]; then
    #智慧厅店
        Product="unicom_store"
        EnvName="unicom_store"
    elif [ $CustomerId == 1001 ]; then
        Product="BlueBird_CN"
        EnvName="bluebird"
    else
        Product="unicom_store"
        EnvName="unicom_store"
    fi
    
    cd $project_path
    env PRODUCT_TYPE=$EnvName  pod install --no-repo-update
    

    脚本有多余的代码,这里就懒得删了

    二、其它模块如何用themekit中的资源呢?

    简单:就是依赖这个库就可以了
    实现:
    在 .podspec中加上

    s.dependency  'STThemeKit'
    

    相关文章

      网友评论

          本文标题:模块化-ThemeKit (二)Pods公用资源管理

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