2016-03-22 5 views
6

Ho due versioni nel mio progetto Android, una con test server e una con produzione. Conservo l'URL all'interno di una risorsa stringa, quindi posso accedere all'URL corretto in base a un gusto che scelgo per la compilazione. Di solito ho bisogno di creare più file apk durante un giorno, ogni volta per entrambi i server.Creare più file apk con una build di progetto in Android Studio

C'è un modo per creare due file apk ogni volta che eseguo il mio progetto o costruisco un apk dal menu Build?

+0

C'è anche un plugin Gradle: https://github.com/JcMinarro/ProperDroid –

risposta

7

Se hai qualcosa di simile:

android { 
    productFlavors { 
     dev { 
      applicationId "your.com.android.devel" 
      buildConfigField 'String', 'HOST', '"http://192.168.1.78"' 

     } 

     prod { 
      applicationId "your.com.android" 
      buildConfigField 'String', 'HOST', '"http://yourserver.com"' 
     } 
    } 
} 

Devi solo eseguire assemblare in Gradle proietta

enter image description here

e si possono trovare tutti i diversi APK costruire/uscite/apk

enter image description here

Spero che questo momento sarei più utile

1

È possibile utilizzare questa riga di comando in Gradle:

./gradlew assemble 

Oppure si può generare saparately tutti i sapori per il debug o rilascio rispettivamente

./gradlew assembleDebug 
./gradlew assembleRelase 
1

Mastering "Product Flavors" on Android

L'unica cosa che devi fare è definirla su ciascuno degli aromi del tuo prodotto:

android { 
    productFlavors { 
     devel { 
      applicationId "zuul.com.android.devel" 
     } 

     prod { 
      applicationId "zuul.com.android" 
     } 
    } 
} 

Invia richieste a più host in base all'aroma Come prima, è necessario includere alcuni parametri nel campo di configurazione dell'aroma del prodotto.

android { 
    productFlavors { 
     devel { 
      applicationId "zuul.com.android.devel" 
      buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"' 

     } 

     prod { 
      applicationId "zuul.com.android" 
       buildConfigField 'String', 'HOST', '"http://api.zuul.com"' 

     } 
    } 
} 

A titolo di esempio, cercheremo di mostrare come è possibile integrare questo con Retrofit per inviare richiesta al server appropriata senza manipolazione quale server si sta puntando e basato sul sapore. In questo caso si tratta di un estratto della app Android Zuul:

public class RetrofitModule { 

    public ZuulService getRestAdapter() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(BuildConfig.HOST) 
       .setLogLevel(RestAdapter.LogLevel.FULL) 
       .build(); 
     return restAdapter.create(ZuulService.class); 
    } 

} 

Come si può vedere è sufficiente utilizzare il BuildConfigclass di accedere alla variabile che avete appena definito.

+0

Sebbene sia un esempio utile, non risponde alla domanda originale. –