2014-03-13 67 views
2

我開發了一個分發給不同客戶的應用程序。問題是隻有我使用的圖像和其他資源是不同的。我目前正在做的是,我替換特定於客戶端的資源(圖像和文本)並構建apk。Android在創建apk時選擇資產

有沒有辦法,我可以單獨存儲所有資源爲每個客戶端並創建一個構建腳本什麼的,這樣我可以選擇特定的客戶端在生成過程中我生成APK的資源呢?

+0

的[多的Android應用程序包的apk從單一源代碼文件(可能重複http://stackoverflow.com/questions/7507784/multiple-android-application-package-apk-files-from-single-source-代碼) – 323go

+1

由於這些不同的APK需要不同的軟件包名稱,因此我的建議是將大部分應用程序放入庫項目中,並將特定於客戶端的應用程序/資源包保存爲單獨的項目。一旦gradle「口味」實際上工作,這將更容易。 – 323go

+0

323go - 我還沒有創建任何圖書館項目。你能指導我一個例子嗎? – kAnNaN

回答

2

你可以用這樣的腳本做:

#!/bin/bash 

ant clean 

CUSTOMER_DIR="./default-customer" 
if [[ -e ${CUSTOMER} ]]; then 
    CUSTOMER_DIR="./${CUSTOMER}" 
fi 

rm -R ./res/drawables/ 
mkdir ./res/drawables/ 

cp ${CUSTOMER_DIR}/drawables/* ./res/drawables/ 

ant release 

如果您遇到這樣的:

./build.sh 

default-customer/drawables/目錄繪圖資源將被複制到res/drawables

如果你喜歡這個運行它:

CUSTOMER=client1 ./build.sh 

client1/drawables/目錄中的可繪將被放置在res/drawables

+0

可以在客戶端1 /繪圖資源/存儲系統上的任何地方? – kAnNaN

+1

一般情況 - 是的。您可以修改'CUSTOMER_DIR =「./$ {CUSTOMER}」'的路徑並將其指向您喜歡的位置。您還可以創建每個客戶端路徑的映射。我只是向你展示了這樣做的概念。 –