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

时间:2013-03-06 03:26:08

标签: android android-manifest android-build

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

AndroidManifest.xml中的包名称似乎是这里的主要障碍,因为它是唯一标识应用程序的内容。我认为可以简单地在com.mydomain.prodcom.mydomain.stagingcom.mydomain.dev或某种类似的约定之间切换,但到目前为止,我还没有运气可用的包结构对于这种方法。

我可以采用什么策略来尽量减轻痛苦?

2 个答案:

答案 0 :(得分:6)

使用Gradle,您可以指定不同的"风味"你的申请。这是在build.gradle

中完成的
android {
    // …

    defaultConfig {
        // …
    }

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

        staging {
            applicationId "com.mydomain.staging"
        }

        dev {
            applicationId "com.mydomain.dev"
            versionCode 2
        }
    }
}

每个flavor属性都继承自defaultConfig

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

app/
|-- src/
    |-- main/
    |-- prod/
    |-- staging/
    |-- dev/

这些链接可能很有用:

答案 1 :(得分:0)

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