2012-09-21 12 views
14

आईओएस 6 एसडीके का उपयोग करने के लिए आईओएस 3.1.3 को लक्षित करने वाले अनुप्रयोगों को विकसित करने का मौका है? अगर मैं पुराने तैनाती लक्ष्य के साथ अपने प्रोजेक्ट खोलते हैं, तो संकलक मुझे चेतावनी देते हैं:आईओएस 6 एसडीके और एक्सकोड 4.5 के साथ armv6 आर्किटेक्चर (लक्ष्य आईओएस 3.1.3) के लिए बनाएँ?

iOS deployment targets lower than 4.3 are not supported 

इस तथ्य यह है कि जाहिरा तौर पर केवल armv7 और armv7s बाइनरी बनाया जा सकता है की वजह से शायद है। अगर मैं (iPhone 3G जब तक काम कर रहे उपकरणों में) armv6 जोड़ने के लिए मैन्युअल रूप से, वहाँ कई बार चेतावनी के रूप में अच्छी तरह से कर रहे हैं:

warning: no rule to process file '$(PROJECT_DIR)/main.m' of type sourcecode.c.objc for architecture armv6 
... 
... 
warning: architecture armv6 is not supported (current ARCHS = "armv6 armv7 armv7s"). 

तो मैं इस के साथ कैसे पेश करते हैं? आईओएस 6 एसडीके के साथ विकास करते समय आईओएस 3.1.3 का समर्थन करने का कोई तरीका है? यदि नहीं, तो मुझे अंततः आईओएस 4.3 होने के लिए सबसे कम लक्ष्य पर जाना होगा। क्या एक नया संस्करण सबमिट करना भी संभव है जो केवल संस्करण> = 4.3 का समर्थन करता हो? पिछले संस्करणों पर मेरे उपयोगकर्ताओं के साथ क्या होता है? क्या उन्हें असंगत अद्यतन के बारे में सूचित नहीं किया जा रहा है और इसलिए मेरे ऐप के पुराने संस्करण का उपयोग करना जारी रहेगा? यदि नहीं, तो क्या यह हासिल किया जा सकता है?

उत्तर

10

एक्सकोड 4.5 (यानी आईओएस 6 एसडीके) के साथ आप निम्नतम संस्करण आईओएस 4.3 के लिए बना सकते हैं। मुझे लगता है कि यह आपके 3.1.3 ग्राहकों को अपग्रेड करने का समय है।

+0

अफसोस की बात है कि मेरे पास ऐसे कुछ ग्राहक हैं जिनके पुराने आईपॉड उनके आंतरिक अनुप्रयोगों के लिए छूते हैं जो पिछले 4.2.1 को अपग्रेड करने में सक्षम नहीं हैं। काश मैं उन्हें अपग्रेड करने के लिए कह सकता हूं :(लेकिन अभी मैटजी के समाधान का प्रयास करने जा रहा है। – Bek

21

ओनोवेब का उत्तर आईओएस एसडीके 6.0 के संबंध में सही है। आईओएस 6 एसडीके के खिलाफ निर्माण करते समय आईओएस 4.3 के नीचे समर्थन करना संभव नहीं है, लेकिन armv6 के लिए निर्माण जारी रखने और आईओएस 4.2.1 और नीचे लक्षित करने के लिए एक्सकोड 4.5 का उपयोग करना संभव है।

चाल 6.0 के बजाय आईओएस 5.1 एसडीके के खिलाफ निर्माण करना है। नोट: यदि आप नया iOS के किसी भी 6 विशिष्ट सुविधाओं का उपयोग करने यदि आप नहीं कर सकेंगे करें:

chpwn के blog चरणों, जो मैं कर दिया है फिर से लिखा बाहर देता है:

  • डाउनलोड Xcode 4.4.1 एप्पल Developer Downloads से सही Xcode.app, पर क्लिक करें, .dmg
  • ओपन (आप इसे स्थापित करने के लिए की जरूरत नहीं है) 'दिखाएँ पैकेज सामग्री'
  • आईओएस 5.1 पर है कि पैकेज के भीतर एसडीके खोजें: Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/
  • इस एसडीके
  • की प्रतिलिपि बनाएँ
  • Xcode.app (4.5) की पैकेज सामग्री खोलें, और स्थान पर 5.1 एसडीके पेस्ट करें: Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • एक्सकोड 4.5 में अपनी प्रोजेक्ट खोलें। अपने लक्ष्य> बिल्ड सेटिंग्स टैब> बेस एसडीके पर जाएं, और ड्रॉपडाउन
  • फिर से बिल्ड सेटिंग्स टैब> मान्य आर्किटेक्चर में आईओएस 5.1 चुनें - यदि वहां है तो armv7s को हटाएं, और अगर यह पहले से नहीं है तो armv6 जोड़ें।
  • ड्रॉप टैब में जानकारी टैब> परिनियोजन लक्ष्य पर जाएं, और 3.1.3 (या जो भी आप समर्थन कर रहे हैं) टाइप करें (विकल्प वहां नहीं होगा, लेकिन आप इसे टाइप कर सकते हैं)।
  • यदि आप इसे इंस्टॉल नहीं करना चाहते हैं तो अब आप Xcode 4.4.1 .dmg को हटा सकते हैं।

आपको armv6 के लिए फ़ाइलों को संसाधित करने के लिए कोई नियम नहीं होने के बारे में चेतावनियां मिलेंगी। नाट ने हाल ही में उन लोगों से निपटने के लिए this answer पोस्ट किया है।

यदि आप एक नई परियोजना बना रहे हैं (पुराने लोगों को बनाए रखने के बजाय) आपको ***-Info.plist फ़ाइल को देखने की आवश्यकता हो सकती है, और यदि आवश्यक हो तो 'आवश्यक डिवाइस क्षमताओं' से armv7 को हटा दें।

+4

मैंने chpwn के ब्लॉग से सभी चरणों का पालन किया है, लेकिन अब एक्सकोड मुझे बहुत सारी चेतावनियां देता है: "चेतावनी: फ़ाइल को संसाधित करने का कोई नियम नहीं है" $ (PROJECT_DIR) /Classes/aSUBDIRECTORY/fileXYZ.m 'टाइप करें Sourcecode.c.objc आर्किटेक्चर armv6 – Tafkadasoh

+1

के लिए यह ध्यान रखना महत्वपूर्ण है कि यदि आप आईओएस 6 के खिलाफ बनाए गए किसी भी तृतीय पक्ष पुस्तकालयों पर भरोसा कर रहे हैं तो यह दृष्टिकोण काम नहीं करेगा (फेसबुक, फ्लोरी, इत्यादि) पूर्व-संकलित पुस्तकालयों में armv6 उपकरणों पर स्थापित फर्मवेयर के लिए उपयुक्त बाइट-कोड नहीं होगा, और इस प्रकार यदि यह वास्तव में संकलित करने का प्रबंधन करता है, तो यह अभी भी निष्पादित करने में विफल रहेगा (यानी क्रैश) –

+1

@ तफ्कादासोह, इस समस्या को ठीक करने का एक तरीका है जिसे chpwn के ब्लॉग में वर्णित नहीं किया गया है, यह उत्तर प्राप्त हुआ है। [इस संबंधित प्रश्न का मेरा उत्तर देखें] (http://stackoverflow.com/a/13061562/119114)। मूल रूप से, आपको एक नया परिभाषित करने की जरूरत है ** नियम बनाएं ** स्वयं। यह मेरे लिए काम किया। – Nate

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