2011-09-26 50 views
12

我有需要交付給多個客戶的Android應用程序。 對於每個客戶,我都有不同的圖形和配置XML文件,這些文件指定了功能和URL。針對多個客戶的Android構建配置

在構建時我們應該能夠指定應該爲其構建應用程序的客戶。然後,應該將適合指定客戶端的資源(如圖像和運行時配置)構建到應用程序中。

該項目是用Maven構建的。

任何想法?

回答

14

我結束了使用maven配置文件和android maven插件的'renameManifestPackage'和'resourceOverlayDirectory'屬性。

默認的res/dir被每個客戶特有的'resourceOverlayDirectory'覆蓋。

它工作得很好。

<!-- 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> 

,並在構建我:

<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> 
+0

是否會複製實際的'res'文件夾,或者它們全部複製到'target'文件夾中? –

+0

太棒了。嘗試在同一設備上安裝兩個應用程序時遇到問題嗎? –

+0

@EugenMartynov不,包名稱不同。 – peceps

2

不知道如何支持Android項目,但通常的方法是爲每個客戶定義一個配置文件。在每個配置文件中,您應該覆蓋指定客戶的相關資源目錄。

+0

是的,這是通常的方式,但由於Android資源是靜態鏈接不能做到這一點很容易。 – peceps

+1

然後你重寫整個'鏈接'步驟。最後它只是對一堆文件調用aapt,所以它應該是可能的。如果沒有,Eclipse或Ant總是有庫項目。看看他們在Ant中如何做,應該給你一些想法。 –

+0

我結束了使用maven配置文件。謝謝。 – peceps

相關問題