दिलचस्प पोस्ट
सी में एकल वर्ण के लिए scanf कैसे करें आपका सबसे विवादास्पद प्रोग्रामिंग राय क्या है? सी में एक सरणी प्रदर्शित करें मैं कॉफी स्क्रिप्ट में वैश्विक चर को कैसे परिभाषित करूं? एक सामान्य शब्दकोश के मूल्य की कुंजी हो रही है? JQuery का उपयोग कर अस्थायी अजाक्स अनुरोध आईओएस के लिए इवेंट हैंडलिंग – कैसे hitTest: साथएवेंट: और प्वाइंटइनसाइड: साथएवेंट: संबंधित हैं? सी # इंटरफेस स्पष्ट कार्यान्वयन बनाम स्पष्ट कार्यान्वयन एक विधि और एक समारोह के बीच अंतर सेट का उपयोग किए बिना सरणी से डुप्लिकेट को कुशलता से कैसे निकालें क्या JVM पूंछ कॉल अनुकूलन को रोकता है? प्रोग्रामात्मक रूप से एक एंड्रॉइड सूचीदृश्य में एक विशिष्ट स्थान पर स्क्रॉल करें तस्वीरों के रूप में चित्रों को या वेब ऐप के लिए डेटाबेस में स्टोर करें? एपीके प्रोग्रामेंटल रूप से स्थापित / अनइंस्टॉल करें (पैकेज मैनेजर वि इंटेंट्स) मेरी जावास्क्रिप्ट को "नो" एक्सेस-कंट्रोल-अनुमति-मूल-शीर्षक क्यों मिलता है? अनुरोधित संसाधन पर मौजूद है "त्रुटि जब डाकिया नहीं करता है?

ऐप स्टोर मुद्दे पर सबमिट करें: असमर्थित आर्किटेक्चर x86

इसलिए मैं shopify API का उपयोग करने की कोशिश कर रहा हूं। जब मैं ऐप को संग्रहित करता हूं और उसे मान्य करता हूं तो कोई समस्या नहीं है, लेकिन जब मैं इसे ऐप स्टोर में जमा करता हूं तो मुझे निम्नलिखित मुद्दे मिलते हैं I

  1. त्रुटि आईटीएमएस -90087: "असमर्थित आर्किटेक्चर। आपके निष्पादनयोग्य में असमर्थित वास्तुकला '[x86_64, i386]'।"
  2. त्रुटि आईटीएमएस-9 020 9: "अमान्य सेगमेंट संरेखण। एसजेएपीपी / एफ़एपी / फ्रैमवर्क्स / बुय.फ्रेमवर्क / खरीद में ऐप बाइनरी में सही सेगमेंट संरेखण नहीं है। ऐप को नवीनतम एक्सकोड संस्करण के साथ फिर से बनाने का प्रयास करें।" (मैं पहले से ही नवीनतम संस्करण का उपयोग कर रहा हूं।)
  3. त्रुटि आईटीएमएस-9 0125: "बाइनरी अमान्य है। एलसी_एएनसीआरआईपीटीएनआईएक्सओएफओ लोड कमांड में एन्क्रिप्शन जानकारी या तो गायब या अवैध है, या बाइनरी पहले ही एन्क्रिप्ट की गई है। यह बाइनरी एपल के लिंकर के साथ निर्मित नहीं हुई है।"
  4. चेतावनी आईटीएमएस -98080: "निष्पादन योग्य पेलोड / // खरीदें.फ्रेमवर्क एक स्थिति स्वतंत्र निष्पादन योग्य नहीं है। कृपया सुनिश्चित करें कि उर बिल्ट सेटिंग्स को पीआईई निष्पादनयोग्य बनाने के लिए कॉन्फ़िगर किया गया है।"

2017 के लिए नोट अगर कार्थेज का उपयोग करते हुए , आप कॉपी-फ्रेमवर्क्स पर क्लिक करने के लिए भूल गए थे, और / या आपने अकस्मात एम्बेड-चौखटे में इसे छोड़ दिया है

वेब के समाधान से एकत्रित समाधान "ऐप स्टोर मुद्दे पर सबमिट करें: असमर्थित आर्किटेक्चर x86"

समस्या ये है कि खरीदें ढांचे में सिम्युलेटर (x86_64) और वास्तविक डिवाइस (एआरएम) दोनों के लिए एक बिल्ड शामिल है।

बेशक, आपको ऐप स्टोर को एक असमर्थित आर्किटेक्चर के लिए एक बाइनरी में जमा करने की अनुमति नहीं है, इसलिए समाधान प्रस्तुत करने से पहले "मैन्युअल रूप से" अनावश्यक आर्किटेक्चर को अंतिम बाइनरी से हटा दें।

डैनियल केनेट ने एक अच्छा समाधान के साथ आया और निर्माण चरण में जोड़ने के लिए इस स्क्रिप्ट को प्रदान किया है :

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" # This script loops through the frameworks embedded in the application and # removes unused architectures. find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK do FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" EXTRACTED_ARCHS=() for ARCH in $ARCHS do echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME" lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") done echo "Merging extracted architectures: ${ARCHS}" lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" rm "${EXTRACTED_ARCHS[@]}" echo "Replacing original executable with thinned version" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" done 

मैं इसे इस्तेमाल किया और यह पूरी तरह से काम किया

संपादित करें: सुनिश्चित करें कि आप वरीय द्वारा पोस्ट की गई संशोधित स्क्रिप्ट पर गौर करें, क्योंकि इसमें कुछ मामूली समस्याएं हैं

यदि आप कार्थेज का उपयोग कर रहे हैं तो आप इस समस्या का अनुभव कर सकते हैं क्योंकि परियोजना है:

  • carthage copy-frameworks बिल्ड चरण गुम है
  • या निर्माण चरण में सभी चौखटे (अपूर्ण सूची) शामिल नहीं हैं

यह क्रिया मान्य आर्किटेक्चर (कोड) की एक सूची के लिए फ्रेमवर्क को फ़िल्टर करती है।

प्रति-फ्रेमवर्क निर्माण चरण सेट करना

IOS चरणों के लिए कार्थेज बिल्डिंग से:

अपने एप्लिकेशन लक्ष्य पर '' चरण बनाएँ '' सेटिंग टैब पर, "+" आइकन पर क्लिक करें और "नई रन स्क्रिप्ट चरण" चुनें। एक रन स्क्रिप्ट बनाएँ जिसमें आप अपना शेल निर्दिष्ट करते हैं (ex: bin / sh), शेल के नीचे स्क्रिप्ट क्षेत्र में निम्नलिखित सामग्री जोड़ें:

/usr/local/bin/carthage copy-frameworks

और "इनपुट फ़ाइलें" के अंतर्गत उपयोग करने वाले चौखटे को पथ जोड़ें, जैसे:

$(SRCROOT)/Carthage/Build/iOS/Box.framework $(SRCROOT)/Carthage/Build/iOS/Result.framework $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework

यह स्क्रिप्ट सार्वभौमिक बायनेरिज़ द्वारा ट्रिगर ऐप स्टोर सबमिशन बग के आसपास काम करता है और यह सुनिश्चित करता है कि संग्रहित करते समय आवश्यक बिटकोड-संबंधित फाइलें और डीएसवाईएम कॉपी की गईं।

पीएकेवाईएम 88 के कामों के उत्तर दिए गए हैं, लेकिन मुझे https://stackoverflow.com/a/35240555/5272316 में मारियो ए गुज़मान के समान समस्या का सामना करना पड़ा: एक बार जब हमने अप्रयुक्त आर्किटेक्चर को काट दिया, तो हम इसे किसी भी समय स्क्रिप्ट को नहीं चला सकते क्योंकि यह हटाने की कोशिश करता है मौजूदा स्लाइस नहीं, क्योंकि एक्सकोड बाइनरी हर बार फिर से एम्बेड नहीं करता है आइडिया था – संग्रह के लिए निर्माण करते समय अभी i386 और x86_64 स्लाइस हटाएं, इसलिए मैंने स्क्रिप्ट को संशोधित किया:

 echo "Target architectures: $ARCHS" APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK do FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH") FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp" # remove simulator's archs if location is not simulator's directory case "${TARGET_BUILD_DIR}" in *"iphonesimulator") echo "No need to remove archs" ;; *) if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH" echo "i386 architecture removed" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH" fi if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH" echo "x86_64 architecture removed" rm "$FRAMEWORK_EXECUTABLE_PATH" mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH" fi ;; esac echo "Completed for executable $FRAMEWORK_EXECUTABLE_PATH" echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH") done 

सिम्युलेटर के लिए नहीं चलने पर (यदि वह मौजूद है तो) यह स्क्रिप्ट केवल I386 और x86_64 स्लाइस को निकालता है (इसका मतलब है कि गंतव्य फ़ोल्डर "डीबग-आईफ़होइसिमुलेटर" की तरह नहीं है)।

क्षमा करें, मैं शैल स्क्रिप्ट से परिचित नहीं हूं, इसलिए हो सकता है कि कोई इसे और अधिक सुंदर तरीके से लिख सकता है लेकिन यह काम करता है)

मैंने एंबेडेड द्विरेषा अनुभाग (एक्सकोड लक्ष्य -> ​​सामान्य टैब) से एक फ्रेमवर्क (उत्कृष्ट एसवीप्रग्रासएचयूडी) को निकालकर त्रुटि IMS-90080 को हल किया।

यहां छवि विवरण दर्ज करें

यदि आप Carthage का उपयोग कर रहे हैं तो यह सुनिश्चित कर लें कि आपके Embed Frameworks Build Step Carthage copy-frameworks


कुछ असामान्य मामलों में (उदाहरण: लॉटी-आईओएस ढांचे):

  • आप इसे सामान्य रूप से "लिंक लाइब्रेरी" में बस करेंगे

  • हालांकि आपको इसे स्पष्ट रूप से "एंबेड फ़्रेमवर्क" में जोड़ना होगा (हालांकि यह बेकार लगता है, क्योंकि यह केवल "एम्बेड फ़्रेमवर्क" में है, जब यह पूरी तरह से कार्य करता है),

  • और इसे कॉपी-चौखटे में डाल दिया

  • और सुनिश्चित करें कि "फ़्रेमवर्क को एम्बेड करें" के बाद प्रति-फ्रेमवर्क हैं

यह त्रुटि (आईटीएमएस-90240) एक स्थैतिक (। ए) पुस्तकालय के कारण भी हो सकती है। अतिरिक्त आर्किटेक्चर को पट्टी करने के लिए एक स्क्रिप्ट का इस्तेमाल करता है। Xcode में यह लक्ष्य> BuildPhases> पर क्लिक करें + क्लिक करें और रन स्क्रिप्ट चुनें फिर इसे स्क्रिप्ट बॉक्स में पेस्ट करें।

स्क्रिप्ट, .ए फाइलों के लिए खोज करता है, यह देखने के लिए कि क्या इसमें कोई अपमानजनक आर्किटेक्चर शामिल है, तो अगर यह बिना किसी आर्किटेक्चर के एक नई .a फ़ाइल बनाता है

मैक ओएस के लिए:

 APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" STRIPARCHS="armv7 armv7s arm64" for t in $STRIPARCHS do if find "$APP_PATH" -name '*.a' -exec lipo -info {} \; | grep $t ; then find "$APP_PATH" -name '*.a' -exec lipo -remove $t {} -output {}2 \; -exec rm {} \; -exec mv {}2 {} \; ; fi done exit 0 

आईओएस के लिए:

 APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" STRIPARCHS="x86_64 i386" for t in $STRIPARCHS do if find "$APP_PATH" -name '*.a' -exec lipo -info {} \; | grep $t ; then find "$APP_PATH" -name '*.a' -exec lipo -remove $t {} -output {}2 \; -exec rm {} \; -exec mv {}2 {} \; ; fi done exit 0