Gav*_*iel 10 android environment-variables run-configuration android-studio
我的Android应用程序对我的服务器做了一些http请求.但有时我正在调试在我的开发机器上运行的新api代码.我希望能够传递一些东西(比如环境变量),所以在我的代码中,如果它存在,我将能够使用它作为来自android模拟器的api请求的主机名.
所以我正在寻找一种传递类似的方法:
API_SERVER=http://10.0.2.2/myapp/
在我的代码中我会以某种方式使用它,例如:
final static String API_SERVER_REAL = "http://example.com/";
final String apiServerOverride = System.getenv("API_SERVER");
final String API_SERVER = (null != apiServerOverride && !apiServerOverride.isEmpty() ? apiServerOverride : API_SERVER_REAL);
小智 14
我知道这个帖子很老了,但在我看来,提供的答案都没有解决问题.Flavors不适合用API URL等参数化你的构建,甚至更糟糕的API API等.
首先,build.gradle定义风格是项目源的一部分,因此它不得包含此类信息,以便安全地提交到源控制系统中.
其次,可能需要针对不同的API端点/密钥测试不同的风格.如果你只想点击你刚刚创建的一些调试http服务器来解决bug怎么办?你会为它创造一种味道吗?可能不是......味道对"自由风味"和"优质风味"之类的东西都有好处.
使用gradles -P标志可以轻松解决此问题.您可以在gradle.build中以常规变量的形式访问以这种方式传递的gradle属性,并且可以相应地改变它的行为.
如果您想将此标志进一步推送到您的应用程序中,您可以使用此处发布的Scott解决方案,并结合提供的标志.
然后,构建命令可能如下所示:
$ gradle build -Papiroot=http://www.example.com
在你的工作中build.gradle你会定义这样的writeValue任务:
task writeValue(type:Exec) {
    commandLine '/usr/local/bin/adb', 'shell', "echo 'API_SERVER=${apiroot}' > /data/data/values.properties"
}
通过从菜单导航,可以在Android Studio中轻松配置-P标志:
运行 - >运行/调试配置 - >默认值 - > Gradle - >脚本参数
我建议使用ProductFlavors。每种风味都可以包含特定于环境的设置。我只是有一个名为“Environment”的类,其中包含public static final String我需要的所有内容,并且每种产品风味都包含该类的不同版本,并为环境设置了值。
| 归档时间: | 
 | 
| 查看次数: | 13131 次 | 
| 最近记录: |