2013-03-06 134 views
7

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

AndroidManifest.xml中的软件包名称似乎是此处的主要障碍,因为它是唯一标识该应用的唯一标识。我认为可以简单地在com.mydomain.prodcom.mydomain.stagingcom.mydomain.dev之间切换或者某种类似的约定,但到目前为止,我还没有想到可以使用适用于此方法的包结构。

我可以用什么策略尽可能地减轻痛苦?

+0

AndroidManif中的包字段est.xml只是Google Play使用的唯一标识符,不需要与您的Java源代码包结构相同。 – yorkw 2013-03-06 03:39:10

+0

这不可能是真的,可以吗?如果我改变它,gen文件夹会发生变化,并且我会得到大量“R无法解析为变量”的错误。有没有办法避免这种情况? – 2013-03-06 03:43:33

+0

文档:软件包名称用作应用程序的唯一标识符。它也是应用程序进程的默认名称(请参阅元素的进程进程属性)和活动的默认任务关系(请参阅元素的taskAffinity属性)。 – 2013-03-06 03:50:09

回答

0

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

4

使用Gradle,你可以指定不同的“风味”你的应用程序。这是在您的build.gradle完成:

android { 
    // … 

    defaultConfig { 
     // … 
    } 

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

     staging { 
      applicationId "com.mydomain.staging" 
     } 

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

每种风格属性从defaultConfig继承。现在

,在src目录中的应用程序,你可以在它创建具有特定风味的代码/资源目录:

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

这些链接可能是有用的:

相关问题