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
doproductName=${line%%=*}if [ "${PRODUCTNAME}" == "${productName}" ]; thenkeyString=${line#*=}echo $productName   $keyString#替换 PushConfig.plist 文件中 appkey的值sed -i '' "/<key>APP_KEY<\/key>/{ n; s/\(<string>\).*\(<\/string>\)/\1${keyString}\2/;}" ${PushConfig_FILE_PATH}exit 0fi
done

就是这样的。

iOS 脚本修改plist文件相关推荐

  1. iOS开发中plist文件的创建与简单读取(一)

    iOS开发中plist文件的创建与简单读取(一) 1. 创建一个工程 2. 新建一个plist文件(command+N快捷键或者新建文件 如图下的红色圈) 3. 红色圈是plist的文件名,这里默认为 ...

  2. objective 修改plist文件

    修改plist文件 首先必须保证plist文件存在于Library 或者Documents中  建议把plist文件放在Library/Caches中 (问过高手,放在这两个文件中有啥区别,高手说 苹 ...

  3. 自己服务器上部署APP应用(安卓和IOS版),下载页面的代码,以及IOS的xxx.plist文件的建立

    第一 先安装nginx 第二 修改nginx配置 # vim /usr/local/nginx/conf/nginx.conf#配置用户和用户组 #user nobody; #工作进程数,建议设置为C ...

  4. IOS之Info.plist文件简介

    http://my.oschina.net/hmj/blog/104196 元信息简介 为了提供更好的用户体验,IOS 和 OS X的每个app或bundle都依赖于特殊的元信息(meta Infor ...

  5. Reveal分析IOS界面,plist文件读取

    Reveal分析IOS界面,需要得到app的 softwareVersionBundleId上传到iphone中 , 而IOS8的iTunesMetadata.plist (设备路径/var/mobi ...

  6. iOS学习之 plist文件的读写

    在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件.属性列表文件的扩展名为.plist ...

  7. python脚本修改hosts文件

    记一次使用python脚本来修改hosts文件,由于公司服务器需要换ip地址,服务器里都是Linux系统,而hosts文件中有些解析的ip,手动一台一台的解析太麻烦,就写了这个脚本.本来以为感觉很简单 ...

  8. iOS开发中plist文件的创建与简单读取

    1. 创建一个工程 2. 新建一个plist文件(command+N快捷键或者新建文件 如图下的红色圈) 3. 红色圈是plist的文件名,这里默认为Property List,点击创建就可以了 4 ...

  9. iOS 技术 info.plist文件的常用配置总结

    一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...

最新文章

  1. 域渗透提权之MS14-068
  2. 吊打 ThreadLocal,谈谈FastThreadLocal为啥能这么快?
  3. mysql select 查询选后5个_mysql 查询select语句汇总
  4. php导入csv文件,php实现CSV文件导入和导出
  5. IDEA启动项目报错:Error:(1, 1) java: 非法字符: '\ufeff'
  6. Spring| BeanCurrentlyInCreationException: Error creating bean with name ‘‘xxx“
  7. 【华为云技术分享】竞享实例:让你尽享云服务的“鱼”和“熊掌”
  8. html与js简单小游戏,JS实现简单贪吃蛇小游戏
  9. 《R in Action》读书笔记(3) 数据变换
  10. Python(十二):异常
  11. 读书笔记 大前研一《专业主义》
  12. 处理url时服务器发生错误,请和系统管理员联系,服务器处理URL时出错。请与系统管理员联系的解决方案...
  13. Django笔记十一之外键查询优化select_related和prefetch_related
  14. 凡诺cms2.1文件包含漏洞分析
  15. Hanoi塔问题图文详解
  16. js判断两个时间是否超过一年
  17. OA系统性能测试报告
  18. windows10命令行窗口cmd路径切换
  19. Tensorflow2(3)
  20. 都是北方蛮族,为什么欧洲的能开创现代文明,东亚的却只能“能歌善舞”?

热门文章

  1. 【圣诞活动】来自神秘人的挑战书!重大线索出炉!
  2. Windows10开启Linux子系统WSL
  3. Meta的LLama模型非官方下载方法
  4. Go编程模式之error处理
  5. 国产低功耗Soc蓝牙语音遥控器芯片HS6621
  6. python05:Python 3.x中format函数遇见的错误
  7. Dev-C++:同时编译多个文件
  8. 数据库学习笔记 --- 触发器原理学习
  9. 麦块服务器正版登,我的世界1.7.2服务器麦块
  10. 跟领导谈话需注意什么_设计师必须注意的10个有趣的谈话