2012-09-17 20 views
36

नवीनतम रिलीज नोट्स 4.2.1 इंगित करता है और निचला समर्थन नहीं किया जाएगा, अब हमें पुराने उपकरणों का समर्थन करते समय विकसित करने के लिए एक्सकोड के 2 संस्करण का उपयोग करना होगा ?? यदि हम आईओएस 6 विकसित करना चाहते हैं और 4.2 और उससे कम का समर्थन करना चाहते हैं तो पुराने उपकरणों का समर्थन करना मुश्किल होगा।एक्सकोड 4.5 और आईओएस 4.2.1 असंगतता

मुझे नहीं लगता कि एक्सकोड 4.4 आईओएस 6 का समर्थन करेगा। तो यह मुद्दा है। डेवलपर्स आसानी से इन प्लेटफार्मों को बिना किसी परेशानी के कैसे समर्थन करेंगे?

उत्तर

29

आप यह कर सकते हैं, लेकिन इसके लिए कुछ मामूली एक्सकोड हैकिंग और कुछ बलिदान की आवश्यकता है। "आईओएस 6 का समर्थन करें" द्वारा आपके मतलब के आधार पर, यह आपके लिए पर्याप्त हो सकता है या नहीं भी हो सकता है। यदि आप बस अपने ऐप को आईओएस 6 पर चलाना चाहते हैं, तो यह काम करना चाहिए। यदि आपको नई आईओएस 6 सुविधाओं को शामिल करने के लिए अपने ऐप की भी आवश्यकता है, तो यह नहीं होगा।

    (जो दूसरों Xcode के कई संस्करण का उपयोग कर एक समस्या नहीं है के लिए ध्यान दें: this similar question जवाब है कि आप भी नए iOS 6 API का उपयोग और सीधे लक्षित armv7s करने की अनुमति है है)

See basic instructions on chpwn's blog here (लेकिन नीचे दिए गए बाकी को भी पढ़ें!)

असल में, आप आईओएस 4 और उसके बाद के संस्करण के लिए एक्सकोड 4.5 का उपयोग कर सकते हैं, लेकिन फिर आप केवल नए आईओएस 6 का लाभ नहीं उठा सकते हैं। तो, आप वास्तव में आईओएस 4 और 5 के लिए निर्माण कर रहे हैं, और यह मानते हुए कि ऐप आईओएस 6 पर ठीक होगा (जो सच होना चाहिए, लेकिन आपको इसे स्वयं जांचना होगा)।

आप एक पुराने Xcode स्थापना (जो आप कुछ समय के लिए चारों ओर रखने के लिए, या एक गैर मानक स्थान पर पुनर्स्थापित करने के लिए की आवश्यकता होगी) से iOS 5 एसडीके फ़ोल्डर की प्रतिलिपि करने

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.*.sdk 

की आवश्यकता होगी। इसके बाद आप को अपनी बिल्ड सेटिंग्स में आईओएस 4.0 (या जो भी न्यूनतम ओएस आप चाहते हैं) में लक्ष्य पर सेट करें। आप इस मैन्युअल रूप से सेट करने के लिए एक पाठ संपादक में project.pbxproj फ़ाइल खोलने के लिए आवश्यकता हो सकती है:

IPHONEOS_DEPLOYMENT_TARGET = 4.0; 

तुम भी armv6 और armv7 को आर्किटेक्चर सेट करना होगा। आप सीधे भी लक्ष्य armv7s नहीं कर सकते हैं। लेकिन, इसका मतलब यह नहीं है कि आपका ऐप आईफोन 5 पर नहीं चलेगा। armv7 निष्पादन योग्यों को armv7s में जोड़े गए किसी भी अनुकूलन के बिना, आईफोन 5 पर चलाना चाहिए। यह सिर्फ इतना है कि संगतता दूसरी दिशा में काम नहीं करती है (उदा। armv7 निष्पादन योग्य armv6 आईफ़ोन 3 जी पर नहीं चलते हैं)।

enter image description here

वहाँ भी एक कदम है कि आवश्यक हो सकता है नहीं chpwn के ब्लॉग में बताया गया है कि। आप इन चेतावनियों मिल सकता है (जो वास्तव में त्रुटियाँ हैं, क्योंकि Xcode ठीक से अपने निष्पादन योग्य उत्पन्न नहीं करेगा):

चेतावनी: फ़ाइल पर कार्रवाई करने प्रकार sourcecode.c की '$ (PROJECT_DIR) /main.m' कोई नियम वास्तुकला ARMv6

आदेश इसे ठीक करने में के लिए .objc, आप सेटअप करने के लिए अपने लक्ष्य के लिए एक कस्टम बिल्ड नियम कि LLVM जीसीसी 4.2 उपयोग करने के लिए ARMv6 कोड उत्पन्न करने के लिए Xcode बताता है की आवश्यकता होगी।पैटर्न *.[mc] मिलान फ़ाइलों के लिए नियम निर्धारित करें:

enter image description here

यह Xcode डिफ़ॉल्ट से एक अलग संकलक हो जाएगा, और आप अपने ऑब्जेक्टिव-सी कोड में वाक्य रचना के कुछ समायोजित करने की आवश्यकता हो सकती है। हालांकि कई लोग ऐसा करना चाहते हैं, शायद एआरसी से पहले अपने ऐप्स लिखे, यह ध्यान रखना महत्वपूर्ण है कि LLVM gcc 4.2 does not support ARC

अंत में, आप शायद अभी भी आईओएस के बारे में एक्सकोड से 4.3 से कम लक्ष्य को तैनात करने के बारे में चेतावनियां देखेंगे, और armv6 समर्थित नहीं है। उन, मैंने पाया, समस्या नहीं थे, और ध्यान नहीं दिया जा सकता है:

enter image description here

मेरे ऐप निष्पादन पर lipo -info चल रहा है के बाद यह वांछित परिणाम दिखाता है:

lipo -info MyAppName 
Architectures in the fat file: MyAppName are: armv6 armv7 
+0

बहुत धन्यवाद, आपने मेरी शाम को बनाया! मैं chcwn द्वारा आलेख का उपयोग कर एक्सकोड के साथ संघर्ष कर रहा था, लेकिन बिना किसी किस्मत के –

+0

क्या होगा यदि मेरे पास * .mm हैं, तो मैं *। [Cm] वाक्यविन्यास में उनको कैसे शामिल करूं? धन्यवाद – malhal

+0

@indiekiduk, मैं वास्तव में अपने आईओएस प्रोजेक्ट्स में सी ++ का उपयोग नहीं करता, लेकिन मुझे लगता है कि आप केवल ** नियम बनाएं ** * एक दूसरी बार * कर सकते हैं, और इस बार, '* के लिए निर्माण नियम को परिभाषित करें .mm', एलएलवीएम जीसीसी 4.2 कंपाइलर को इंगित करता है। – Nate

2

मूल आईफोन और आईफोन 3 जी एकमात्र ऐसे उपकरण हैं जो आईओएस 5 का समर्थन नहीं करते हैं। आईफोन 3 जी अब 4 साल पुराना है। आप आईओएस 4 के लिए समर्थन छोड़ने पर विचार करना चाह सकते हैं। यदि आप ऐसा नहीं करना चाहते हैं, तो मुझे लगता है कि आपको एक्सकोड के दो अलग-अलग संस्करणों में विकसित करना होगा।

+5

आईओएस 4 उपकरणों अभी भी एक महत्वपूर्ण बाजार है शेयर। यह विशेष रूप से व्यावसायिक ऐप्स के लिए है, उन डिवाइसों में अभी भी उन्हें चलाने के लिए बहुत सारी शक्ति है। मुझे लगता है कि ज्यादातर ऐप्स अभी भी उनका समर्थन करना चाहते हैं, कम से कम एक और साल तक जब तक यह वास्तव में फीका नहीं हो जाता है। – mskw

+0

शेष आईओएस 4.X उपयोगकर्ता आईफोन 5 में अपग्रेड करेंगे। आईओएस 6 के साथ 4 पर प्रयास बर्बाद करने में कोई बात नहीं है। हमारे अगले संस्करण के साथ हम आधिकारिक तौर पर 4.X पर छोड़ रहे हैं। – ahwulf

+3

मजाकिया है कि कोई भी मेरे प्रश्न का उत्तर नहीं दे रहा है, मेरे लिए 4.2.1 का समर्थन नहीं करने के लिए लोगों की सभी कोशिश/विश्वास करने के बाद, मुझे अभी भी व्यावसायिक कारणों की आवश्यकता है। तो, फिर, क्या वहां कोई भी है जिसे 4.2.1 और 4.3 और उससे ऊपर का समर्थन करने की आवश्यकता है, यदि हां, तो वे कैसे मुकाबला कर रहे हैं? – mskw

22

एक्सकोड 4.5 आईओएस 4.3 को सबसे पुराना समर्थित ऑपरेटिंग सिस्टम बनाता है, जो प्रभावी रूप से मूल आईफोन और 3 जी को अनाथ बनाता है।

यदि आप 4.3 से पहले आईओएस संस्करणों का समर्थन करना चाहते हैं, तो आपको एक्सकोड के 4.4 संस्करण को रखना होगा।

थोड़ा स्पष्ट होने के लिए: आप आसानी से (जिसका अर्थ है कि एक्सकोड ऑफ-द-बॉक्स नहीं है) पूर्व-4.3 डिवाइस का समर्थन करता है और उसी ऐप में आईओएस 6 फीचर्स का उपयोग करता है। ऐसा इसलिए है क्योंकि आईओएस 6 सुविधाओं को एक्सकोड 4.5 की आवश्यकता है जो आईओएस 4.3 को न्यूनतम समर्थित ओएस के रूप में भी सेट करता है।

  1. XCode 4.4 का उपयोग जारी रखें:

    तो, आप 3 विकल्प हैं। आप प्री-4.3 आईओएस को लक्षित करने में सक्षम होंगे। आप आईओएस 6 फीचर्स का लाभ नहीं ले पाएंगे, लेकिन यह मानते हुए कि आप वास्तविक आईओएस 6 उपकरणों पर पर्याप्त परीक्षण करते हैं, तो आपके ऐप को ठीक से चलना चाहिए।

  2. एक्सकोड 4.5 पर माइग्रेट करें। आप प्री-4.3 आईओएस को लक्षित करने में सक्षम नहीं होंगे, लेकिन आप आईओएस 6 सुविधाओं का लाभ उठाने में सक्षम होंगे।
  3. अपने ऐप के दो संस्करण बनाएं। एक्सकोड 4.4 (विकल्प 1 में) के साथ एक संस्करण बनाएं, और दूसरा 4.5 के साथ (विकल्प 2 में)। वितरण के दृष्टिकोण से, ये 2 अलग-अलग ऐप्स होंगे, उनमें से प्रत्येक का अपना बंडल आईडी होगा। आपके पास ऐप स्टोर में दो प्रविष्टियां होंगी।

यदि आप सीधे एक्सकोड द्वारा समर्थित समर्थन से परे सुविधाजनक हैं, तो नेट का जवाब देखें।

+8

+1 उसकी व्यावसायिक आवश्यकताओं पर अनुमान लगाने के बजाय उत्तर देने के लिए। –

+0

एक्सकोड के 2 संस्करणों में से कोई कैसे विकसित होगा? मैं देखता हूं कि आप 2 अलग-अलग बाइनरी कैसे बना सकते हैं, लेकिन फिर उन दो बाइनरी को ऐप स्टोर में कैसे प्रबंधित किया जाएगा? यहां इस विषय पर एक चर्चा है: http://stackoverflow.com/questions/12574851/support-both-armv6-and-ios-6-in-an-app-store-app – lschult2

+0

आप दोनों प्री- 4.3 डिवाइस और उसी ऐप में आईओएस 6 फीचर्स का उपयोग करें। –

0

मुझे लगता है कि 4.3 करने का लक्ष्य रखा सबसे अच्छा विकल्प, करने के लिए मैन्युअल रूप से IPHONEOS_DEPLOYMENT_TARGET=4.0 का उपयोग कर परियोजना सेटिंग्स निर्धारित करने ios version statistics

+3

इसके विपरीत, हर आईओएस 4.3 डिवाइस को कभी भी आईओएस 5 और/या 6 में अपग्रेड किया जा सकता है। आईओएस 4.3 का समर्थन करने की परेशानी पर जाकर समय बर्बाद है। आईओएस 4.2.1 को लक्षित करने से आपको लाखों डिवाइस मिलते हैं जो आप अन्यथा छोड़ देंगे। उपरोक्त उत्तर पर मेरी टिप्पणी देखें। –

0

कोशिश अनुसार है। हालांकि, मुझे नहीं पता कि कोई दुष्प्रभाव है या नहीं।

2

मुझे लगता है कि आईओएस 4.2.1 के लिए गिराए गए समर्थन मुख्य समस्या नहीं है। वास्तव में, मैं इस पर काम करता है और निम्नलिखित करने की कोशिश की:

  • IOS 6 SDK के साथ एप्लिकेशन बनाएं, आईओएस 4.2.1 (जो काम करता है) के लिए तैनाती के लक्ष्य निर्धारित।
  • विज्ञापन की स्थापना के लिए ऐप को पैक करें और आईओएस 4.2.1 डिवाइस (आईपॉड टच 2 जी) पर ऐप इंस्टॉल करें।
  • ऐप का परीक्षण करें।

हालांकि, स्थापना विफल हो जाती है। यहां कारण है - afaik - आईओएस संस्करण नहीं। कारण आर्किटेक्चर है। एक्सकोड 4.5 अब आपको armv6 के लिए निर्माण करने की अनुमति नहीं देता है। यह केवल armv7 के लिए बनाता है। दूसरी तरफ: armv7 या बेहतर वाले सभी डिवाइस आईओएस 5 चला सकते हैं।आईवीएम, आईफोन 3 जी, आईपॉड टच 1 जी और आईपॉड टच 2 जी का समर्थन करने वाले एकमात्र डिवाइस हैं।

तो मेरे लिए सवाल यह है कि: क्या आप XDode 4.5 और आईओएस 6 के साथ armv6 के लिए आधार एसडीके के रूप में निर्माण कर सकते हैं?

संपादित करें: आप जो नहीं कर सकते, क्योंकि आईओएस 6 बेस एसडीके armv6 के लिए उपलब्ध नहीं है। सही?

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