gpt4 book ai didi

android - 在开发 Android 应用程序时如何管理多个环境?

转载 作者:IT老高 更新时间:2023-10-28 21:57:45 26 4
gpt4 key购买 nike

我们正在构建一个连接到云的 Android 应用。我们有一个用于 API 的测试 URL 和一个生产 URL。我们在开发时将应用程序连接到本地开发机器以与数据库通信,但发现每次我们为 Play 商店生成 APk 时,我们都会将全局 API URL 修改为生产 URL。

有没有更好的方法来管理 Android 环境?我们是否也可以有两个版本的应用程序(开发版)和 Play 商店版?我无法拥有两个版本,因为这两个应用程序具有相同的签名。我们如何最好地管理这个?

最佳答案

现在有了 android studio 和 gradle 就很简单了。

在您的应用 build.gradle 中编辑签名配置

signingConfigs {
debug {
storeFile file("debug.keystore")
storePassword "..."
keyAlias "..."
keyPassword "..."
}

prod {
storeFile file("prod.keystore")
storePassword "..."
keyAlias "..."
keyPassword "..."
}

dev {
storeFile file("dev.keystore")
storePassword "..."
keyAlias "..."
keyPassword "..."
}
}

添加构建类型

buildTypes {

debug {
buildConfigField 'String', 'BASE_URL', '"http://127.0.0.1:8080/"'
......
signingConfig signingConfigs.debug
}

prod {

minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

buildConfigField 'String', 'BASE_URL', '"http://prod.example.com"'
......
signingConfig signingConfigs.prod
}


dev {
buildConfigField 'String', 'BASE_URL', '"http://dev.example.com"'
......
signingConfig signingConfigs.dev
}
}

在您的代码中,获取此代码在 gradle 文件中配置的基本 url。

public final static String BASE_URL = BuildConfig.BASE_URL;

您还可以在 gradle 文件中放置不同的 KEY 或任何特定于构建类型的内容,并根据您正在运行的构建类型将其放入代码中。

甚至可以有不同的包名。

productFlavors {
my_prod {
applicationId "com.example.packtwo"
}
my_dev {
applicationId "com.example.packone"
}
}

在最近的 gradle 配置中,指定包名有一些更新。如果使用 productFlavors,则必须添加 flavorDimensions。请参阅下面添加了 flavorDimensions 的代码

flavorDimensions "pack"

productFlavors {
flavor_dev {
applicationId 'com.example.packtwo'
dimension "pack"
}

flavor_prod {
applicationId 'com.example.packone'
dimension "pack"
}
}

这将为您提供有关产品 flavor 和尺寸的更多详细信息

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

检查更多可能性...

但如果您使用不同的风格,您可能必须处理 list 合并等所有问题。

关于android - 在开发 Android 应用程序时如何管理多个环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22995057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com