python实现动态配置xcode工程

1,327 阅读1分钟

写在前面

最近有需求需要用动态配置xcode的工程(比如添加文件、添加framework、修改plist、修改build setting),所以研究了一下python,想通过python脚本实现自动化

环境安装

首先第一步肯定是安装python开发环境,一般mac os默认安装python。但是一般是python2,大家可以安装最新的python3。安装方法可以在网上寻找,本文不做详细解释

python2.png 终端输入python3,就可以查看版本号:

python3.png

然后就是下载PyCharm的开发工具下载地址

安装三方库

python要想便捷的操作xcode工程,可以安装pbxproj

安装方法:

  • 通过命令:pip install pbxproj
  • 通过PyCharm,如下图: 第一步:

第一步.png 第二步:

第二步.png 第三步:

第三步.png

pbxproj的使用

第一步导入,让后通过xcodeProject实例化工程

导入.png

编辑plist文件

修改plist还要导入plistlib


# 获取plist路径
plist_path = "/Users/xxx/Desktop/xxx/iOSApp/iOSApp/Info.plist"

# 获取plist文件数据
with open(file=plist_path, mode="rb") as fp:
    pl = plistlib.load(fp=fp)
bundleID = "com.xxx.xxxx"

# 修改bundle id 版本号,和build版本号
pl["CFBundleIdentifier"] = bundleID
pl["CFBundleVersion"] = "2"  # build版本
pl["CFBundleShortVersionString"] = "2.0"  # appstore 显示版本

# 保存plist文件信息
with open(file=plist_path, mode="wb") as fp:
    plistlib.dump(pl, fp)

#保存修改
project.save()

添加系统Framework


# 添加系统库
def add_systemFrameworks(project, frameworks):
    frameworksGroup = project.get_or_create_group("Frameworks")
    frameworkOptions = FileOptions(embed_framework=False)
    for frameworkName in frameworks:
        if len(project.get_files_by_name(name=frameworkName)) < 1:
            project.add_file(path="System/Library/Frameworks/" + frameworkName,
                             parent=frameworksGroup,
                             tree=TreeType.SDKROOT,
                             force=False,
                             file_options=frameworkOptions)
    print("add_systemFrameworks:", frameworks)
 
 

#调用
systemFrameWorks = ["CoreImage.framework","CoreMedia.framework"]
add_systemFrameworks(project,systemFrameWorks)

添加编译参数


other_links = ["-ObjC", "-l"c++"", "-l"c++abi"", "-l"sqlite3"", "-l"z""]

for flag in other_links:
    project.add_other_ldflags(flag)

总结

自己最近也是做python脚本实现xcode自动化相关的东西,所以研究了一下,以博客的形式记录下来.