2011-01-19 20 views
12

Abbiamo diverse app che saranno molto simili nel layout e nel codice. L'unica differenza è che si elimineranno elementi grafici e si apportano modifiche a un singolo file di costanti e un file di stringhe. Naturalmente, ci sono diversi problemi con questo: il primo è namespace. Avere un'app con lo stesso spazio dei nomi sovrascriverà qualsiasi altra app.Bulk Publishing di app Android

Quali sono alcuni suggerimenti per farlo? Attualmente il nostro namesapce è: com.company.AppName ho pensato che poteva fare: com.company.appname.appversion

Ho visto post su script ant che aiuta con questo, ma mi chiedo se c'è più soluzioni fluide ora.

+0

Non mettere in discussione il design della tua app perché non ho idea di quale sia il suo scopo, ma sembra che ciò potrebbe essere semplificato con un'app con più temi? –

+0

Se non si desidera utilizzare le librerie, ho pubblicato una soluzione qui: http://stackoverflow.com/questions/3711967/best-way-to-have-paid-and-free-version-of-an -android-app/13111546 # 13111546 –

risposta

18

Suggerisco di esaminare Android Library Projects per aiutare con questo.

Io uso questo approccio per le edizioni Lite vs. Free di una delle mie app. Dispongo di un progetto Libreria che contiene tutta la fonte e la maggior parte delle risorse per le app e quindi 2 progetti che utilizzano il primo come progetto di libreria, uno per Lite e uno per la versione completa.

I due progetti dipendenti hanno ciascuno le proprie risorse e si manifestano, consentendo allo spazio dei nomi di essere diverso e per me scambiare in diverse stringhe, drawable, ecc. A seconda dell'edizione.

Ho provato l'approccio Ant ma sembrava essere molto più di un problema rispetto all'approccio del progetto Libreria. Spero possa aiutare.

+0

Quindi, sto avendo difficoltà a capire come farlo. Ho l'applicazione principale come libreria, ma ora quando provo a sovrascrivere un file di costanti, genera degli errori. Immagino che questo dovrebbe essere previsto così come funziona Java, tuttavia non sono sicuro di come dovrei farlo allora. Devo importare un file di costanti nel progetto principale che non esiste? – bryon

+1

Stai dicendo che hai definito costanti in una classe java e speri di avere la stessa classe in ciascuno dei tuoi progetti con valori diversi per ogni edizione della tua app? Le collisioni nello spazio dei nomi non lo permetteranno. Penso che dovrai considerare di spostare i tuoi valori in risorse, in modo che possano esistere nel progetto principale/della biblioteca, ma poi essere sostituiti da risorse con lo stesso nome nei progetti dipendenti. Guarda le parti nel link dei documenti Android sopra che discutono come le risorse vengono unite in progetti lib. – mmeyer

+0

Sono andato con questo approccio e ora sto cercando di fare un upgrade senza problemi dalla versione gratuita a quella a pagamento, sapendo che [due applicazioni non possono offrire lo stesso contentprovider] (http://stackoverflow.com/questions/3306639/multiple -apps-use-same-content-provider) – rds