博客> jenkins多工程打包
jenkins多工程打包
2019-07-18 03:04 评论:0 阅读:835 kyloMooa
ios jenkins打包

jenkins多工程打包

之前在工作中遇到一套代码(有一点点功能差异)出多个app的情况。打包的时候我们需要配置code_sign_identifier、bundle_identifier、provison_profile、以及UMeng、Jpush、环信等第三方Appkey当然还有许多其它自定义的配置,这么多项配置很容易写错并且也很麻烦。为了解决这个问题我把所有配置项都整理到了两个plist文件,分别是buildinfo.plistappconfig.plist


buildinfo.plist文件层级

buildinfo.plist

如上图所示,里面配置了许多和证书相关的项,重点说一下resource_path,该路径下存放着Images.xcassetslocalizedInfo以及appconfig.plist

使用脚本打包时,首先会拷贝resource_path路径下的上述文件到project工程中用来替换掉老的资源文件,同时code_sign_identifier、bundle_identifier、provison_profile会赋值给脚本变量。在读取appconfig.plist文件的后将所需的配置也赋给脚本变量,然后执行xcodebuild命令。

大家可能会问为什么要分为两个plist文件管理配置? 将证书配置和其它配置分离文件结构会清晰,当然也可以合并成一个plist文件。

appconfig.plist文件层级

appconfig.plist 上图的wxAppID配置重点说一下,集成微信sdk需要多处配置wxAppID,包括注册、info.plist中的url Scheme。注册微信sdk比较简单,在代码中直接读取对应的key取到value即可。打包时动态写入url Scheme要麻烦一点,下面是我写的一段脚本:

#往info.plist中添加url Scheme
echo "开始读取appConfig.plist"
APPCONFIG_PLIST_PATH=${BASE_PATH}/${PRJ_NAME}/appConfig.plist
echo "plist path = ${APPCONFIG_PLIST_PATH}"
batch_extract_plist ${APPCONFIG_PLIST_PATH} \
":wxAppID" wxAppId \
":appkey" appKey \

echo "==写入url Scheme==":${wxAppId}:${appKey}
${PLISTBUDDY} -c 'Delete :CFBundleURLTypes' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes array' $Info_path

${PLISTBUDDY} -c 'Add :CFBundleURLTypes: dict' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:0:CFBundleTypeRole string Editor' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:0:CFBundleURLName string '"$appKey" $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:0:CFBundleURLSchemes array' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:0:CFBundleURLSchemes: string '"$appKey" $Info_path

${PLISTBUDDY} -c 'Add :CFBundleURLTypes: dict' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:1:CFBundleTypeRole string Editor' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:1:CFBundleURLName string weixin' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:1:CFBundleURLSchemes array' $Info_path
${PLISTBUDDY} -c 'Add :CFBundleURLTypes:1:CFBundleURLSchemes: string '"$wxAppId" $Info_path

echo "写入成功!"

以上是我的一点jenkins打包经验@end。

收藏
0
sina weixin mail 回到顶部