簡體   English   中英

產品口味和來源層次結構

[英]Product flavors and source hierarchies

我的應用程序有兩種口味,為簡單起見,將其flavoraflavorb

    productFlavors {
        flavora {
            resValue "string", 'app_name', "App Name Flavor A"
            applicationIdSuffix ".flavora"
        }
        flavorb {
            resValue "string", 'app_name', "App Name Flavor B"
            applicationIdSuffix ".flavorb"
        }
    }

我希望這兩種口味都可以使用所有相同的布局,所有相同的Java代碼,所有相同的資源等,但我希望flavoraflavorb對布局文件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類中不能存在相同的類
  • flavoraflavorb中都必須存在從main引用的flavorb

因此,舉例來說,如果你有一個AdStrategy類里面的某個地方src/flavora/java/某處內src/flavorb/java/ ,你會不會AdStrategysrc/main/java/ 和任何main是指在AdStrategy (構造函數,方法等)在既存在flavoraflavorb的實施AdStrategy 在構建時,在構建flavora ,將自動使用src/main/java/src/flavora/java/樹,並且您在main引用的任何內容都需要解決(對於flavorb構建也是如此)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM