Mi sono trovato in una situazione simile.
Avevo una singola app ma creata per clienti diversi (con personalizzazione specifica come risorse, proprietà ...). Alla fine ho deciso di gestire il tutto usando Maven.
Quello che ho fatto è creare una cartella "config" nella mia base di codice e al suo interno ho aggiunto al cliente una cartella contenente le proprietà, la stringa, le immagini relative a lui.
La mia struttura è qualcosa di simile:
MyAppBase
src/
build/
BaseAndroidManifest.xml
...
config/
customerA/
logo.png
customerA.xml
customerA.properties
customerB/
customerC/
...
Utilizzando manufatti Maven per la copia, spostare, sostituire ho poi riuscito a costruire apk specifiche del cliente nel modo seguente:
1) Creazione di un cartella di origine specifica del cliente temporanea in cui tutto il codice viene copiato
<copy todir="src_${customer}">
<fileset dir="src"/>
</copy>
2) Rinominare i pacchetti e le importazioni
<!-- Rename main package -->
<move file="src_${customer}/ch/wizche/myapp" tofile="src_${customer}/ch/wizche/${customer}"/>
<!-- Replace package imports with the newly one -->
<replace dir="src_${customer}/" value="ch.wizche.${customer}">
<include name="**/*.java"/>
<replacetoken>ch.wizche.myapp</replacetoken>
</replace>
3) Sostituire risorse specifiche in base al cliente
<!-- Copy images icon to the drawable folder -->
<copy file="./configs/${customer}/ic_launcher_l.png" tofile="./res/drawable-ldpi/ic_launcher.png" overwrite="true" verbose="true"/>
<copy file="./configs/${customer}/ic_launcher_m.png" tofile="./res/drawable-mdpi/ic_launcher.png" overwrite="true" verbose="true"/>
4) Sostituire i nomi di "template" AndroidManifest e versioni dei clienti per via parenterale,, ...
<copy file="./BaseAndroidManifest.xml" tofile="./AndroidManifest.xml" overwrite="true" verbose="true"/>
<replace file="./AndroidManifest.xml" value="ch.wizche.${customer}" token="ch.wizche.myapp"/>
<replace file="./AndroidManifest.xml" value="android:versionCode="${versionCode}" token="android:versionCode="1"/>
5) Firma alias utilizzando cliente
6) Costruzione APK
7) Eliminazione cartella cliente temporanea
Quindi, per costruire una specifica applicazione del cliente, ho solo bisogno di:
mvn install -Dcustomer=customerA -P release
Spero che questo possa darti alcuni input.
hanno cercato di leggere ultima guida google sul tema? A volte forse (se possibile) che cambia il nostro punto di vista e il rispetto di un comportamento standard può risparmiare un sacco di codice. Il concetto _key del sistema operativo Android è che la durata dell'applicazione è gestita dal sistema operativo. La tua domanda sembra toccare qualcosa che dovrebbe essere fatto in un modo predefinito, prima di tutto cercherò di rispettare le _Google_ guidelines. Qui per riferimento utente http://developer.android.com/index.html. – jay
Ho provato a sostituire AndroidManifest.xml. ma in un file apk, manifest.xml è codificato come binario. come posso convertire il mio nuovo file .xml in un formato codificato binario come quello originale? – Mbt925
Se possiedi il codice sorgente, è molto meglio fare ciò che hai chiesto nella sorgente raw oltre all'apk precompilato. È possibile utilizzare gli strumenti di compilazione (Ant, Maven e Gradle) per standardizzare, semplificare e automatizzare il processo di creazione. – yorkw