2011-09-26 41 views
12

Tôi có ứng dụng Android cần được phân phối cho nhiều khách hàng. Đối với mỗi khách hàng, tôi có các tệp XML đồ họa và cấu hình khác nhau, chỉ định các tính năng và URL.Cấu hình xây dựng Android cho nhiều khách hàng

Vào thời gian xây dựng, chúng tôi sẽ có thể chỉ định khách hàng mà ứng dụng sẽ được xây dựng. Sau đó, tài nguyên (như hình ảnh và cấu hình thời gian chạy) thích hợp cho ứng dụng khách được chỉ định sẽ được tích hợp vào ứng dụng.

Dự án được xây dựng bằng Maven.

Bất kỳ ý tưởng nào?

Trả lời

14

Tôi đã sử dụng cấu hình maven và thuộc tính 'renameManifestPackage' và 'resourceOverlayDirectory' của plugin maven android.

Mặc định res/dir được ghi đè bởi 'resourceOverlayDirectory' cụ thể cho mọi khách hàng.

Nó hoạt động rất tốt.

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

và trong xây dựng Tôi có:

<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

hiện bản sao này trên thư mục 'res' thực sự, hoặc tất cả chúng được sao chép trong thư mục' target'? –

+0

Tuyệt. Bạn có gặp sự cố khi cố gắng cài đặt hai ứng dụng trên cùng một thiết bị không? –

+0

@EugenMartynov no, tên gói khác nhau. – peceps

2

Không biết mức độ này được hỗ trợ cho các dự án Android, nhưng cách thông thường là xác định hồ sơ cho từng khách hàng. Trong mỗi hồ sơ, bạn nên ghi đè các thư mục tài nguyên có liên quan với các thư mục cho khách hàng được chỉ định.

+0

Vâng, đó là cách thông thường, nhưng vì nguồn Android được liên kết tĩnh nó không thể được thực hiện dễ dàng. – peceps

+1

Sau đó, bạn ghi đè toàn bộ bước 'liên kết'. Cuối cùng nó chỉ gọi aapt trên một loạt các tập tin, vì vậy nó sẽ là có thể. Nếu không, luôn có các dự án thư viện cho Eclipse hoặc Ant. Kiểm tra cách họ làm điều đó trong Ant, nên cung cấp cho bạn một số ý tưởng. –

+0

Tôi đã sử dụng hồ sơ maven. Cảm ơn. – peceps

Các vấn đề liên quan