[英]Product flavors and source hierarchies
我的應用程序有兩種口味,為簡單起見,將其flavora
和flavorb
。
productFlavors {
flavora {
resValue "string", 'app_name', "App Name Flavor A"
applicationIdSuffix ".flavora"
}
flavorb {
resValue "string", 'app_name', "App Name Flavor B"
applicationIdSuffix ".flavorb"
}
}
我希望這兩種口味都可以使用所有相同的布局,所有相同的Java代碼,所有相同的資源等,但我希望flavora
和flavorb
對布局文件flavor_dependent_layout.xml
和Java類FlavorDependentJavaClass
使用不同的實現。
這是正確的方法嗎?
sourceSets {
main {
res.srcDirs = ['src/main/res']
java.srcDirs = ['src/main/java']
}
flavora {
res.srcDirs = ['src/flavora/res', 'src/main/res']
java.srcDirs = ['src/flavora/java', 'src/main/java']
}
flavorb {
res.srcDirs = ['src/flavorb/res', 'src/main/res']
java.srcDirs = ['src/flavorb/java', 'src/main/java']
}
}
然后,我將創建必要的文件夾來放置相應的文件,然后從那里自然地開始所有工作? 如果我嘗試執行一種方法,並且它僅針對一種口味存在,它怎么知道我已經同時包含了兩種口味的類?
(此外,我是否必須明確提及資產文件夾?因為我也有`/ src / main / assets')
這是正確的方法嗎?
沒有。
只需創建src/flavora/res/
, src/flavora/java/
, src/flavorb/res/
和src/flavorb/java/
,然后將東西放在那里。 它們將自動添加到適當的構建路徑。 您不需要調整srcDirs
。
如果我嘗試執行一種方法,並且它僅針對一種口味存在,它怎么知道我已經同時包含了兩種口味的類?
那是一個構建錯誤。 使用Java代碼,如果您想使用它:
main
類中不能存在相同的類 flavora
和flavorb
中都必須存在從main
引用的flavorb
因此,舉例來說,如果你有一個AdStrategy
類里面的某個地方src/flavora/java/
某處內src/flavorb/java/
,你會不會也有AdStrategy
中src/main/java/
。 和任何main
是指在AdStrategy
(構造函數,方法等)在既存在flavora
和flavorb
的實施AdStrategy
。 在構建時,在構建flavora
,將自動使用src/main/java/
和src/flavora/java/
樹,並且您在main
引用的任何內容都需要解決(對於flavorb
構建也是如此)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.