利用xcodeproj修改xcode工程文件
2017-01-16 17:55
531 查看
文章主要介绍如何用命令行给xcode工程添加文件引用,当然,如果大伙觉得直接使用xcode添加文件更好,那接下来的内容就可以不用看了。
众所周知,xcode的工程文件是一堆让人无法理解的字符串,其实它也是有其规则的,我们可以使用xcodeproj这个插件来实现用代码修改xcode的工程文件。
首先:电脑安装ruby,且要求是2.2.2以上的版本,操作系统自带的是2.0的版本
安装步骤:
1、终端输入下面命令,目的是安装rvm,然后通过rvm来安装和管理ruby
curl -L get.rvm.io | bash -s stable
2、使用下面的命令载入rvm
source ~/.rvm/scripts/rvm
3、使用下面命令查看安装好的版本
rvm -v
4、安装ruby,版本号可以自己选择
rvm install 2.1.4
然后,安装xcodeproj插件,cocoapods就是利用这个插件来修改xcode工程文件的
安装步骤:
1、输入下面的命令即可安装,之后可以在终端中输入xcodeproj来检查是否安装成功
[sudo] gem install xcodeproj
到这里,插件的安装基本已经结束了,接下来的就是介绍如何用代码来修改xcodeproj文件
添加文件引用:
使用文本编辑器,保存下面ruby代码到名称为aa.rb的文件中。代码中的testXcodeproj为示例工程的名称,newGroup为新添加文件在xcode中的Group名称
在终端中cd到rb文件的目录了,然后用下面明令运行rb文件,如果正常显示了,则表示xcode工程修改成功,可以用xcode打开工程查看
ruby aa.rb
下面代码为删除引用的ruby代码,操作步骤跟添加一致,比较粗糙,大伙看着自己修改
祝大家成功实现!
众所周知,xcode的工程文件是一堆让人无法理解的字符串,其实它也是有其规则的,我们可以使用xcodeproj这个插件来实现用代码修改xcode的工程文件。
首先:电脑安装ruby,且要求是2.2.2以上的版本,操作系统自带的是2.0的版本
安装步骤:
1、终端输入下面命令,目的是安装rvm,然后通过rvm来安装和管理ruby
curl -L get.rvm.io | bash -s stable
2、使用下面的命令载入rvm
source ~/.rvm/scripts/rvm
3、使用下面命令查看安装好的版本
rvm -v
4、安装ruby,版本号可以自己选择
rvm install 2.1.4
然后,安装xcodeproj插件,cocoapods就是利用这个插件来修改xcode工程文件的
安装步骤:
1、输入下面的命令即可安装,之后可以在终端中输入xcodeproj来检查是否安装成功
[sudo] gem install xcodeproj
到这里,插件的安装基本已经结束了,接下来的就是介绍如何用代码来修改xcodeproj文件
添加文件引用:
使用文本编辑器,保存下面ruby代码到名称为aa.rb的文件中。代码中的testXcodeproj为示例工程的名称,newGroup为新添加文件在xcode中的Group名称
require 'xcodeproj' project_path = '' # 工程的全路径 project = Xcodeproj::Project.open(project_path) # 1、显示所有的target project.targets.each do |target| puts target.name end # 增加新的文件到工程中 target = project.targets.first group = project.main_group.find_subpath(File.join('testXcodeproj','newGroup'), true) group.set_source_tree('SOURCE_ROOT') # 获取全部的文件引用 file_ref_list = target.source_build_phase.files_references # 设置文件引用是否存在标识 file_ref_mark = false # 检测需要添加的文件是否存在 for file_ref_temp in file_ref_list puts file_ref_temp.path.to_s if file_ref_temp.path.to_s.end_with?('ViewController1.m') then file_ref_mark = true end end if !file_ref_mark then file_ref = group.new_reference('ViewController1.h文件路径') target.add_file_references([file_ref]) else puts '文件引用已存在' end if !file_ref_mark then file_ref = group.new_reference('ViewController1.m文件路径') target.add_file_references([file_ref]) else puts '文件引用已存在' end project.save puts '文件添加完成'
在终端中cd到rb文件的目录了,然后用下面明令运行rb文件,如果正常显示了,则表示xcode工程修改成功,可以用xcode打开工程查看
ruby aa.rb
下面代码为删除引用的ruby代码,操作步骤跟添加一致,比较粗糙,大伙看着自己修改
require 'xcodeproj' project_path = '' # 工程的全路径 project = Xcodeproj::Project.open(project_path) # 1、显示所有的target project.targets.each do |target| puts target.name end # 从工程中删除文件 target = project.targets.first group = project.main_group.find_subpath(File.join('testXcodeproj','newGroup'), true) group.set_source_tree('SOURCE_ROOT') def removeBuildPhaseFilesRecursively(aTarget, aGroup) aGroup.files.each do |file| if file.real_path.to_s.end_with?(".m", ".mm", ".cpp") then aTarget.source_build_phase.remove_file_reference(file) elsif file.real_path.to_s.end_with?(".plist") then aTarget.resources_build_phase.remove_file_reference(file) end end aGroup.groups.each do |group| removeBuildPhaseFilesRecursively(aTarget, group) end end if !group.empty? then removeBuildPhaseFilesRecursively(target, group) group.clear() group.remove_from_project end project.save
祝大家成功实现!
相关文章推荐
- 移动端app 文档交接模版
- Java-springMVC框架:springMVC取参数值、把值放入作用域方法
- 如何实现数据库批量插入oracle11g
- 1951: [Sdoi2010]古代猪文
- 《实战教学笔记》学习效果月考(第一次)
- [kuangbin带你飞]专题六 最小生成树 C
- CentOS7中Docker文件挂载,容器中没有执行权限
- AOP知识整理
- 正则表达式函数实例详解(及PHP字符串处理函数)
- Jtester之TestNG:@Listener注解
- 机智云、凯立德、赛亿联袂打造物联网LBS生态平台
- 关于C10K、异步回调、协程、同步阻塞
- Signalr 实现心跳包
- 单例模式的线程安全
- OpenResty Con 2016 见闻杂记
- top batch output
- MySQL分区和分表
- 对象序列化
- List-ArrayList 与LinkedList、Vector以及迭代器详解
- iOS开发UINavigation——导航控制器UINavigationController