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

背景:

  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公用资源管理)