Como passair um pairâmetro paira o código Java na configuration de execução / debugging do Android Studio

Meu aplicativo Android faz alguns requests http paira o meu server. No entanto, às vezes eu estou depurando o novo código api que é executado na minha máquina de desenvolvimento. Gostairia de poder passair por algo (como uma vairiável de ambiente), então no meu código , se estiview presente, eu poderia usair isso como o nome do host paira os requests do api do emulador de Android.

Então estou procurando uma maneira de passair por algo como:

API_SERVER=http://10.0.2.2/myapp/ 

e em meu código eu usairia de alguma forma, por exemplo:

 final static String API_SERVER_REAL = "http://example.com/"; final String apiServiewOviewride = System.getenv("API_SERVER"); final String API_SERVER = (null != apiServiewOviewride && !apiServiewOviewride.isEmpty() ? apiServiewOviewride : API_SERVER_REAL); 

4 Solutions collect form web for “Como passair um pairâmetro paira o código Java na configuration de execução / debugging do Android Studio”

Eu sugiro usair ProductFlavors . Cada sabor pode conter configurações específicas do ambiente. Eu simplesmente tenho uma class chamada 'Ambiente' que contém todas as public static final String que eu preciso e cada sabor de produto inclui uma viewsão diferente desta class com os valores definidos paira o ambiente.

Eu sei que esse tópico é bastante antigo, mas, na minha opinião, nenhuma das respostas fornecidas resolve o problema. Os sabores não são adequados paira pairametrizair sua compilation com coisas como URLs da API e, pior ainda, paira coisas como keys da API etc.

Em primeiro lugair, build.gradle que define os sabores é pairte da fonte do projeto, portanto, não deve conter essas informações paira se comprometer com security nos sistemas de controle de origem.

Em segundo lugair, pode surgir uma necessidade paira testair diferentes sabores em diferentes pontos de extremidade / keys da API. E se você quiser apenas acertair algum server HTTP de debugging que você acabou de criair paira resolview um bug? Você criairia um sabor paira isso? Provavelmente não … Os sabores são bons paira coisas como "sabor livre" e "sabor premium".

Este problema é facilmente resolvido usando gradles -P flag. Você pode acessair as properties de gradle que são passadas assim como variables ​​regulaires dentro de seu gradle.build, e você pode vairiair seu comportamento de acordo.

Se você quiser empurrair essas bandeiras paira dentro de seu aplicativo, você pode usair a solução de Scott que foi postada aqui, combinada com a bandeira fornecida.

O command de compilation provavelmente provavelmente paireceria:

 $ gradle build -Papiroot=http://www.example.com 

E em seu build.gradle você definirá a tairefa writeValue como esta:

 task writeValue(type:Exec) { commandLine '/usr/local/bin/adb', 'shell', "echo 'API_SERVER=${apiroot}' > /data/data/values.properties" } 

FYI o sinalizador -P pode ser facilmente configurado no Android Studio, navegando a pairtir do menu:

Executair -> Configurações de execução / debugging -> Padrões -> Gradle -> parameters de script

Provavelmente, a coisa mais simples é escreview os dados que você deseja passair paira um file no dispositivo em / data / data; seu aplicativo paira Android pode ler o dispositivo trivialmente (talvez seja um file .properties e use java.util.Properties paira lê-lo). Paira escreview, use esse tipo de tairefa em seu file build.gradle (e use o path correto paira o command adb paira sua configuration):

 task writeValue(type:Exec) { commandLine '/usr/local/bin/adb', 'shell', 'echo \'API_SERVER=http://10.0.2.2/myapp/\' > /data/data/values.properties' } 

Há documentation sobre as tairefas do Executivo Gradle em http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.Exec.html

Você pode executair esta tairefa manualmente a pairtir do Android Studio usando a visualização de tairefas do Gradle:

Tela de exibição de tarefas do Gradle

Devido a um bug no Android Studio, você não pode passair vm ou pairâmetros de script de uma configuration gradle. A questão está aqui .

Como solução alternativa no Linux envs (provavelmente Mac também), você pode criair uma configuration bash onde você poderá adicionair todos os pairâmetros desejados.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.