每个开发者的Android变量
我的团队与Git合作,现在我们正在构建一个android应用程序。此应用程序使用我们的Web服务,每个开发人员在开发时都在自己的计算机上构建Web服务 由于我们不能在应用程序内部使用每个开发者的Android变量,android,git,android-studio,version-control,Android,Git,Android Studio,Version Control,我的团队与Git合作,现在我们正在构建一个android应用程序。此应用程序使用我们的Web服务,每个开发人员在开发时都在自己的计算机上构建Web服务 由于我们不能在应用程序内部使用localhost(因为它指向设备本身),我们必须指定网络地址(例如192.168.1.123),现在它已经硬编码了。问题是,大多数情况下,我们的网络地址是不一样的,然后每个开发人员必须手动编辑地址,以便编码 我正试图找出更有趣的方法来完成这个过程。我的第一个猜测是我可以做一些类似Rails的config/appli
localhost
(因为它指向设备本身),我们必须指定网络地址(例如192.168.1.123
),现在它已经硬编码了。问题是,大多数情况下,我们的网络地址是不一样的,然后每个开发人员必须手动编辑地址,以便编码
我正试图找出更有趣的方法来完成这个过程。我的第一个猜测是我可以做一些类似Rails的config/application.yml
或者类似Spring Boot的application.properties
。该文件将位于.gitignore
中,并且在设置其开发环境时,每个开发人员将在其中的变量中设置其网络地址。这种方法很好,主要是因为我们可以在CI服务器中设置此文件,然后可以在生产环境中自动部署(例如,指向my application.com
,而不是开发人员网络地址)
我一直在思考的另一种方法是使用类似于my application.dev
的东西,让主机(在使用emulator时)在其hosts文件中解析,并循环。这种方法有两个主要问题:a)我们希望将设置保存在项目文件夹中。b) 在部署到生产环境时,我们需要手动编辑此内容
那么,有没有办法做到这一点?请记住,我们希望将此设置放在项目的文件夹中,而不依赖于IDE
提前谢谢 定义
属性
def Properties props = new Properties()
props.load(new FileInputStream(rootProject.file('app/custom.properties')))
后来:
buildConfigField "String", "CUSTOM_FIELD", '"'+props['customFieldName']+'"'
您的自定义.properties
应该包含以下内容:
customFieldName=customString
步骤#1:在项目根目录中的gradle.properties
中定义一个属性,该属性包含有问题的IP地址,例如:
DEV_SERVER_URL=https://192.168.1.123
步骤2:在app/build.gradle
文件中,通过buildConfigField
或可能通过resValue
公开该属性,使Java代码可以通过BuildConfig
或字符串资源使用该属性。要获得额外的积分,请仅在debug
build类型中使用属性,使用release
中的生产值(可能指向生产Web服务器)。例如:
debug {
buildConfigField "String", "SERVER_URL", '"'+DEV_SERVER_URL+'"'
}
release {
buildConfigField "String", "SERVER_URL", '"https://prod.this-is-so-fake.com"'
}
步骤3:修改Java代码以引用
BuildConfig
字段或在步骤2中设置的字符串资源。answer@AntonShkurenko:对不起。我的目标是打字。。。更多慢慢地。。。在里面这个未来…:-)