Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
针对多个客户的Android构建配置_Android_Maven_Build_Build Process_Maven 3 - Fatal编程技术网

针对多个客户的Android构建配置

针对多个客户的Android构建配置,android,maven,build,build-process,maven-3,Android,Maven,Build,Build Process,Maven 3,我有一个Android应用程序,需要交付给多个客户。 对于每个客户,我都有不同的图形和配置XML文件,用于指定功能和URL 在构建时,我们应该能够指定应该为其构建应用程序的客户。然后,应将适用于指定客户端的资源(如图像和运行时配置)内置到应用程序中 该项目是用Maven构建的 有什么想法吗?不知道Android项目对这一点的支持程度如何,但通常的方法是为每个客户定义一个配置文件。在每个配置文件中,您应该使用指定客户的资源目录覆盖相关的资源目录。我最后使用了maven配置文件以及android m

我有一个Android应用程序,需要交付给多个客户。 对于每个客户,我都有不同的图形和配置XML文件,用于指定功能和URL

在构建时,我们应该能够指定应该为其构建应用程序的客户。然后,应将适用于指定客户端的资源(如图像和运行时配置)内置到应用程序中

该项目是用Maven构建的


有什么想法吗?

不知道Android项目对这一点的支持程度如何,但通常的方法是为每个客户定义一个配置文件。在每个配置文件中,您应该使用指定客户的资源目录覆盖相关的资源目录。

我最后使用了maven配置文件以及android maven插件的“renameManifestPackage”和“ResourceOverlyDirectory”属性

默认的res/dir由每个客户特定的“ResourceOverlyDirectory”覆盖

结果很好

<!-- profile for zurich -->
<profile>
  <id>zurich</id>
  <properties>
    <customer>zurich</customer>
    <customerPackage>zurich.com</customerPackage>
    <customerResources>customers/${customer}/res</customerResources>
    <customerApkName>${customer}-${project.artifactId}</customerApkName>
  </properties>
</profile>

苏黎世
苏黎世
苏黎世网
客户/${customer}/res
${customer}-${project.artifactId}
在构建中,我有:

<build>
  <sourceDirectory>src</sourceDirectory>

  <!-- the name of the generated apk and jar -->
  <finalName>${customerApkName}-${project.version}</finalName>

  <pluginManagement>

    <plugins>

  <!-- customer specific manifest and package -->
  <plugin>
    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
    <artifactId>maven-android-plugin</artifactId>
    <configuration>
      <renameManifestPackage>${customerPackage}</renameManifestPackage>
      <resourceOverlayDirectory>${customerResources}</resourceOverlayDirectory>
    </configuration>
  </plugin>

    </plugins>

  </pluginManagement>

src
${customerApkName}-${project.version}
com.jayway.maven.plugins.android.generation2
maven android插件
${customerPackage}
${customerResources}

是的,这是通常的方式,但是因为android资源是静态链接的,所以不可能那么容易完成。然后您覆盖整个“链接”步骤。最后,它只是在一堆文件上调用aapt,所以这应该是可能的。如果没有,那么Eclipse或Ant总是有库项目。检查他们在Ant中是如何做到的,应该会给你一些想法。这会复制到实际的
res
文件夹中,还是都复制到
target
文件夹中?太好了。在同一台设备上安装两个应用程序时有问题吗?@EugenMartynov没有,程序包名称不同。