分享背景:
当项目非常多时随之而来的配置文件也会变得非常多,而且越发的复杂,有时候上线后才知道线上环境的配置文件不对,那么我们如何提前来检测到配置文件有改动了,本文将给你提供一个可以检测的手段。代码如下所示
1.导入包并指定目录
2.初始化配置文件的md5值并入库
3.检测新配置文件的md5值是否变化
4.文件进行md5加密处理
5.遍历指定目录下文件
6.代码运行入口
总结:
我们首先要确定我们要检测的配置文件,然后将它的当前的md5值进行初始化到数据库,当下次发布前我们可以针对性的进行一次检测,发现有变更就会提示出来,这样就可以做到提前知晓变更的配置文件,再人工介入进行重点检查。
在实现iOS项目的自动打包工程中,我们需要配置好工程的证书文件信息,为了能够自动的根据bundle id来设置不同的profile文件,我们可以通过脚本文件来修改工程的projext.pbxproj文件帮助我们进行自动设置。
1. Project.pbxproj
Xcode项目中的xxx.xcodeproj其实是一个文件夹,右键单击xxx.xcodeproj,显示包内容:
Project.pbxproj的解析
关于这个配置文件的结构,请参考 project.pbxproj,最熟悉的”陌生人 (http://www.olinone.com/?p=215),解析该文件可以使用现有的解析工具mod-pbxproj,该工具是一个python的脚本。其github地址为: https://github.com/kronenthaler/mod-pbxproj 。
为了修改不同taget的profile,我们需要知道这些配置在文件中的具体位置,不难发现:
我们的目标是为不同的bundle id设置不同的profile,所以只需要找到不同target的XCBuildConfiguration,修改其中PROVISIONING_PROFILE的值即可。通过分析project.pbxproj文件结构,你会发现其找到这些target的buildSettings的路径如下:
rootObject=>PBXNativeTarget=>XCConfigurationList=>XCBuildConfiguration。
XCBuildConfiguration会有Debug和Release两个版本,这里我们以修改Release版本的为例进行说明。
2. Python脚本修改profile
需要在工程目录下配置如下脚本文件,通过从json文件中读取配置信息,然后根据不同的bundle id来设置不同的profile文件和其他字段信息。其中xcode_configurator_profile.py为修改profile的脚本文件,profile.json为配置的证书信息。demo如下图所示:
首先在profile.json文件中配置好bundle id和对应的profile文件,如下如所示:
然后在工程目录下执行xcode_configurator_profile.py:
检查profile修改结果:
如果设置了以后有任何问题, 你可以在对应的xxx.xcodeproject下找到对应的备份。
Python读取ini配置需要用到ConfigParser包,所以要先加载它。import
configparser
之后我们需要载入
配置文件
。
config=configparser.ConfigParser()
#IpConfig.ini可以是一个不存在的文件,意味着准备新建配置文件。
config.read("IpConfig.ini")