2012-02-07 10 views
9

WebKit, WebCore ve JavaScriptCore için uygulama paketimde özel çerçeveler var. Özel sürümlerimi kullanmak için WebKit, WebCore veya JavaScriptCore sistem sürümlerine bağlı olan tüm diğer çerçeveleri de istiyorum. Örneğin, özel Webkit sürümüm, WebKit'in sistem sürümüne bağlı olan özel sistem çerçevelerini yükler. Bu, hem WebKit'im hem de WebKit sisteminin yüklenmesi anlamına gelir ve genellikle bir çarpışma kısa bir süre sonra gerçekleşir.Bir sürüm oluşturma için DYLD_FRAMEWORK_PATH çevresel değişkenini belirlemenin en temiz yolu nedir?

ben bu yapılmalıdır anlamak yolu, uygulama paket önce DYLD_FRAMEWORK_PATH çevresel değişkeni ayarlamaktır yürütme başlar (yükleme çerçeveler ara emri burada bulunabilir: http://code.google.com/p/macdependency/wiki/SearchPaths). Ortam değişkenlerini setenv ile kod içinde ayarlayabilirsiniz, ancak şu anda çalışan işlem için geçerli olmayacaktır. Etkili olması için süreci yeniden başlatmam gerekecek. Bunu da önlemek isterim.

Benim soru benim app paket yürütülmesinden önce DYLD_FRAMEWORK_PATH ayarlamak için en iyi yoldur nedir? Bu, bir yayın uygulama paketinde de çalışmak zorunda. Yürütücü çalışmaya başlamadan önce bir kullanıcı uygulama paketimi tıkladığında bir komut dosyası çalıştırmanın bir yolu var. Yoksa başka önerilerin var mı?

Şimdiden teşekkürler.

+0

Eğer ‘tüm diğer çerçeveler’ ile neyi kastediyoruz görüyor musunuz? Yalnızca özel çerçevelerinizse, bunları özel WebKit ve ilgili çerçevelerinize bağlayamaz mısınız? –

+0

Kodun dağınık bir yerinde, benim özel Webkitim olan DataDectors.framework, bir pencereye sağ tıklarsanız yüklenir (Sadece OSX Lion'da) ve DataDectors, özel bir sistem çerçevesidir (bana göre değil). Bu olduğunda DataDectors, WebKit ve JavaScriptCore'un sistem sürümlerine bağlıdır. Bu durumda, 2 kez WebKit yüklü, benim ve sistemlerin kopyası çıkacaktır. Bu beklenmedik sonuçlara ve bir kazaya neden olur. –

+1

Hiç bu işe yaramadı mı? Benzer bir şey yapmak istiyorum ve önerilen yaklaşımlardan hiçbiriyle çok şansım yok. – starkos

cevap

1

info.plist'da environment.plist veya LSEnvironment anahtarını öneririm. Aşağıdaki bağlantıya göz atın. Konuyla ilgili Apple'ın belgelerine doğrudan gönderme yaparak

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

+1

info.plist sadece mutlak yollar alır ve teknik olarak etrafta hareket ettirilebilen uygulama paketimin içinde olmak için yola ihtiyacım var. Eğer onu ortamıma yerleştirirsem bu küreseldir, çünkü eğer bu da iyi olmazsa, diğer uygulamalar çevresel değişkeni kullanabilir. –

2

Jeff Wolski has the right idea. This thread ayrıca, alternatif belirtim yöntemleri ile ilişkili köşe durumları da dahil olmak üzere Xcode'a nasıl gidileceği konusunda mükemmel tavsiyeler sağlar (örneğin, kullanıcı için doğrudan ~/.bash_profile'u kullanarak).

Chiming in neden oldugunuz da size yardımcı olabilecek bir betik (ve bir destek sağlayıcısının aynı sorunu var gibi görünmesini) istemektedir. the applicable Webkit source code'dan ayrı olarak seçmek isteyebileceğiniz Webkit references such a script in its documentation'u ortaya çıkarır. Bu, en azından geliştiricilere göre, bunu doğru bir şekilde yapmalısınız.

Proje (ler) inizde bol şans.

+0

Run-safari betiğine bir göz attım ve betik işe yarayacaktı, ancak bir kullanıcı bir uygulama paketine tıkladığında bir betiğin nasıl çalıştırılacağını bilmiyorum. Uygulama grubumdaki yürütülebilir dosyanın oturumu için ayarlanan çevresel değişkenlere ihtiyacım var. –

+0

@MichaelWildermuth [Bu soru] 'na göre (http://stackoverflow.com/questions/281372/executing-shell-scripts-from-the-os-x-dock) çok sayıda seçenek bulunmaktadır. Bunlardan en az biri sizin gereksinimlerinizi karşılayacak, [.command' dosyasıyla] (http://stackoverflow.com/a/281386/517815) veya [marjinal olarak daha ayrıntılı Script Editor yaklaşımı] (http://stackoverflow.com/a/310183/517815). Bunlar sizin için çalışmazsa, diğer seçeneklerden bazılarını tartışacağız. :) – MrGomez

İlgili konular