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)

相关文章

一文掌握怎么利用Python+Shell构建一个自动化的数据处理系统

简介:本文系统讲解了如何利用Python与Shell脚本相结合,构建一个高效、自动化的数据处理系统。文章从项目结构设计、核心功能实现到Web管理界面的搭建,详细介绍了数据采集、清洗、分析、入库和报表展...

Python脚本保护:如何守护你的代码安全

在当今数字化时代,Python因其简洁易用的特性,成为众多开发者首选的编程语言。然而,随着Python应用的广泛普及,代码安全问题也日益凸显。如何保护Python脚本,防止源代码被轻易窃取或逆向工程,...

自动化文件管理的6个Python脚本模板

文件管理是我们日常工作中常见的任务之一,Python作为一种功能强大的编程语言,可以帮助我们轻松完成这些任务。今天我们来学习6个实用的Python脚本模板,让自动化文件管理工作变得简单又高效。1. 获...

每天一个 Python 库:argparse 参数解析,轻松搞定脚本配置!

在开发 Python 脚本时,命令行参数的解析是一个常见而又重要的操作。无论是处理用户输入的文件路径,还是接受参数配置,argparse 都能轻松帮你搞定。如果你还不熟悉 argparse,本文将带你...

使用Python编写手机短信压测脚本

在现代应用中,短信验证是常见的功能之一,尤其在用户注册、密码重置等场景下。然而,随着用户量的增加,短信服务的稳定性和性能也变得至关重要。因此,对短信发送服务进行压力测试是非常必要的。本文将介绍如何使用...