像ChrLipp說,在Android Studio的出血性邊緣,有一個方便的解決方案稱爲「flavours」。
它基於鏡像目錄層次結構。包含「main」版本和「flavors」目錄層次結構的所有文件的「main」目錄層次結構,每個flavor目錄包含的文件將在構建時覆蓋或補充這些「主要」目錄。
對於我的使用(我無法遷移到Android Studio),我寫了一個簡單的ant腳本來模仿「flavours」功能。它適用於Netbeans和Eclipse,我認爲這是某種獨立於項目的方式。
要使用它,完整的項目文件夾必須退後一層的層次結構,原始的文件夾需要放在「主」目錄。一個build目錄必須創建,以及多個「口味」的文件夾放在「口味」裏面,因爲這樣:
├── build.xml < - ant script file above
├── main < - original project
├── flavors
│ └── freeVersion < - files related with a freeVersion 'skin'
└── build < - temporary build folder
運行腳本($螞蟻變化的味道),它會問巫婆味道目錄要建立。用戶輸入後,它會檢查flavor目錄是否存在,並將所有主目錄複製到build文件夾中,加上最終的「flavors」文件,覆蓋「main」文件。
得到的build文件夾是一個完整的新的原生Android /科爾多瓦/什麼項目,可以正常打開,編譯通過IDE。
<?xml version="1.0" encoding="UTF-8"?>
<project name="Flavors" basedir="." >
<property name="flavors.dir" value="flavors"/>
<property name="flavors.build.dir" value="build"/>
<property name="flavors.main.dir" value="main"/>
<target name="change-flavor">
<input message="Which Flavor to build?" addproperty="flavor.dir" />
<fail message="Empty flavor not allowed">
<condition>
<equals arg1="${flavor.dir}" arg2=""/>
</condition>
</fail>
<fail message="Directory ${flavors.dir}/${flavor.dir} not exists">
<condition>
<not>
<available file="${flavors.dir}/${flavor.dir}" type="dir" />
</not>
</condition>
</fail>
<echo message="Deleting build dir ${flavors.build.dir}"/>
<delete includeemptydirs="true">
<fileset dir="${flavors.build.dir}" includes="**/*"/>
</delete>
<echo message="Copying from main ${flavors.build.dir}"/>
<copy todir="${flavors.build.dir}" includeemptydirs="true" >
<fileset dir="${flavors.main.dir}" includes="**"/>
</copy>
<echo message="Copying from flavor ${flavors.build.dir}"/>
<copy todir="${flavors.build.dir}" includeemptydirs="true" overwrite="true" >
<!-- exclude folder is here because my flavors directories are also netbeans
projects. If similar approach is used on eclipse, maybe put here .project
and .settings folders -->
<fileset dir="${flavors.dir}/${flavor.dir}" includes="**" excludes="nbproject/**"/>
</copy>
</target>
</project>
有一個懲罰時間針對每種口味的身材,因爲沒有預編譯的東西,也沒有很好地整合在主項目構建系統,但對我來說,我認爲它的價值,因爲唯一的東西,從風格到另一個變化是屬性文件和資產。大部分開發過程可以在「主」項目上完成,風味只是皮膚。除此之外,它避免了cordova自身構建系統/ netbeans集成的問題。
使用外部構建工具螞蟻/ Maven的/搖籃可以幫助你在項目生成時間管理這個,看看[本Q&A](http://stackoverflow.com/questions/10143352/eclipse-multiple-project-from-single來源)對這個主題的一些想法。 – yorkw