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下找到对应的备份。
1. 打开项目文件夹,将里面所有的文件复制到一个新的文件夹中去;2. 打开新得到的文件夹,里面有TableViewTest文件夹和TableViewTest.xcodeproj。现在更改TableViewTest文件夹名为TableView,然后在更改名称之后的Table文件夹中把TabelViewTest.Info.plist和TableViewTest-Prefix.pch两个文件名称改掉,即将TableViewTest——>Table。
3. 用文本编辑器打开TableView-Prefix.pch,将里面的TableViewTest全部替换成TableView。
5. 再选择ttttt.xcodeproj,右键选择Show package Contents,然后再用文本编辑器打开project.pbxproj,替换里面的TableViewTest为TableView。
6.打开ttttt.xcodeproj,讲下图中左边的那个项目名换成TableView,然后会出现警示框,选择Rename,再选择Enable,搞定。
7.做到这一步,其实算是改名成功了,但是有时候你会发现不能运行,不能选择模拟器,因为上面变成了My Mac 64-bit,这个也很好解决。右键单击TableView.xcodeproj,选择Show Package Contents,你会看到一个xcuserdata的文件夹,删除之。搞定!
新版本xcode11 好像没有'Per-configuration Build Products Path'([最终文件路径]
在这里可以自行添加
点击加号,输入CONFIGURATION_BUILD_DIR
方法2
首先打开项目,然后进入到你的项目目录并打开project.pbxproj文件
搜索productRefGroup关键字
cd HqMacDevStu
open HqMacDevStu.xcodeproj/project.pbxproj
search key "productRefGroup"
1
2
3
搜索结果可能有多个,每个项目的键值不一样具体看自己的
注意看productRefGroup的注释 为/* Products */ 才是我们要修改的
我的如下对应的结果
1
2
将上面 mainGroup 对应的值复制给 productRefGroup 的值 如下:
1
2
最后按 command+s 保存 project.pbxproj 文件,Xcode将自动刷新
这时候你想见的 Products 目录就出现了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)