2012-02-07 17 views
9

मेरे पास वेबकिट, वेबकोर और जावास्क्रिप्टकोर के लिए मेरे ऐप बंडल में कस्टम फ्रेमवर्क हैं। मैं अपने सभी कस्टम संस्करणों का उपयोग करने के लिए वेबकिट, वेबकोर, या जावास्क्रिप्टकोर के सिस्टम संस्करणों पर निर्भर सभी अन्य ढांचे को भी पसंद करूंगा। उदाहरण के लिए वेबकिट का मेरा कस्टम संस्करण निजी सिस्टम ढांचे को लोड करता है जो बदले में वेबकिट के सिस्टम संस्करण पर निर्भर करता है। इसका मतलब है कि मेरी वेबकिट और सिस्टम वेबकिट दोनों लोड हो जाते हैं, और आमतौर पर एक क्रैश शीघ्र ही बाद में होता है।रिलीज बिल्ड के लिए पर्यावरण परिवर्तनीय DYLD_FRAMEWORK_PATH सेट करने का सबसे साफ तरीका क्या है?

जिस तरीके से मैं इसे समझता हूं, वह आपके ऐप बंडल निष्पादन शुरू होने से पहले DYLD_FRAMEWORK_PATH पर्यावरणीय चर सेट करना है (फ्रेमवर्क लोड करने के लिए खोज आदेश यहां पाया जा सकता है: http://code.google.com/p/macdependency/wiki/SearchPaths)। आप setenv के साथ कोड में पर्यावरणीय चर सेट कर सकते हैं, लेकिन यह वर्तमान में चल रही प्रक्रिया के लिए प्रभावी नहीं होगा। इसे प्रभावी होने के लिए मुझे फिर से प्रक्रिया को फिर से लॉन्च करना होगा। मैं भी इससे बचना चाहूंगा।

तो मेरा सवाल यह है कि मेरे ऐप बंडल के निष्पादन से पहले DYLD_FRAMEWORK_PATH को सेट करने का सबसे अच्छा तरीका क्या है? इसे रिलीज ऐप बंडल में भी काम करना है। निष्पादन योग्य शुरू होने से पहले जब कोई मेरे ऐप बंडल पर क्लिक करता है तो स्क्रिप्ट चलाने का कोई तरीका है। या क्या वहां कोई अन्य सुझाव है?

अग्रिम धन्यवाद।

+0

'अन्य सभी ढांचे' से आपका क्या मतलब है? यदि यह केवल आपके निजी ढांचे हैं, तो क्या आप उन्हें अपने निजी वेबकिट और संबंधित ढांचे से जोड़ नहीं सकते हैं? –

+0

कहीं भी मेरे कस्टम वेबकिट कोड के पहाड़ में, डेटाडिक्टर.फ्रेमवर्क लोड हो जाता है यदि आप एक विंडो (केवल ओएसएक्स शेर पर) पर राइट क्लिक करते हैं, और डेटा डिटेक्टर एक निजी सिस्टम फ्रेमवर्क (मेरे द्वारा निर्मित नहीं) है। जब ऐसा होता है तो डेटाडिक्टर वेबकिट और जावास्क्रिप्टकोर के सिस्टम संस्करणों पर निर्भर करता है, इसलिए एक बार ऐसा होने पर वेबकिट लोड, मेरा और सिस्टम की 2 प्रतियां होती हैं। यह अप्रत्याशित परिणाम और एक दुर्घटना का कारण बनता है। –

+1

क्या आपने कभी यह काम करने के लिए प्रबंधन किया था? मैं कुछ ऐसा करने की तलाश में हूं, और किसी सुझाए गए दृष्टिकोण के साथ मुझे बहुत भाग्य नहीं है। – starkos

उत्तर

1

मैं environment.plist या LSEnvironment कुंजी info.plist में अनुशंसा करता हूं। नीचे दिए गए लिंक का प्रयोग करें।

https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/EnvironmentVars.html

+1

info.plist केवल पूर्ण पथ लेता है, और मुझे अपने ऐप बंडल के अंदर होने का मार्ग चाहिए, जिसे तकनीकी रूप से स्थानांतरित किया जा सकता है। अगर मैं इसे अपने पर्यावरण में स्थापित करता हूं। प्लिस्ट यह वैश्विक है, क्योंकि यदि यह भी अच्छा नहीं होगा, क्योंकि अन्य अनुप्रयोग पर्यावरण चर का उपयोग कर सकते हैं। –

2
विषय पर एप्पल के प्रलेखन के लिए सीधे हवाला देते हुए

जेफ Wolski has the right ideaThis thread विनिर्देश के वैकल्पिक तरीकों से जुड़े कोने के मामलों सहित एक्सकोड में जाने के तरीके के बारे में उत्कृष्ट सलाह भी प्रदान करता है (उदाहरण के लिए, सीधे अपने उपयोगकर्ता के लिए ~/.bash_profile का उपयोग करके)।

चिमिंग करने का मेरा कारण है भी एक ऐसी स्क्रिप्ट के लिए कहा गया है जो आपकी सहायता करने में सक्षम हो सकता है (और एक बाउंटी प्रदाता के पास एक ही समस्या है)। यह वेबकिट references such a script in its documentation दिखाता है, जिसे आप the applicable Webkit source code से अलग करना चाहते हैं। इससे आपको कम से कम डेवलपर्स के अनुसार अतिरिक्त मार्गदर्शन देना चाहिए, आपको इसे ठीक से करना चाहिए।

आपकी परियोजना के साथ शुभकामनाएं।

+0

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

+0

@MichaelWildermuth [इस सवाल] के अनुसार [http://stackoverflow.com/questions/281372/executing-shell-scripts-from-the-os-x-dock), विकल्पों की एक बड़ी संख्या मौजूद है। इनमें से कम से कम एक आपकी ज़रूरतों को पूरा करेगा, चाहे वह '.command' फ़ाइल के माध्यम से] (http://stackoverflow.com/a/281386/517815) या [मामूली रूप से अधिक विस्तृत स्क्रिप्ट संपादक दृष्टिकोण] (http://stackoverflow.com/a/310183/517815)। यदि ये आपके लिए काम नहीं करते हैं, तो हम कुछ अन्य विकल्पों पर चर्चा करेंगे। :) – MrGomez

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