在启动应用程序时指定系统属性

时间:2014-07-11 20:05:04

标签: android android-gradle

从Android Studio / gradle启动Android应用程序时,我需要指定一个系统属性。 我不知道要做那件事。

背景是我的应用程序需要知道它所谈到的服务器的URL。在测试和开发期间需要覆盖默认值。我在应用程序中有代码,它在从assets文件夹下的属性文件中读取的应用程序属性之上合并系统属性。现在我需要的是能够以某种方式启动应用程序指定系统属性。

TIA求助。

2 个答案:

答案 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>

然后,在运行应用程序之前,从构建变体工具窗口(例如localDebugstagingRelease)中选择要运行的构建变体,它将具有预期的字符串值您可以作为资源访问。