Sloppy's Blog

利用xcodeproj实现IOS项目的自动生成

背景

做Cocos2d-x的游戏开发者都知道,大部分开发团队都是Windows VS开发项目(壕团队除外),我们在编译Android项目时,都需要重新生成jni/Android.mk文件,由于该文件是一个简单的文本文件,我们可以随便通过任何脚本,譬如Python,在每次编译前根据模板MK文件生成Android.mk文件,很方便,然后在自动化编译IOS项目时,我们就有点麻烦了,每次都需要重新配置下xcodeproj的项目文件,然后最后发布可能还需要发布证书。之前问了许多朋友都是由某个程序员进行发布前的手动添加,太麻烦,而且不智能,容易出错。那有没有象Android一样的方法呢?答案肯定是有了。经过一番摸索,由于之前没有接触过Ruby,而比较成熟的就是CocoaPods的xcodeproj开发项目,该项目是ruby开发。

进行

下面进行一系统软件的安装:

  • 安装ruby
    https://www.ruby-lang.org/ 当然mac还可以brew install ruby这样安装
  • 安装xcodeproj(可能需要sudo)
    gem install xcodeproj
  • 由于用到ini配置文件,安装inifile
    gem install inifile

代码尝试

关键代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
project = Xcodeproj::Project.open($PROJECT_PATH)
project.targets.each do |target|
if target.name==$TARGET_NAME
group = project.main_group
group.set_source_tree('SOURCE_ROOT')
#get_file_list(CLASS_PATH)
generateSubGroup(target,group,$CLASS_PATH,"#{$SOURCE_FOLDER_NAME}","../#{$SOURCE_FOLDER_NAME}/")
#sdkGroup = group.find_subpath(File.join('sdk','ios'), true)
#file_ref = sdkGroup.new_reference("../Classes/sdk/SDK.cpp")
#file_ref = sdkGroup.new_reference("../Classes/sdk/SDK.hpp")
#target.add_file_references([file_ref])
end
end
project.save()

代码参考:点击下载