(presumibilmente alla seguente domanda non è iPhone specifico, a parte il fatto che probabilmente useremmo un quadro o una libreria dinamica in altro modo.)statici (iPhone) biblioteche, la distribuzione, e le dipendenze
Sto costruendo un iPhone proprietaria SDK per un client, da integrare con il loro back-end web. Dato che non vogliamo distribuire il codice sorgente ai clienti, dobbiamo distribuire l'SDK come libreria statica. Funziona tutto bene e ho verificato che posso collegare nuove app per iPhone alla libreria e installarle sul dispositivo.
La mia preoccupazione riguarda le librerie di terze parti da cui dipende il nostro SDK. Ad esempio, attualmente stiamo usando HTTPRiot e Three20 (le librerie esatte possono cambiare, ma non è questo il punto). Sono preoccupato che questo possa causare conflitti se i clienti utilizzano anche una di queste librerie (e forse anche versioni diverse) nella loro app.
Quali sono le migliori pratiche intorno a questo? Esiste un modo per escludere i simboli delle librerie dipendenti dalla nostra libreria statica (nel qual caso i clienti dovrebbero collegarsi manualmente sia al nostro SDK che a HTTPRiot e Three20)? O c'è qualche altro meccanismo stabilito?
Sto cercando di trovare un equilibrio tra facilità d'uso e flessibilità/compatibilità. Idealmente, i clienti dovrebbero solo abbandonare il nostro SDK nel loro progetto e apportare un numero minimo di modifiche alle impostazioni di costruzione, ma se rende le cose più robuste, potrebbe avere più senso che i clienti si colleghino su più librerie individualmente. O suppongo che potremmo distribuire più versioni dell'SDK, con e senza dipendenze di terze parti, per coprire entrambi i casi.
spero che le mie domande hanno senso ... provenienti principalmente da un Ruby e Java fondo, non ho avuto a che fare con le librerie compilate (in senso tradizionale) per un lungo periodo ...;)
Sembra un approccio ragionevole. Il controllo delle versioni è un po 'complicato, in quanto alcune delle librerie di terze parti sono distribuite in forma sorgente e non hanno versioni esplicite. Ma suppongo di poter puntare a uno specifico commit o data Github. Hai menzionato la possibilità di includere un processo (non supportato) per i clienti per aggiornare le librerie di terze parti. Come potrei davvero andare su questo? Sembra che ciò provocherebbe un conflitto, dal momento che i simboli di terze parti diventano effettivamente parte del nostro SDK. –
Non ho avuto il tempo di pensarci, ma i "collegamenti deboli" ti aiutano affatto? http://developer.apple.it/iphone/news/archives/november2009/# adding3xto2x –
Immagino che potresti dare loro uno script per ricostruire il prodotto generale (che include la tua libreria e gli altri di terze parti)? Finché hanno installato l'SDK iPhone (> 2GB), puoi dare loro uno script che invochi xcodebuild per un semplice progetto Xcode che trattiene tutto insieme? Un po 'di confusione però. La cosa più semplice è mandare le versioni e insistere affinché ti contattino (e paghino) per una nuova versione contro le librerie aggiornate. Puoi includere anche un po 'di test di accettazione nel prezzo ... IMO è del tutto ragionevole che tu lo faccia. –