2016-04-08 5 views
3

Ich entwickle Android-Anwendung.In der App muss ich mehrere Server wie Entwicklung, Bereitstellung und Produktion haben. Für jede Umgebung musste ich andere sensible Schlüssel angeben. Ich ändere Flagge für jede Umgebung manuell es für jetzt. Ich möchte Gradle verwenden, um dies zu automatisieren. Gemäß der allgemeinen Dokumentation gibt es eine Bezeichnung mit dem Namen Build-Typ wie Release und debug standardmäßig. Es gibt auch Produktaromen. Ich bin mir nicht sicher, welches und wie ich es benutzen soll. Jeder Rat wäre zu schätzen.Verwenden Sie Gradle, um App-Umgebung (Entwicklung/Produktion ...) automatisch zu ändern

Dies ist, wie ich App env in Application.java

public static final int APP_ENV = 2;//2 => dev, 1 => staging, 0 => production 

Dies ist, wie ich unterscheiden url und anderen Tasten ändern

switch (envVar){ 
      case DEV : 
       url ="http://a.com"; 
       google_analytic_id="aaaa.."; 
       .... 
       break; 
      case STAG : 
       url = "http://b.com"; 
       google_analytic_id="bbbb.."; 
       ..... 
       break; 
      case PRO : 
       google_analytic_id="cccc.."; 
       ..... 
       break; 
      default: 
       url ="http://a.com"; 
       break; 
     } 

Antwort

4

Sie Aromen verwenden sollten dafür. Eine partielle build.gradle Datei könnte wie folgt aussehen:

productFlavors { 
    production { 
    buildConfigField 'String', 'URL', '"http://a.com"' 
    } 
    development { 
     buildConfigField 'String', 'URL', '"http://b.com"' 
    } 
} 

die BuildConfig.java mit den von Ihnen bereitgestellten Informationen bevölkern werden. Dann in Ihrem Java-Code können Sie tun Dinge wie:

System.out.println("My URL is " + BuildConfig.URL); 

Und Sie können mit Ihrem speziellen Build erstellen:

gradle assembleProductionDebug 

oder

gradle assembleDevelopmentDebug 

(wo Sie Debug für Release wechseln nach Bedarf).

Einzelheiten, wie Produkt Aromen zu verwenden, ist die Antwort auf http://developer.android.com/tools/building/configuring-gradle.html

+0

Schätzen zur Verfügung, ich es zu versuchen werde. Danke danke – Sanny

+0

Woho es perfekt funktioniert. Gibt es eine Möglichkeit, diese URL aus der App-Eigenschaftsdatei zu erhalten? anstelle von Hardcore in Gradle-Datei – Sanny

+1

Sie können verschiedene Verzeichnisse für die Produktaromen erstellen und es wird sie verwenden. Wo Sie also 'src/main/resources/app.properties' haben, könnten Sie statt dessen 'src/production/resources/app.properties' und' src/development/resources/app.properties' haben und gradle wird das richtige auswählen Datei für den Geschmack. – jgm