में iOS5 एप्पल चला जाता है ARMv6 से वास्तुकला ARCHS_STANDARD_32_BIT ।
आदेश के लिए समर्थन रखने के लिए iPhone3G मैं अभी भी में संकलित करने के लिए चाहते हैं ARMv6 iOS5 में भी।
क्या किसी ने इसके लिए कोई समाधान खोजा?
जवाबों:
मैंने आज सिर्फ iOS 4.0 के तैनाती लक्ष्य को निर्दिष्ट करते हुए कुछ बनाया है। आर्किटेक्चर में निर्दिष्ट केवल armv7 के साथ, Xcode ने मुझे चेतावनी दी कि iOS4.2 के नीचे कुछ भी समर्थन करने के लिए मुझे आर्किटेक्चर में armv6 को शामिल करना था। बस उस फ़ील्ड को संपादित करें, डायलॉग पॉप अप होने पर "+" बटन पर क्लिक करें और शाब्दिक "आर्मव 6" दर्ज करें।
मेरे मामले में, हम चाहते हैं कि हमारा ऐप iOS4 और iOS5 के तहत काम करे। हमें कुछ संशोधन करने थे इसलिए यह iOS5 के तहत सही ढंग से काम करेगा, लेकिन उन सभी परिवर्तनों को iOS4 के अनुकूल कोड परिवर्तनों के साथ किया गया था।
हमने कुछ iOS5-विशिष्ट क्षमताओं को इस तरह से जोड़ा है जिससे ऐप iOS4 के तहत दुर्घटनाग्रस्त हुए बिना चल सकता है। विशेष रूप से, हमने उन्हें उपयोग करने का प्रयास करने से पहले iOS5 क्षमताओं के लिए परीक्षण किया, और वैकल्पिक रूप में iOS5-केवल पुस्तकालयों को जोड़ा।
इसलिए, एक iOS5 दुनिया में iPhone3G का समर्थन आसानी से किया जा सकता है "हम चाहते हैं कि हमारा ऐप iOS4 और इसके बाद के संस्करण (किसी भी iOS5 फ़ीचर उपयोग की परवाह किए बिना)" के बजाय "हम सुनिश्चित करें कि हमारा ऐप iOS5 चलाने वाले पुराने डिवाइस पर चलता है। "। यहाँ एक अंतर है; इसके बारे में सोचो। :-)
फिर भी, armv6 समर्थन को वापस जोड़ना बहुत आसान है। और मुझे लगता है कि यह बिंदु है: किसी बिंदु पर, जब कोई और अधिक armv6 डिवाइस नहीं हैं, तो इसके बारे में चिंता करने के लिए (जो भी कारण हो) आपको इसके लिए निर्माण नहीं करना होगा। Apple का विचार है कि सभी को जल्द से जल्द नवीनतम हार्डवेयर में अपग्रेड करना चाहिए। तो उस दुनिया में, कुछ भी डिफ़ॉल्ट करने के लिए उपकरणों की आवश्यकता नहीं है, लेकिन नवीनतम और सबसे बड़ी भी। :-) सौभाग्य से (या नहीं), हम डेवलपर्स वास्तविक दुनिया में रहते हैं और समझते हैं कि आपको कुछ समय के लिए पुराने सामान का समर्थन करना होगा। और मुझे लगता है कि Xcode देव टीम यह भी जानता है, यही कारण है कि आप काफी आसानी से armv6 समर्थन वापस जोड़ सकते हैं।
इसका सरल उत्तर यह है कि आपको वर्तमान सेटिंग्स को "मानक (armv7) - $ (ARCHS_STANDARD_32_BIT)" से केवल "armv6" और "armv7" होना है। निचे इमेज देखे। आपको काम करने के लिए पिछली सेटिंग्स के साथ लाइन को हटाना होगा।

यह भी सुनिश्चित करें कि आपने इसे प्रोजेक्ट और लक्ष्य में सेट किया है ... मुझे यह जानने के लिए एक घंटे का समय देना होगा। एक के लिए निर्धारित किया था, लेकिन दूसरे के लिए नहीं। उम्मीद है की यह मदद करेगा। GLTA
मुझे लगता है कि वहाँ एक कारण है कि Apple मानक सेटिंग से armv6 गिरा दिया।
मैंने iOS5 SDK के साथ armv7 / armv6 संकलित किया है, हालाँकि, armv6 संकलक ने रिलीज़ मोड में गलत कोड का उत्पादन किया। वर्कअराउंड ढूंढने के घंटों के बाद (विभिन्न अनुकूलन स्तरों के साथ llvm या gcc आज़माकर) मैं हार मान लेता हूं।
इसलिए, जब तक मैं पुराने armv6 उपकरणों का समर्थन करता हूं, मैं iOS SDK 4.x पर वापस जा रहा हूं।
कोड का उदाहरण:
// myView center=(160, 100)
CGPoint p=myView.center;
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100)
p.y+=100;
// now p =(200,200) (what the heck?)
हो सकता है कि मेरे पास कुछ मेमोरी करप्शन हो, हालाँकि, armv7 कंपाइलर और iOSSDK <5.0 पर यह अपेक्षित रूप से व्यवहार करता है।
सादर
यह निश्चित नहीं है कि यह वास्तव में अभी तक एक समाधान है, लेकिन मुझे पता चला है कि "आर्किटेक्चर" में परिभाषित स्ट्रिंग की जगह, जो कि $ (ARCHS_STANDARD_32_BIT) थी, "armv6 armv7" ने मुझे एक आधार के रूप में iOS5 और एक आधार के रूप में iOS4 के साथ रचना करने की अनुमति दी। लक्ष्य, और सत्यापन पास करें।
मैं किसी IOS5- अनन्य पुस्तकालयों या कॉल का उपयोग नहीं कर रहा हूं, लेकिन मेरी अगली रिलीज में इरादा है।