Xcode工程配置 (二)

下面將2個常用的節點拿出來講一下

XCBuildConfiguration

/* Begin XCBuildConfiguration section */
        7A73A5D01FFF24A200ED0259 /* Debug */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                CODE_SIGN_IDENTITY = "iPhone Developer";
                COPY_PHASE_STRIP = NO;
                DEBUG_INFORMATION_FORMAT = dwarf;
                ENABLE_STRICT_OBJC_MSGSEND = YES;
                ENABLE_TESTABILITY = YES;
                GCC_C_LANGUAGE_STANDARD = gnu11;
                GCC_DYNAMIC_NO_PIC = NO;
                GCC_NO_COMMON_BLOCKS = YES;
                GCC_OPTIMIZATION_LEVEL = 0;
                GCC_PREPROCESSOR_DEFINITIONS = (
                    "DEBUG=1",
                    "$(inherited)",
                );
                GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
                GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
                GCC_WARN_UNDECLARED_SELECTOR = YES;
                ONLY_ACTIVE_ARCH = YES;
                SDKROOT = iphoneos;
            };
            name = Debug;
        };
        7A73A5D31FFF24A200ED0259 /* Debug */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                CODE_SIGN_STYLE = Automatic;
                DEVELOPMENT_TEAM = xxxxx;
                FRAMEWORK_SEARCH_PATHS = "";
                GCC_PREPROCESSOR_DEFINITIONS = (
                    "DEBUG=1",
                    "$(inherited)",
                    "MAINLAND=1",
                );
                HEADER_SEARCH_PATHS = "/Users/macmini2/Documents/UEWork/Channel/Common/**";
                INFOPLIST_FILE = xxx/Info.plist;
                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
                LIBRARY_SEARCH_PATHS = "/Users/macmini2/Documents/UEWork/Channel/Common/**";
                PRODUCT_BUNDLE_IDENTIFIER = com.xxxx.xxxx;
                PRODUCT_NAME = "$(TARGET_NAME)";
                TARGETED_DEVICE_FAMILY = "1,2";
            };
            name = Debug;
        };
        7A73A5D61FFF24A200ED0259 /* Debug */ = {
            isa = XCBuildConfiguration;
            buildSettings = {
                BUNDLE_LOADER = "$(TEST_HOST)";
                CODE_SIGN_STYLE = Automatic;
                DEVELOPMENT_TEAM = xxxxxxx;
                INFOPLIST_FILE = xxxx/Info.plist;
                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
                PRODUCT_BUNDLE_IDENTIFIER = com.xxxx.xxx;
                PRODUCT_NAME = "$(TARGET_NAME)";
                TARGETED_DEVICE_FAMILY = "1,2";
                TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SMTest.app/SMTest";
            };
            name = Debug;
        };
/* End XCBuildConfiguration section */

上面這部分代碼就是XCBuildConfiguration的配置內容,找到對應的key就可以設置相應的值,腳本最后需要保存。

PBXProject

/* Begin PBXProject section */
        7A73A59E1FFF24A200ED0259 /* Project object */ = {
            isa = PBXProject;
            attributes = {
                LastUpgradeCheck = 0920;
                ORGANIZATIONNAME = UE;
                TargetAttributes = {
                    7A73A5A51FFF24A200ED0259 = {
                        CreatedOnToolsVersion = 9.2;
                        ProvisioningStyle = Automatic;
                    };
                    7A73A5BD1FFF24A200ED0259 = {
                        CreatedOnToolsVersion = 9.2;
                        ProvisioningStyle = Automatic;
                        TestTargetID = 7A73A5A51FFF24A200ED0259;
                    };
                    7A73A5C81FFF24A200ED0259 = {
                        CreatedOnToolsVersion = 9.2;
                        ProvisioningStyle = Automatic;
                        TestTargetID = 7A73A5A51FFF24A200ED0259;
                    };
                };
            };
            mainGroup = 7A73A59D1FFF24A200ED0259;
            productRefGroup = 7A73A5A71FFF24A200ED0259 /* Products */;
            projectDirPath = "";
            projectRoot = "";
            targets = (
                7A73A5A51FFF24A200ED0259 /* SMTest */,
                7A73A5BD1FFF24A200ED0259 /* SMTestTests */,
            );
        };
/* End PBXProject section */

從當前結構中我們可以看到,這里可以獲取target和ProvisioningStyle

通過查看模塊中相應的方法我們可以做以下處理

project = XcodeProject.load(projectPath)
pbxprojects = project.objects.get_objects_in_section(u'PBXProject')

def setProject( project,pbxprojects , teamid):
       target = project.get_target_by_name(u'Unity-iPhone')
       for pbxproject in pbxprojects:         
             pbxproject.set_provisioning_style(u'Manual',target)   
             pbxproject.set_developmentTeam_name(teamid,target)

如果模塊中缺少函數,可以自行添加進去,這個模塊的處理主要是為了在打包的時候選擇teamID和xcode自動選擇證書和手動配置證書 (Manual , Automatic)

def set_developmentTeam_name(self, developmentTeam, target):
        if u'attributes' not in self:
            self[u'attributes'] = PBXGenericObject()
        if u'TargetAttributes' not in self.attributes:
            self.attributes[u'TargetAttributes'] = PBXGenericObject()
        if target.get_id() not in self.attributes.TargetAttributes:
            self.attributes.TargetAttributes[target.get_id()] = PBXGenericObject()
        self.attributes.TargetAttributes[target.get_id()][u'DevelopmentTeam'] = developmentTeam

添加 Files和Farmeworks

一般添加FIles可以先把需要添加的文件copy到工程目錄下

 project.add_folder(targetDir+"/UnitySDK", excludes=["^.*\.DS_Store$"], recursive=True)
 project.add_folder(targetDir+"/SDKs", excludes=["^.*\.DS_Store$"], recursive=True)

#如果需要添加library_search_paths
project.add_library_search_paths("$(SRCROOT)/Libraries")

需要提的是文件夾中的framework等會自動添加識別,但是 .entitlements文件不在識別序列中,需要自己手動添加,需要修改的地方有

tmp02ececb2.png

添加系統framework和添加file一樣

 project.add_file("System/Library/Frameworks/AssetsLibrary.framework",tree='SDKROOT',force=False)
 project.add_file("usr/lib/libstdc++.tbd",tree='SDKROOT',force=False)

需要將framework該成optional的可使用以下方法:

def setWeak(project,framework):
    items = project.objects.get_objects_in_section(u'PBXBuildFile')        
    for item in items:
        setting = item._get_comment()
        if  setting.encode('utf8').find(framework) != -1:
            item.add_attributes(u'Weak')

具體代碼可以在這里查看腳本詳情
代碼可根據自己需要修改

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,814評論 18 139
  • 靜態庫與動態庫的區別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,025評論 3 42
  • 僅以方便自己查閱記錄前言1.靜態庫和動態庫有什么異同?靜態庫:鏈接時完整地拷貝至可執行文件中,被多次使用就有多份冗...
    190CM閱讀 4,255評論 0 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,694評論 25 708
  • 日前,浙江湖州長興縣公安局交警大隊接110指令稱,在雉城街道大潤發超市附近,有兩輛電瓶車相 撞后又撞在路旁的轎車上...
    黃德有閱讀 186評論 0 0