Python脚本处理Info.plist文件
打包或生成工程项目的时候,我们常常需要给一些插件或者接入的SDK修改Info.plist文件,一些权限又或者设置等等,为了避免忘记和节省时间,我们可以结合python脚本执行处理。
1、首先安装一个plist格式处理的库
pip install plistlib
2、将Info.plist文件读入解析
plistDict = {}
with open(plistFilePath, 'rb') as fp:
plistDict = plistlib.load(fp)
3、然后直接对字典操作,例:
# 移除key
plistDict.__delitem__('UIApplicationExitsOnSuspend')
# 添加key
plistDict['NSUserTrackingUsageDescription'] = "我们需要获取你设备的广告标识,以提供更好的广告体验"
4、保存,即利用API将修改后的内容重新保存到Info.plist中即可
with open(plistFilePath, 'wb') as fp:
plistlib.dump(plistDict, fp)
附参考脚本:
#!/usr/bin/env python
# coding=utf-8
import os
import getopt,sys
import plistlib
def autoEditPlist(plistFilePath):
plistDict = {}
with open(plistFilePath, 'rb') as fp:
plistDict = plistlib.load(fp)
print("移除Plist中的UIApplicationExitsOnSuspend")
if 'UIApplicationExitsOnSuspend' in plistDict:
plistDict.__delitem__('UIApplicationExitsOnSuspend')
print("添加权限说明-广告追踪-NSUserTrackingUsageDescription")
if not ('NSUserTrackingUsageDescription' in plistDict):
plistDict['NSUserTrackingUsageDescription'] = "我们需要获取你设备的广告标识,以提供更好的广告体验"
with open(plistFilePath, 'wb') as fp:
plistlib.dump(plistDict, fp)
if __name__ == "__main__":
plistPath = None
opts, args = getopt.getopt(sys.argv[1:], "p:")
if opts.__len__()==0:
print(os.path.basename(__file__)+" 参数说明:\n-p 指定项目中的Info.plist文件路径 /path/to/Info.plist")
# 参数解析
for args in opts:
if args[0]=="-p":
plistPath = args[1]
# 执行
for args in opts:
if args[0]=="-p":
autoEditPlist(plistPath)