Questa domanda potrebbe essere soggettiva, ma credo StackOverflow è ancora il posto migliore per chiedere:Costruire in Android/IntelliJ/Jenkins
Il problema di dominio è "la programmazione Android avanzati". Non ho bisogno di informazioni su come impostare un singolo progetto Android, su come utilizzare i progetti di libreria o su come usare ANT per costruire un progetto normale.
Supponiamo di avere un'app in esecuzione, un normale progetto Android (IDE di scelta è IntelliJ, ma non dovrebbe essere un problema) costruito da Jenkins/Ant/Proguard. Il risultato di questa build è l'APK finale che avresti inserito nel Play Store.
Ora immagina di aver bisogno di questa App come versione gratuita ea pagamento. Nessun problema finora, è sufficiente inserire tutto il codice condiviso in un progetto di libreria e creare due progetti figlio, uno con un'app.java che abilita i controlli di licenza, l'altro ad es. limitando l'uso.
Ora immagina di voler indirizzare anche Amazon, magari una versione di comunicato stampa, ecc. Quindi il tuo codice inizia a divergere, con ancora molte cose condivise, ma alcune parti sono specifiche per es. il mercato che scegli come target.
In C# ci sono "istruzioni di compilazione condizionale", come "SE PLAY_STORE ...". C'è qualcosa di simile per Java/Android. Inoltre, giocano bene con ANT e il processo di costruzione.
Ma non sono limitato alla compilazione condizionale. L'approccio "un progetto per mercato" è diverso. Sto solo cercando di capire come gestisci queste varie "configurazioni di build" in modo sostenibile. Significa che funziona per 15 progetti, destinati a 3 mercati in 2 versioni (GRATUITO e PAGATO). Spero che tu capisca cosa sto suggerendo. Il codice è molto simile per tutte le app, ma con l'esempio sopra avrò 90 APK diversi - con questi numeri il "commentare manualmente nel codice sorgente richiesto solo da questa build, ecc" non lo taglia più.
Quindi suggerimenti, strumenti, parole di ricerca, esperienze con questi domini problematici (ad esempio MAVEN, mi aiuterebbe con uno di questi, oppure gli script ANT + che generano build.xml vanno meglio). Un altro esempio, se ho un progetto Android "reale" per tutti i mercati di destinazione, questo mi permetterebbe di fare quasi tutto. Ma ovviamente, se aggiungo una nuova pagina nel livello più basso (ad esempio una pagina di stampa) dovrei andare in 90 Manifest.xml per aggiungere la pagina ...
Grazie per qualsiasi aiuto con questo, Chris
PS: vorrei aggiungere alcuni link che ho trovato su questo tema in fondo, se qualcuno si imbatte in questa domanda, mentre non ci sono risposte, questo potrebbe essere un "prima di leggere questo" capitolo
http://www.asyncdev.net/2011/02/android-dev-prod-builds/
http://www.slf4j.org/ (correlato nel "JAR messo in t o fornire "modo IMPL"
(SLF4J è solo un buon approccio per ridurre le dipendenze e fornire la configurazione durante l'implementazione, semplicemente aggiungendo un JAR differente. Usare qualcosa di simile potrebbe essere eccessivo per i propri progetti, ma sarebbe un modo. Per esempio. per l'interfaccia di scrittura della licenza e un po 'di codice come SLF4J, quindi fornire PressRelease.jar o Productive.jar nella cartella Lib durante la compilazione, cambiando il modo in cui l'app si comporta ...)
Hai trovato una soluzione per questo? Sto anche cercando di capire il modo migliore per raggiungere questo obiettivo. Grazie – LocoMike
No, ancora provando cose. Molto probabilmente finirò con, ad es. una combinazione di StaticLoggerBinder -> JAR -> Replace_On_Build -> ConfigureByStaticBool (ma al posto del tipo Logger di BoolService).Devi andare nella slf4j per capire la frase :-) –
Quindi ricostruire (immette) slf4j fornendo bool invece di logger –