2013-06-14 13 views
22

Ho un'app che deve essere creata più volte con risorse diverse per clienti diversi (branding, configurazione e cambio dei dati pre-caricati tra i clienti).È possibile utilizzare il sistema di generazione Gradle per Android con Eclipse?

Sulla scia del Google I/O di quest'anno ho sentito parlare del nuovo sistema di build Android basato su Gradle. Così ho pensato, sarebbe stata una buona idea, realizzare questo scenario a una fonte/più apk usando uno script di build Gradle.

Ora ecco la mia domanda: come posso iniziare a utilizzare Gradle per la creazione mentre si appoggia a Eclipse? Tutte le letture che ho trovato online puntano a convertire il progetto in Studio Android ancora immaturo. Mi piacerebbe rimandare la migrazione ad Android Studio fino a quando non viene dichiarato "sicuro" per l'utilizzo di produzione da parte di Google.

Idealmente, mi piacerebbe essere in grado di collegare gli script di compilazione alle configurazioni di debug ed esecuzione di Eclipse, nello stesso modo in cui posso selezionare e scegliere diversi target di compilazione per il debug e l'archiviazione in XCode . Se è possibile, quali passaggi sono necessari per farlo funzionare?

Mi scuso per la qualità noobish di queste domande, ma per me questo è in realtà un paese piuttosto inesplorato. Qualsiasi aiuto è apprezzato.

Edit: Il nostro team ha migrato ad Android Studio a fine ottobre 2013 e dalla versione 0.4 sono stati sono incontrando sempre meno bug. Se la tua organizzazione non è super-conservatrice riguardo all'adozione di ambienti pre-1.0 per lo sviluppo, ti incoraggerei a buttarti nell'acqua fredda e provare a lavorare con Android Studio e il suo sistema di build Gradle. L'unica cosa importante che manca a IMHO è il supporto decente per i test unitari.

+1

AFAIK, al momento non esiste un supporto ufficiale per le versioni basate su Gradle di Eclipse, oltre a eseguire le build da soli alla riga di comando. Il supporto al progetto Eclipse/Gradle arriverà alla fine. – CommonsWare

+0

Grazie, che mi fa sentire meno incompetenti già :-) – Chris

+0

Tuttavia, in tutta onestà, non ho idea se c'è un modo non ufficiale/non supportata di realizzare il vostro obiettivo ... è per questo che sto postando questi come commenti. :-) – CommonsWare

risposta

24

È possibile utilizzare 2 sistemi di costruzione (basato su Eclipse + gradle). Assicurati solo che le cartelle di output siano diverse (bin per ADT, build per gradle). (Aggiornamento per TL; DR: controllare Nodeclipse/Enide Gradle for Eclipse (marketplace))

File -> Export -> Generate Gradle build files sarà solo aggiungere build.gradle con i contenuti al di sotto (ma controllare le versioni). Nessun file esistente viene modificato.

com.android.tools.build:gradle versione deve essere the latest. Per il tipo di gradino gradle build come detto in http://tools.android.com/tech-docs/new-build-system/user-guide. Prova gradle tasks per ulteriori informazioni. (Sulla mia connessione Internet lenta ci sono voluti 1 ora! Per gradle scaricare tutte le dipendenze necessarie)

Vogella tutorial http://www.vogella.com/articles/AndroidBuild/article.html non è ancora pronto. Altre esercitazioni online non sono state completate http://www.jayway.com/2013/02/26/using-gradle-for-building-android-applications/

Eclipse ADT non sta ancora utilizzando gradle, penso che sarà lucidato all'interno di Android Studio prima. Non sarebbe altrettanto saggio iniziare a utilizzare la tecnologia in evoluzione in entrambi gli IDE allo stesso tempo.

Vedere l'esempio build.gradle qui sotto. Se hai già imparato il gradle, forse Magari non è affatto necessario. Per il modello più recente build.gradle per il controllo del progetto Android classico gh.c/N/n-1/b/m/o.n.e.e.g/docs/android/build.gradle.

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 

android { 
    compileSdkVersion 8 
    buildToolsVersion "19.0.0" 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
} 

ADT-Bundle non viene fornito con Eclipse Marketplace, in modo da sito di aggiornamento potrebbe essere usato.

Aggiornamento repository P2 per Gradle Integration for Eclipse è

http://dist.springsource.com/release/TOOLS/gradle

Ma a partire dalla versione 3.4.0 non fornisce editor per file .gradle. Quindi non ha senso averlo per lo sviluppo Android.

Vorrei andare con build ADT predefinito, con gradle come build secondario per le sperimentazioni e tenere d'occhio quando il flusso di bug su http://tools.android.com/tech-docs/new-build-system diventa raro. (Che dovrebbe essere intorno formale la versione 1.0)

UPDATE: 2014-04-15

Alex Ruiz's (from Android team) Blog about Android, Gradle & ADT

di Android Gradle modello

Invece di creare modelli Android/Gradle specifiche IDE, abbiamo ha deciso di avere una rappresentazione agnostica IDE di un progetto Gradle. In questo modo, abbiamo un'unica fonte di informazioni che è più facile da mantenere. L'integrazione di IDE sarà implementata come plug-in per ciascun IDE supportato (nel nostro caso, Eclipse e IDEA). Il vantaggio principale di questo approccio è la possibilità di rilasciare il plug-in Gradle indipendentemente dai plug-in di integrazione IDE. Ad esempio, possiamo spedire una nuova versione del plug-in Eclipse che ha diverse correzioni di bug, senza intaccare il lato Gradle di Android.

Come di aprile 2014 plugin di Eclipse-Gradle non è compatibile con Android-Gradle plugin:

Come risolta in Issue 57668 dal team di Android (sollevata da @arcone)

Progetto Membro # 2 x ... @ android.com

Il plugin eclipse non è compatibile con il plug-in Android.

Non sarà in grado di importare un progetto Gradle Android in Eclipse utilizzando il supporto di default Gradle in Eclipse.

Per farlo funzionare in Eclipse dovremo cambiare il plugin Gradle per Eclipse, allo stesso modo in cui stiamo modificando il supporto Gradle in IntelliJ

che è team di Android sta lavorando su plug Gradle per IntelliJ e anche il plugin gradle per Eclipse deve essere aggiornato.

C'è effort at Nodeclipse per smussare i tempi di transizione. E continua a svilupparsi in Eclipse mentre stai ancora sperimentando o utilizzando completamente gradle.

Nodeclipse/Enide Gradle for Eclipse (marketplace)

Alcuni screenshots per Gradle per Eclipse:

+2

Wow, grazie per aver aggiornato la risposta. Nel frattempo, tuttavia, il nostro team è completamente migrato su Android Studio e siamo abbastanza contenti. Immagino che questa risposta sarà molto utile per tutti gli altri sviluppatori che stanno esaminando l'enigma del sistema di build Android. Grazie ancora! – Chris

+1

Il tempo risolve tutto, ma a volte correre al software più recente passerà più tempo del previsto. A partire da aprile 2014 il nuovo sistema di build basato su gradli è 0.9 e sembra arrivare alla versione 1.0 finale. Il momento di adottare più ampiamente sta arrivando. –

+1

Il team di Google sembra ignorare completamente l'aggiunta del supporto per la creazione di app Android con gradle in eclissi. – Martin

1
  1. Install Gradle:
    a. http://gradle.org/gradle-download/ b. Scegli 2.1 dalla sezione delle versioni precedenti. c. Decomprimere nella comoda cartella. (Es .: D: \ Graddle \ gradle-2.1) d. Imposta le variabili di ambiente del sistema. i. GRADLE_HOME come D: \ Graddle \ gradle-2.1) ii. GRADLE_OPTS come -XX: MaxPermSize = 512m iii. % GRADLE_HOME% \ bin al percorso iv. Imposta ANDROID_HOME (Es: D: \ android-sdk) v. Aggiungi "% ANDROID% \ platform-tools" al percorso.

e. Apri il prompt dei comandi e controlla che gradle sia impostato. Può usare gradle -version per controllare.

  1. Installare Gradle Plug-in Eclipse: a. Avvia Eclipse b. Guida> Mercato di Eclipse c. Cerca "gradle" d. In questo scegli "Nodeeclipse/enide" e. Seleziona tutto elencato, accetta l'installazione &. f. Riavvia Eclipse una volta installato.

  2. Set Grado & Case Java: a. Avvia eclissi. b. Finestra> Preferenze> Grado Enide c. Impostare questi se non impostato: i. Gradle home to use è impostato (Es: D: \ Graddle \ gradle-2.1) ii. È necessario impostare JAVA_HOME alternativo da utilizzare (Es: C: \ Programmi (x86) \ Java \ jdk1.7.0_60) iii. Le opzioni JVM per GRADLE_OPTS sono impostate su "-XX: MaxPermSize = 512m"

  3. Creare il progetto: a. Espandi APK in eclissi Java explorer. b. Fare clic con il tasto destro su build.gradle c. Esegui come> Gradle GUI d. Comand Line: gradle clean build e. Attendi il completamento della compilazione: la prima build richiederà alcuni minuti. f. Se l'errore Build dex o l'errore di spazio heap Java: i. Apri build.gradle nell'editor. ii. Per build multi dex: impostare javaMaxHeapSize appropriato in base a java (javaMaxHeapSize = 1024M per Java a 32 bit, 2048M per Java a 64 bit) iii. Può la registrazione di commenti (// applicare da: "$ rootProject.projectDir/jenkins_config/gradle/signing.gradle";) per evitare la firma per la compilazione di debug. iv. Costruisci di nuovo dopo queste correzioni.

  4. Installazione dispositivo di installazione: a. Collegare il dispositivo a m/c. b. Fare clic con il tasto destro su build.gradle c. Esegui come> gradle installDebug Gradle Android start d. Attendere il completamento dell'installazione

  5. Creazione debug: a. Avvia l'app b. Allega il debugger (DDMS> Dispositivi> App). c.Siamo in grado di eseguire il debug su pochi dispositivi controllati.

Problemi correlati