从Android Studio / gradle启动Android应用程序时,我需要指定一个系统属性。 我不知道要做那件事。
背景是我的应用程序需要知道它所谈到的服务器的URL。在测试和开发期间需要覆盖默认值。我在应用程序中有代码,它在从assets文件夹下的属性文件中读取的应用程序属性之上合并系统属性。现在我需要的是能够以某种方式启动应用程序指定系统属性。
TIA求助。
答案 0 :(得分:1)
您始终可以在SharedPreference
中保留该网址。无论何时在开发/测试中使用它,您都可以从用户那里获取输入并相应地进行更改并再次将其保存在SharedPreference
中。因此,您的应用程序将始终知道它正在与哪个服务器进行通信。如果用户没有提供任何输入,那么它将从SharedPreference
的资产文件夹中取出您的默认值。
答案 1 :(得分:1)
您可以通过build variants完成此操作。
在build.gradle
中添加以下内容:
android {
//...
productFlavors {
local {
applicationId "com.example.myapp.local"
versionName "1.0-local"
}
staging {
applicationId "com.example.myapp.staging"
versionName "1.0-staging"
}
prod {
applicationId "com.example.myapp.prod"
versionName "1.0-prod"
}
}
然后创建以下资源文件
app/src
|
+ local/res/values/strings.xml
|
+ staging/res/values/strings.xml
|
+ prod/res/values/strings.xml
每个strings.xml
都有适当的终点:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="api_endpoint">http://10.0.2.2:3000</string>
</resources>
然后,在运行应用程序之前,从构建变体工具窗口(例如localDebug
或stagingRelease
)中选择要运行的构建变体,它将具有预期的字符串值您可以作为资源访问。