Android每个开发者变量

时间:2016-04-07 11:54:43

标签: android git android-studio version-control

我的团队与Git合作,现在我们正在构建一个Android应用程序。这个应用程序消耗我们的web服务,每个开发人员在开发时都在自己的计算机上构建。

由于我们无法在应用内部使用localhost(因为它指向设备本身),因此我们必须指定网络地址(例如192.168.1.123),现在它已经硬编码了。问题是,我们的网络地址大多不一样,然后每个开发人员必须手动编辑地址才能进行编码。

我正试图找出更有趣的方法来完成这个过程。我的第一个猜测是我可以做一些像Rails'config/application.yml或类似Spring Boot的application.properties。此文件位于.gitignore,并且在设置其开发环境时,每个开发人员都会在其中的变量中设置其网络地址。这种方法很好,主要是因为我们可以在CI服务器中设置此文件,然后可以在生产环境中自动部署(例如,指向my-aplication.com而不是开发人员网络地址)。

我一直在想的另一种方法是使用类似my-application.dev的东西,然后让主机(当使用模拟器时)解析它的主机文件,然后循环回来。这种方法存在两个主要问题:a)我们希望将设置保留在项目的文件夹中。 b)部署到生产时,我们会手动编辑它。

那么,有什么方法可以做到这一点?请记住,我们很高兴将此设置放在项目的文件夹中,而不是依赖于IDE。

提前致谢!

2 个答案:

答案 0 :(得分:0)

定义Properties

def Properties props = new Properties()
props.load(new FileInputStream(rootProject.file('app/custom.properties')))

随后:

buildConfigField "String", "CUSTOM_FIELD", '"'+props['customFieldName']+'"'

您的custom.properties应包含以下内容:

customFieldName=customString

答案 1 :(得分:0)

步骤1:在项目根目录中的gradle.properties中定义一个包含相关IP地址的属性,例如:

DEV_SERVER_URL=https://192.168.1.123

步骤2:在您的app/build.gradle文件中,通过buildConfigField或可能通过resValue公开该属性,以通过BuildConfig将其提供给Java代码或字符串资源。要获得额外的功劳,请仅使用debug构建类型中的属性,使用release中的生产值(可能指向生产Web服务器)。例如:

    debug {
      buildConfigField "String", "SERVER_URL", '"'+DEV_SERVER_URL+'"'
    }

    release {
      buildConfigField "String", "SERVER_URL", '"https://prod.this-is-so-fake.com"'
    }

步骤3:修改Java代码以引用您在步骤2中设置的BuildConfig字段或字符串资源。