我们正在构建一个连接到云端的
Android应用.我们有一个API的测试URL和一个生产URL.我们将应用连接到我们的本地开发机器,以便在开发过程中与数据库进行交流,但是每次为Play Store生成APk时,都会发现自己将全局API URL修改为生产URL.
有没有更好的方式来管理Android的环境?我们还可以有两个版本的应用程序(开发版本)和Play Store版本?我不能有两个版本,因为这两个应用程序具有相同的签名.我们如何最好地管理这个?
解决方法
随着android工作室和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
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','"http://prod.example.com"' ...... signingConfig signingConfigs.prod } dev { buildConfigField 'String','"http://dev.example.com"' ...... signingConfig signingConfigs.dev } }
在你的代码中,使用这个代码在gradle文件中配置base url.
public final static String BASE_URL = BuildConfig.BASE_URL;
您还可以将不同的KEY或任何构建类型特定于Gradle文件中的代码以及根据正在运行的构建类型执行的代码.
它甚至可能有不同的包名.
productFlavors { my_prod { applicationId "com.example.packtwo" } my_dev { applicationId "com.example.packone" } }
检查更多的可能性…
但是,如果您使用不同的口味,您可能需要处理清单合并和所有.