1) "एग्रीगेट" प्रकार की अपनी परियोजना में एक नया लक्ष्य जोड़ें, उदा। आप इसे "Info Info.plist उपसर्ग शीर्षलेख अपडेट करें" नाम दे सकते हैं; बस संवाद में "उत्पाद का नाम" के रूप में उपयोग करें।
2) एक रन स्क्रिप्ट चरण का निर्माण इस नए लक्ष्य के लिए निम्न स्रोत कोड के साथ जोड़ें:, नाम
#!/bin/sh
SVN_REVISION=$(git svn find-rev HEAD)
echo "#define SVN_REVISION $SVN_REVISION" > "$SCRIPT_OUTPUT_FILE_0"
3) अपनी स्क्रिप्ट के लिए कोई आउटपुट फ़ाइल जोड़े यह
$(CONFIGURATION_TEMP_DIR)/InfoPlist.pch
4) अपने आईओएस ऐप के बिल्ड चरण खोलें।
5) कुल लक्ष्य आप के रूप में निर्भर लक्ष्य से पहले बनाए गए जोड़ें (इसे जोड़ने के लिए "लक्ष्य निर्भरता")। इसका अर्थ यह है कि एक्सकोड हमेशा आपके लक्ष्य को बनाए रखने से पहले इस लक्ष्य को बनाएगा।
6) अपने आईओएस ऐप की बिल्ड सेटिंग्स खोलें।
7) सेटिंग "Info.plist प्रीप्रोसेसर उपसर्ग फ़ाइल" के लिए खोजें और इसे बदलने के लिए ठीक उसी मूल्य चरण में आउटपुट फ़ाइल के लिए इस्तेमाल किया (3)।
8) सेटिंग "preprocess Info.plist फ़ाइल" के लिए खोज और यकीन है कि यह सक्षम है।
9) अपने वर्तमान Info.plist फ़ाइल खोलें और SVN_REVISION
को CFBundleVersion का मूल्य बदल जाते हैं। $ (SVN_REVISION) या $ {SVN_REVISION} का उपयोग न करें; यह कोई बिल्ड सेटिंग या पर्यावरण परिवर्तनीय प्रतिस्थापन नहीं है, यह एक प्रीप्रोसेसर प्रतिस्थापन है, इसलिए बस SVN_REVISION का उपयोग करें।
यह है कि। प्रत्येक बार जब आप अपना आईओएस ऐप बनाते हैं, तो एक्सकोड पहले कुल लक्ष्य बनाता है, जो पीसीएच फ़ाइल को अपडेट करता है, और जब यह आपके आईओएस ऐप बनाता है, तो यह सी प्री-प्रोसेसर के माध्यम से Info.plist फ़ाइल चलाएगा (पीएचसी फाइल का उपयोग उपसर्ग के रूप में हेडर) इसे अपने एप्लिकेशन पर कॉपी करने से पहले। प्री-प्रोसेसर SVN_REVISION को प्रतिस्थापित करेगा क्योंकि इसे आपकी पीसीएच फ़ाइल में मैक्रो के रूप में परिभाषित किया गया है।
महत्वपूर्ण सूचनाएं
कुछ लोगों को लगता है कि यह $(DERIVED_FILE_DIR)
बजाय $(CONFIGURATION_TEMP_DIR)
उपयोग करने के लिए एक बेहतर विचार है। खैर, सिद्धांत रूप में वे सही हैं, फिर भी अभ्यास में केवल एक समस्या है: व्युत्पन्न फ़ाइल डीआईआर प्रत्येक लक्ष्य के लिए अलग है, जबकि कॉन्फ़िगरेशन temp dir एक जैसा है (यह प्रत्येक बिल्ड कॉन्फ़िगरेशन के लिए केवल अलग है)। व्युत्पन्न फ़ाइल डीआईआर का उपयोग करते समय, पीसीएच फ़ाइल कुल लक्ष्य के व्युत्पन्न फ़ाइल डीआईआर पर लिखी जाती है, फिर भी जब आईओएस ऐप का निर्माण होता है, तो एक्सकोड आईओएस ऐप के व्युत्पन्न फाइल डीआईआर में इस फाइल को खोजेगा और इस प्रकार यह नहीं मिलेगा फ़ाइल।
कुछ लोग यह भी सोच सकते हैं कि रन स्क्रिप्ट चरण को जोड़ने का बेहतर विचार है जो इसके लिए एक अलग लक्ष्य बनाने के बजाय आपके आईओएस ऐप के पहले निर्माण चरण के रूप में उपसर्ग शीर्षलेख अपडेट करता है (यह व्युत्पन्न भी हल करेगा उपरोक्त वर्णित फाइल डीआईआर मुद्दा)। फिर, सिद्धांत में अच्छा विचार है लेकिन अभ्यास में काम नहीं कर सकता है: यदि प्रीप्रोसेसिंग का अनुरोध किया जाता है, तो पहले स्क्रिप्ट चरण को पहले से निष्पादित करने से पहले Info.plist प्रीप्रोसेस्ड किया जाता है, इसलिए यदि पीसीएच फ़ाइल पहले से मौजूद नहीं है या पहले ही अपडेट नहीं हुई है, तो या तो एक त्रुटि के साथ समाप्त होता है या पुराने एसवीएन संशोधन प्लिस्ट फ़ाइल में लिखा जाता है। यही कारण है कि आपको इस कार्य के लिए एक अलग लक्ष्य की आवश्यकता है जो आपके वास्तविक लक्ष्य से पहले निर्माण करने की गारंटी है।