2015-12-18 3 views
7

तो यह मुझे पागल कर रहा है, लेकिन मुझे अंत में पता चला कि जब मैं एडॉक परिनियोजन के लिए अपना ऐप निर्यात करता हूं तो बिटकोड संकलन विकल्प मेरी डीबग प्रतीक फ़ाइल (डीएसवाईएम) और मेरे ऐप यूयूआईडी को मिस्चैच करने का कारण बनता है जिसका मतलब है कि मैं किसी भी क्रैश लॉग का प्रतीक नहीं हूं।बिटकोड से पुन: संकलन क्यों करता है मुझे एक्सकोड विज्ञापन में रिलीज करने में असमर्थ बनाता है और मैं इसे कैसे ठीक कर सकता हूं?

विकल्प को बंद करने से यह ठीक हो जाता है लेकिन क्या कोई तरीका है कि मैं इसे विकल्प के साथ तय कर सकता हूं? मैंने उस विकल्प के लिए टिप पढ़ी और कहा कि स्टोर इस विधि का उपयोग करता है। क्या मैं ऐप स्टोर से भी क्रैश लॉग पढ़ने में असमर्थ हूं या क्या यह सिर्फ एक स्थानीय समस्या है?

dwarfdump --uuid app 
DD25E6C9-... (armv7) 
29F74B2E-... (arm64) 

dwarfdump --uuid app.dsym 
DD25E6C9... (armv7) 
29F74B2E... (arm64) 

ललित:

यहाँ मैं इस Xcode संस्करण से पहले एक पुराने निर्माण से मिलता है। अब बिटकोड के साथ:

dwarfdump --uuid app 
E7D2BE71-... (armv7) 
5C871FD7-... (arm64) 

dwarfdump --uuid app.dsym 
BC93BCF5-... (armv7) 
3312658C... (arm64) 

स्पष्ट रूप से यह प्रतीक नहीं होगा। मैंने इसे विकल्प के साथ आजमाया है और यह फिर से मेल खाता है। क्या यह Xcode के साथ एक समस्या है जो नए बिटकोड निर्माण के लिए प्रतीकों को पुन: उत्पन्न नहीं कर रहा है? और क्यों ओह यह आपके डिफ़ॉल्ट क्रैश लॉग के बारे में चेतावनी देता है और आपको चेतावनी क्यों देता है ??

+0

आयोजक में Xcode में एक "डाउनलोड dSYMs" विकल्प है कि बाइनरी एप्पल के लिए बनाता है के लिए dSYMs डाउनलोड करने के लिए माना जाता है है:

इस तरह के एक dSYM एक निम्न आदेश का प्रयोग करेंगे डी-अंधेरा करना xcarchive। हालांकि, मेरे लिए बाइनरी के लिए डीएसवाईएम अभी भी गायब हो गया है, शायद आपको बेहतर भाग्य मिलेगा। – OpenUserX03

उत्तर

0

जब bitcode सक्षम किया गया है, XCode संग्रह प्रक्रिया का निर्माण करता है: 1. मूल निवासी arm64 या ARMv7 कोड 2. Bitcode 3. dSYM फ़ाइल

(मूल कोड के UUID मेल खाता है) जब आप एक प्रशासनिक उत्पन्न यह वितरण और "बिटकोड संकलन" विकल्प को सक्षम करता है, एक्सकोड रीटकंपाइल बिटकोड को मूल में भी बनाता है, जो शायद और 645 और armv7 भागों के लिए एक अलग यूयूआईडी का परिणाम हो सकता है। मूल app.dSYM स्पर्श नहीं किया जाता है (और इस प्रकार नई बाइनरी से मेल नहीं खाता है), इसके बजाय नए डीएसवाईएम एक ही xcarchive फ़ोल्डर में उत्पन्न किए जा रहे हैं, उनके पास "E2015333-1220-391E-928C-04C32A179EC9.dSYM" का रूप है। और नए संकलित बाइनरी के वास्तविक यूयूआईडी से मेल खाते हैं।

कहानी हमेशा समाप्त नहीं होती है, इन नई डीएसवाईएम फ़ाइलों को खराब किया जा सकता है (यानी वास्तविक प्रतीक नामों के बजाय __hidden # 232434 है)। उन्हें deobfuscate करने के लिए मैपिंग भी xcarchive फ़ोल्डर में एक फ़ोल्डर नाम "BCSymbolMaps" में रहते हैं।

dsymutil --symbol-map <bcSymbol-file> <obfuscated-dsym-file> 
संबंधित मुद्दे

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