iOS 脚本修改plist文件

iOS 项目中多个target编译前修改plist文件某个值


     目前我的项目是由一份Project多个Target多个shema构成的。因为代码逻辑都是一样的,仅仅是里面的资源和请求接口不一样,所以添加了多个Target.
       项目中用到了JPush, 但是Jpush很坑爹,有一个PushConfig.plist文件,程序运行的时候会读取此文件中的值:
       内容如下:


        最主要的 APP_KEY 因为不同的Target , APP_KEY值不一样。这样一来每次编译打包的时候,都需要更改此文件.
        太麻烦了。

       步骤如下:
                   1. 存放所有Jpush AppKey的文件,如:JPUSHKEY

                      里面存放的key按照 $PRODUCTNAME=$APPKEY这种格式排列
                    

                   2. shell 脚本一份.  modifyJPushKey.sh

                   3. 项目中点中TARGETS,右边选择 Build Phases
                    点击 + (NEW Run Script Build Phase)
                  
                    点击 Run Script 一栏,下拉展开:
                     里面可以填写脚本:
                    (我为了编写修改脚本便,脚本我拿出来单独写成一份文件。这个 Run Script 里面,就去执行这个写出来的脚本。)
                      SHELL_PATH=$PROJECT_DIR/modifyJPushKey.sh
                      chmod +x ${SHELL_PATH}
                      sh ${SHELL_PATH}

                   
         展开 Run Script 如图:
        
                    这时候可以把它(Run Script 这一栏)拖动到前面,以便脚本在合适的时候执行.
                    
附录:

                1. JPUSHKEY文件如下:  = 号左右的是 PRODUCTNAME
                                                         =号右边的就是 key值
A_HD=8031cffad446b************
B_HD=0f4f8ff111ba38************
C_HD=e2ef1b1560833******
D_HD=6531d43b365e2******
E_HD=d7c71863e1d620******
F_HD=9b7a1d141e97f0******
G_HD=13c75c512e3feaaf******


2. modifyJPushKey.sh
#!/bin/bash

#productName
PRODUCTNAME=${PRODUCT_NAME}
#JPUSHKEY文件 绝对路径
JPUSHKEY_FILE_PATH=$PROJECT_DIR/******/*******/JPUSHKEY
#PushConfig.plist文件 绝对路径
PushConfig_FILE_PATH=$PROJECT_DIR/******/******/PushConfig.plist
#存放AppKey值
keyString=""

#根据PRODUCTNAME 查找JPUSHKEY文件中 对应的keyString值
cat ${JPUSHKEY_FILE_PATH} | while read line
do
	productName=${line%%=*}

	if [ "${PRODUCTNAME}" == "${productName}" ]; then

		keyString=${line#*=}

		echo $productName   $keyString

		#替换 PushConfig.plist 文件中 appkey的值
		sed -i '' "/<key>APP_KEY<\/key>/{ n; s/\(<string>\).*\(<\/string>\)/\1${keyString}\2/;}" ${PushConfig_FILE_PATH}

		exit 0
	fi
done




就是这样的。

                  
                  

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值