2016-02-18 4 views
8

हमारे पास एक से अधिक ऐप्स होने वाली एक बड़ी परियोजना है, इसलिए हमने सामान्य कोड को एकल गतिशील ढांचे में स्थानांतरित कर दिया है। अब तक 64 बिट उपकरणों पर ठीक चल रहा है, लेकिन इस प्रकार 32 बिट उपकरणों पर एक दुर्घटना होने:एक्सकोड 7.2 गतिशील फ्रेमवर्क 32 बिट डिवाइस त्रुटि

dyld: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB has segment 0 which is not a writable segment (__TEXT) in 
/path/to/MyApp.app/Frameworks/MyFramework.framework/MyFramework 

एक छोटी सी पृष्ठभूमि: हमने ffmpeg और कुछ अन्य वसा libs ARM64, ARMv7 और x86_64 आर्किटेक्चर के खिलाफ संकलित फिर ढांचे में जोड़ा गया। हमारे पास कुछ टेक्स्ट-रिलायंस त्रुटियां थीं जिन्हें लिंकर ध्वज में -read_only_relocs suppress जोड़कर हल किया गया था।

अगर हम ffmpeg और संबंधित पुस्तकालयों को निकालते हैं, तो यह 32 बिट डिवाइस पर ठीक काम करता है।

क्या कोई इस तरह की त्रुटि में आया है? किसी भी सूचक या मदद की सराहना की जाएगी।

उत्तर

0

आपके ढांचे के अंदर मैक-ओ टाइप के लिए "गतिशील लाइब्रेरी" का उपयोग करते समय हमारे पास एक ही समस्या थी। "रिलायटेबल ऑब्जेक्ट फ़ाइल" पर स्विच करने से समस्या ठीक हो गई। यह मुद्दा पुस्तकालयों के अंदर पाठ स्थानांतरण के साथ प्रतीत होता है।

अधिक जानकारी के here में वर्णित है:। "एक पाठ स्थानांतरण एक एक निरपेक्ष को संबोधित मोड का उपयोग क्रम में एक चर का पता के साथ एक वस्तु के संदर्भ का परिणाम है अनुदेश ही एन्कोडिंग का पता है और इसलिए का निष्पादन योग्य पाठ होता है रनटाइम पर वास्तविक लोड पते लेने पर बाइनरी को सही पता रखने के लिए बदला जाना चाहिए। "

FFMPEG उपयोग पाठ relocations और उस पर Android M (https://trac.ffmpeg.org/ticket/4928)

कर रहे हैं क्योंकि वे वाला कभी भी जल्द ही तय नहीं किया जा एक बड़ा मुद्दा रहा है, "पुनर्निधारणीय वस्तु फ़ाइल" ही एकमात्र विकल्प हो रहा है।

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