Statische (iPhone) Bibliotheken, Verteilung und Abhängigkeiten

8

(Die folgende Frage ist vermutlich nicht spezifisch für das iPhone, abgesehen davon, dass wir wahrscheinlich ein Framework oder eine dynamische Bibliothek verwenden würden.)

Ich baue ein proprietäres iPhone SDK für einen Kunden, um es in sein Web-Backend zu integrieren. Da wir den Quellcode nicht an Kunden verteilen möchten, müssen wir das SDK als statische Bibliothek verteilen. Das alles funktioniert gut, und ich habe überprüft, dass ich neue iPhone-Apps mit der Bibliothek verknüpfen und auf dem Gerät installieren kann.

Mein Anliegen betrifft Bibliotheken von Drittanbietern, von denen unser SDK abhängt. Zum Beispiel verwenden wir derzeit HTTPRIot und Three20 (die genauen Bibliotheken können sich ändern, aber das ist nicht der Punkt). Ich bin besorgt, dass dies zu Konflikten führen könnte, wenn Kunden eine dieser Bibliotheken (und vielleicht sogar verschiedene Versionen) in ihrer App verwenden.

Was sind die besten Praktiken dabei? Gibt es eine Möglichkeit, die Symbole der abhängigen Bibliotheken aus unserer eigenen statischen Bibliothek auszuschließen (in diesem Fall müssten die Kunden sowohl unser SDK als auch HTTPRiot und Three20 manuell verknüpfen)? Oder gibt es einen anderen etablierten Mechanismus?

Ich versuche, ein Gleichgewicht zwischen Benutzerfreundlichkeit und Flexibilität / Kompatibilität zu finden. Idealerweise müssten Kunden nur unser eigenes SDK in ihr Projekt einfügen und eine minimale Anzahl von Build-Einstellungen ändern, aber wenn es die Dinge robuster macht, könnte es sinnvoller sein, Kunden individuell mit mehreren Bibliotheken zu verlinken. Oder ich denke, wir könnten mehrere Versionen des SDK mit und ohne Abhängigkeiten von Drittanbietern verteilen, um beide Fälle abzudecken.

Ich hoffe, dass meine Fragen einen Sinn ergeben ... Da ich hauptsächlich aus einem Ruby- und Java-Hintergrund komme, musste ich mich lange Zeit nicht mit kompilierten Bibliotheken (im traditionellen Sinne) beschäftigen ...;)

    
Mirko Froehlich 10.12.2009, 01:36
quelle

1 Antwort

1

Wenn ich es wäre, würde ich genau angeben, mit welchen Versionen dieser Bibliotheken von Drittanbietern meine Bibliothek interagiert. Ich würde dann gegen sie testen, sie dokumentieren und wahrscheinlich mit den in der Version enthaltenen Versionen liefern.

Zwei Dinge, um die ich mir Sorgen machen würde:
-Ich möchte sicher sein, dass es einfach funktioniert, wenn meine Kunden es installieren -Ich möchte keine Unterstützung für beliebige zukünftige Versionen dieser Drittanbieter-Bibliotheken garantieren.

Es ist in Ordnung, einen Prozess zu integrieren, damit der Kunde auf neuere Versionen umsteigen kann, aber wenn irgendetwas nicht funktioniert, würde ich erwarten, dass der Kunde diese Entwicklungsarbeit als Erweiterung bezahlt, anstatt es als kostenlosen Bugfix zu nutzen (es sei denn, Sie fügen dies in die ursprüngliche Lizenz- / Supportvereinbarung ein).

An diesem Punkt wird es zu einem Problem, sicherzustellen, dass Ihre spezifischen Versionen der Bibliotheken von Drittanbietern zusammen mit allem, was der Kunde benötigt (in Ihrem Fall ein Web-Backend), gut zusammenarbeiten können. Meiner Erfahrung nach ist dies normalerweise eine Funktion der Bibliothek, z. Einige sind nicht so konzipiert, so dass mehrere Versionen nebeneinander ausgeführt werden können.

    
Dan J 10.12.2009, 17:54
quelle

Tags und Links