2009-12-10 15 views
8

(Tahminen şu soru aksi bir Framework veya dinamik kütüphane kullanma olasılığı olurdu aslında kenara, iPhone özgü değildir.)Statik (iPhone) kütüphaneler, dağıtımı ve bağımlılıkları

Ben tescilli iPhone inşa ediyorum Bir müşterinin SDK'sini web arka uçlarıyla entegre etmek. Kaynak kodunu müşterilere dağıtmak istemediğimizden, SDK'yı statik bir kütüphane olarak dağıtmamız gerekiyor. Tüm bunlar iyi çalışıyor ve yeni iPhone uygulamalarını kütüphaneye bağlayıp cihazınıza yükleyebileceğimi doğruladım.

Sorunum, SDK'mizin bağımlı olduğu üçüncü taraf kitaplıkları ile ilgilidir. Mesela şu anda HTTPRiot ve Three20 kullanıyoruz (tam kütüphaneler değişebilir, fakat konu bu değil). Müşterilerin bu kitaplıklardan herhangi birini (ve belki de farklı sürümlerini) de uygulamalarında kullanmaları durumunda bunun anlaşmazlıklara yol açabileceğinden endişeleniyorum.

Bu konuda en iyi uygulamalar nelerdir? Bağımlı kütüphanelerin sembollerini kendi statik kütüphanemizden çıkarmanın bir yolu var mı (bu durumda müşterilerimiz hem SDK'mız hem de HTTPRiot ve Three20 ile manuel olarak bağlantı kurmak zorunda kalacaklardı)? Yoksa başka bir mekanizma var mı?

Kullanım kolaylığı ile esneklik/uyumluluk arasında bir denge kurmaya çalışıyorum. İdeal olarak müşterilerimiz kendi SDK'mizi kendi projelerine bırakmalı ve çok az sayıda yapı ayarları değişikliği yapmalıdır, ancak işleri daha sağlam kılarsa, müşterilerin tek tek çoklu kütüphanelere karşı bağlantı kurması daha mantıklı olabilir. Ya da her iki vakayı da kapsayacak şekilde üçüncü taraf bağımlılıkları olan ve olmayan SDK'nın birden çok sürümünü dağıtabileceğimizi varsayalım.)

cevap

1
;

Ben, uzun zamandır ... için (geleneksel anlamda) derlenmiş kütüphaneler ile uğraşmak zorunda değil benim soruları Ruby ve Java arka plandan esas Coming ... mantıklı umut

Eğer ben olsaydım, kitaplığımın birlikte çalıştığı üçüncü taraf kitaplıklarının hangi sürümlerini tam olarak belirtirdim. Onlara karşı test edeceğim, belgeleyecek ve muhtemelen sürümde yer alan belirli versiyonlarla birlikte sunacağım.

Endişeleneceğim iki şey:
-Müşterilerimin kurulumu sırasında 'sadece çalışır' olduğundan emin olmak isterim.
- Bu üçüncü taraf kitaplıklarının gelecekteki gelecek sürümleri için destek garanti etmek istemem.

Müşterinin daha yeni sürümlere taşınması için bir işlem eklemek iyi bir şeydir, ancak bir şey işe yaramazsa, müşterinin ücretsiz bir hata olmaktan ziyade bir geliştirme olarak bu geliştirme çalışması için ödeme yapmasını beklerim. Düzeltme (bunu, orijinal lisans/destek düzenlemesine dahil etmedikçe). Bu noktada, üçüncü taraf kütüphanelerinin belirli sürümlerinin, müşterilerinizin ihtiyaç duyduğu her şeyle (sizin bir web arka planında) birlikte çalışabilmelerini sağlamanın bir sorunu haline gelmektedir. Benim deneyimimde genellikle kütüphanenin bir işlevi, ör. Bazıları, birden çok sürümün yan yana çalışabilmesi için tasarlanmamıştır.

+0

Makul bir yaklaşım gibi görünüyor. Bazı üçüncü taraf kitaplıklarının kaynak biçiminde dağıtıldığı ve açık sürümlendirmeye sahip olmadığı için, sürüm biraz zor. Ama sanırım belirli bir Github taahhüdünü veya tarihini gösterebilirim. Müşterilerin, üçüncü taraf kitaplıklarını yükseltmeleri için desteklenmeyen bir işlem ekleme olasılığından bahsetmiştiniz. Bunu nasıl değiştirirdim? Üçüncü parti sembolleri kendi SDK'larımızın bir parçası haline geldiğinden, bunun bir çatışma ile sonuçlanacağı anlaşılıyor. –

+1

Bunu düşünmek için zamanım olmadı, ama "zayıf bağlantı" size hiç yardımcı olur mu? http://developer.apple.com/iphone/news/archives/november2009/# adding3xto2x –

+0

Genel olarak, ürünü (kitaplığınızı ve diğer üçüncü tarafları içeren) yeniden oluşturmak için bir betik verebilir misiniz? (> 2GB) iPhone SDK'nın kurulu olduğu sürece, bunları her şeyi bir arada tutan basit bir Xcode projesi için xcodebuild'i çağıran bir betik verebilir misiniz? Biraz karışıklık olsa da. En kolay şey, sürümleri yetkilendirmek ve yükseltilmiş kütüphanelere karşı yeni bir sürüm için sizinle iletişim kurmakta ısrar etmektir. Çok fazla kabul testini fiyata da dahil edebilirsiniz ... IMO bunu yapmak için tamamen makul. –