针对不同环境的不同Android构建

E-M*_*add 8 android android-manifest android-build

我希望能够构建和安装我的应用程序的多个版本(同时),针对不同的环境,如开发,暂存和生产.

包中的名称AndroidManifest.xml似乎是这里的主要障碍,因为它是唯一标识应用程序的内容.我认为这将是可以简单地切换com.mydomain.prod,com.mydomain.staging并且com.mydomain.dev或某种类似的规定,但到目前为止我没有运气来了与此方法适用的封装结构.

我可以采用什么策略以尽可能少的痛苦来做到这一点?

Bru*_*ier 7

使用Gradle,您可以指定应用程序的不同"风格".这是在你的build.gradle:

android {
    // …

    defaultConfig {
        // …
    }

    productFlavors {
        prod
            applicationId "com.mydomain.prod"
        }

        staging {
            applicationId "com.mydomain.staging"
        }

        dev {
            applicationId "com.mydomain.dev"
            versionCode 2
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

每个flavor属性都继承自defaultConfig.

现在,在src应用程序的目录中,您可以创建包含特定于特定于代码/资源的目录:

app/
|-- src/
    |-- main/
    |-- prod/
    |-- staging/
    |-- dev/
Run Code Online (Sandbox Code Playgroud)

这些链接可能很有用:


小智 0

我建议您使用“ant”构建工具,特别是“regexp”任务,该任务可用于替换某些文件中的文本(即根据正确的构建目标替换清单文件中应用程序的包名称)。您还可以为每个构建目标定义不同的属性文件(例如“build_development.properties”以保存与构建开发环境产品相关的所有参数。)...希望这会有所帮助。