2011-01-31 4 views
9

मैं आईओएस एप्लिकेशन की निर्माण प्रक्रिया के दौरान एप्लिकेशन के बारे में जानकारी में गतिशील रूप से जोड़ने का एक तरीका ढूंढ रहा हूं।आईओएस एप्लिकेशन में जानकारी बनाएं (दिनांक/समय ऐप बनाया गया था)

परीक्षण के दौरान, यह जानना अच्छा होगा कि मेरे डिवाइस पर इंस्टॉल किया गया एप्लिकेशन कब बनाया गया था और संभवतः इसे किसने बनाया है, यह जानना भी अच्छा होगा।

मैं सेटिंग्स.एप में एक अनुभाग की कल्पना कर रहा हूं जो डिबगिंग उद्देश्यों के लिए मूल निर्माण जानकारी प्रदान करेगा। मैं प्रत्येक निर्माण से पहले एक निर्माण जानकारी फ़ाइल मैन्युअल रूप से अद्यतन नहीं करना चाहता - डेटा गतिशील रूप से उत्पन्न किया जाना चाहिए।

+1

ये समान प्रश्न बिल्ड समय पर फ़ाइलों में मूल्यों को मुद्रित करने के लिए कुछ विचार प्रदान कर सकते हैं: [एक्सकोड में सबवर्जन संशोधन संख्या डालें] (http://stackoverflow.com/questions/372218/insert-subversion-revision-number- इन-एक्सकोड) और [मैं अपने एप्लिकेशन की सेटिंग्स बंडल में एप्लिकेशन संस्करण संशोधन कैसे प्रदर्शित कर सकता हूं?] (http://stackoverflow.com/questions/877128/how-can-i-display-the-plication-version-revision- इन-माय-एप्लिकेशन-सेटिंग्स-बी) –

+0

धन्यवाद ब्रैड, वे महान संसाधन हैं। –

उत्तर

7

आप एक्सकोड में एक शेल स्क्रिप्ट बिल्ड चरण लिख सकते हैं जो आपकी बिल्ड प्रक्रिया के अंत में चलता है। इस चरण में आप एक मनमानी फ़ाइल में डेटा लिखने के लिए defaults कमांड का उपयोग कर सकते हैं। मैंने Info.plist फ़ाइल को लिखने के लिए इस तकनीक का उपयोग किया है, लेकिन आप अपनी इच्छित फाइल को लिख सकते हैं [1]।

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
gitversion="$(cd "$SRCROOT" && git describe --always --dirty 2>/dev/null)" 
if [[ -n "$gitversion" ]]; then 
    defaults write "${infoplist%.plist}" GitVersion "$gitversion" 
fi 

आप फ़ाइल आप चाहते हैं (उदाहरण के लिए अपनी सेटिंग्स बंडल) को इंगित करने के लिए इस अनुकूल करने के लिए सक्षम होना चाहिए और जानकारी लिखें:

यहाँ Info.plist करने के लिए वर्तमान Git संस्करण लिखने के लिए एक नमूना स्क्रिप्ट है तुम्हें चाहिए।

[1] अगर आप Info.plist पर लिखते हैं तो सावधान रहें, एक्सकोड में ऐसी बग है जो इसे बनाने के दौरान Info.plist को बदलने से रोक सकती है, जो डिवाइस निर्माण करते समय प्रावधान तोड़ सकती है।

+0

भयानक विचार, हालांकि ... मैं इसे एक महत्वपूर्ण BuildDateTime सहेजने के लिए करता हूं। मैं सिम्युलेटर में [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "BuildDateTime"] पढ़ सकता हूं, लेकिन जब मैं एडहोक वितरण के लिए बनाता हूं, और डिवाइस पर ऐप लोड करता हूं, [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "BuildDateTime"] शून्य देता है । कोई विचार? – mputnamtennessee

+0

@ mputnamtennessee: क्या आपने अपना विज्ञापन-निर्माण खोलने और हाथ से Info.plist की जांच करने का प्रयास किया है? –

13

आप मानक मैक्रो __DATE__ का भी उपयोग कर सकते हैं जो परिणामस्वरूप "जून 25 1980" की उचित स्ट्रिंग के साथ निश्चित रूप से स्ट्रिंग होगा।

+0

यह यहां जाने का तरीका है। – Emilio

+3

उस __DATE__ मैक्रो को एनएसएसटींग में बदलने के लिए इस प्रश्न की जांच करें: http://stackoverflow.com/questions/2862469/iphone-sdk-objective-c-date-compile-date-cant-be-converted-to-an -nsdate – Emilio

+2

आप तिथि को समय जोड़ने के लिए '__TIME__' मैक्रो का भी उपयोग कर सकते हैं। – rmaddy

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^