2013-06-27 13 views
13

Sto usando i Developer Tools Android 22, Eclipse Indigo e la corrente plugin Gradle per Eclipse.ADT Eclipse + Gradle: incompleta BuildConfig.java

Ora vorrei usare sapori diversi, definendo nel file build.gradle:

 productFlavors{ 
    A { 
     packageName "com.test.A" 
     buildConfig "public final static String FLAVOR = \"A\";" 

    } 
    B { 
     packageName "com.test.B" 
     buildConfig "public final static String FLAVOR = \"B\";" 
    } 
} 

Per quanto so di poter accedere a queste variabili utilizzando BuildConfig.FLAVOR, ma la definizione di FLAVOR è mancante nella BuildConfig.java generata nella cartella gen.

Se monto il mio progetto tramite il Gradle BuildConfig.java corretta e completa viene generato nella cartella build/source/buildConfig/[A | B]/[debug | stampa]/com/test/.

Funziona se io costruisco il progetto sopra Gradle, ma non riesco a lavorare con Eclipse, perché si aspetta che le variabili sono definite nel BuildConfig.java in gen cartella

Posso forzare Gradle o l'adt per generare il BuildConfig.java corretto nella cartella gen?

+0

Attualmente sto facendo la stessa domanda. Presumo che non sia attualmente possibile a causa della mancanza di supporto per gli strumenti nell'ADT. È possibile utilizzare la riflessione per ottenere il valore di FLAVOR per ora. – Moritz

risposta

2

Android Studio è all'avanguardia (non ancora beta).

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 plugin di 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.

È possibile sviluppare in Eclipse con ADT ed eseguire Gradle costruire utilizzando Nodeclipse/Enide Gradle for Eclipse (marketplace)

Alcuni screenshots per Gradle for Eclipse:

Ci sono some plans for Android with Gradle Development in Eclipse

1

Utilizzo Eclipse con il nuovo plugin Gradle non è supportato, si consiglia di utilizzare Android Studio, invece.

Inoltre, poiché questo è stato chiesto, al plugin è stata aggiunta questa funzionalità. Dal release notes for version 0.7.0 of the Android Gradle plugin:

Corporatura Config ora contiene automaticamente più costanti per PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, SAPORE così come FLAVOR_ se ci sono diverse dimensioni di sapore.

1

Posso forzare gradle o l'adt per generare il BuildConfig.java corretto nella cartella gen?

Sì, con un hack: una volta :generateDebugBuildConfig (sostituire Debug con la variante è necessario) ha eseguito in Gradle, avrai la BuildConfig.java quello che ti serve.

Ho fatto questo su Windows, ma dovrebbe essere lo stesso per Unix con la shell preferito e cp

  1. Aprire Proprietà del progetto e passare alla Costruttori
  2. Aggiungere un cantiere "Programma"
    • Posizione: C:\Windows\System32\cmd.exe
    • Directory di lavoro: Sfoglia area di lavoro ... e selezionare Il nostro progetto,
      il risultato sarà qualcosa di simile: ${workspace_loc:/YourProject}
    • Argomenti: /c "xcopy build\generated\source\buildConfig\debug gen /S /I /Y"
    • Impostare quando eseguire
      • scheda Refresh: "Risorse specifiche" selezionare gen cartella
      • costruire scheda Opzioni: "Dopo Clean", "Manuale", "Auto" e "Specificare Risorse" per essere cartella principale del progetto
  3. Assicurarsi che questo nuovo costruttore si trova tra Android Pre Compiler e Java Builder

Nota: questo è davvero lavorando contro ADT e probabilmente ci saranno altri pezzi mancanti si possono trovare difficile da gestire (applicationIdSuffix, resValue, fonte variante cartelle, solo per citarne alcuni). Potrebbe essere più facile rinunciare ad Eclipse ADT e passare ad Android Studio, Google sembra volerlo comunque senza ammetterlo pubblicamente. Non ci sono stati progressi reali su ADT da quando hanno detto che lo manterranno all'I/O 2013.

Problemi correlati