背景:
- 公用资源管理是为后续做模块化做铺垫
- 比如网络图片默认占位图、公用组件图标、可能每个模块都需要用到
- 为了方便的管理和替换资源
由于公用的图片不多,根据我的项目实际情况,我这里把公用资源都放在Themekit中
image.pngSTThemeKit => 制作的本地主题 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'
网友评论