2017-08-26 26 views
2

我想在我的build.gradle文件中創建一個新的風格,但它是另一種風格的完整副本。即時通訊爲測試目的。只有applicationid後綴會有所不同。這種味道我想稱爲貝塔。但我希望有一種方法不必重複代碼。因爲它具有與我的分段風格相同的設置,有沒有一種方法可以告訴gradle複製分段風格中相同的設置。我的口味是這樣定義的:android gradle - 如何創建新的產品風味,但重用另一種風格的值?

productFlavors { 

     def STRING = "String" 
     def BOOLEAN = "boolean" 
     def TRUE = "true" 
     def FALSE = "false" 
     def FLAVOR = "FLAVOR" 
     def RETROFIT_LOG_ALL = "RETROFIT_LOG_ALL" 
     def BASE_ENDPOINT = "BASE_ENDPOINT" 


     staging { 
      buildConfigField STRING, BASE_ENDPOINT, '"https://pepsi-staging-api.pmlo.co"' 
      buildConfigField STRING, BASE_IMGIX_ENDPOINT, '"myappfashion.imgix.net"' 
      buildConfigField STRING, BASE_ENDPOINT_WEB, '"www.pepsi-staging.pmlo.co"' 
      buildConfigField BOOLEAN, RETROFIT_LOG_ALL, TRUE 
      manifestPlaceholders = [appDrawerName: "myapp-Staging"] 
      ext.enableCrashlytics = false 
      versionNameSuffix '-STAGING' 
      applicationIdSuffix 'staging' 
     } 


//why do i have to copy the same settings again, is there a way to just over ride from the staging flavor the things i want changed ? 
     beta { 
      buildConfigField STRING, BASE_ENDPOINT, '"https://pepsi-staging-api.pmlo.co"' 
      buildConfigField STRING, BASE_IMGIX_ENDPOINT, '"myappfashion.imgix.net"' 
      buildConfigField STRING, BASE_ENDPOINT_WEB, '"www.pepsi-staging.pmlo.co"' 
      buildConfigField BOOLEAN, RETROFIT_LOG_ALL, TRUE 
      manifestPlaceholders = [appDrawerName: "myapp-Staging"] 
      ext.enableCrashlytics = false 
      versionNameSuffix '-beta' //only these two thigns are different 
      applicationIdSuffix 'beta' 
     } 


     prod { 
      // applicationId "com.mobile.myapp" 
      buildConfigField STRING, BASE_ENDPOINT, '"https://api.myappfashion.com"' 
      buildConfigField STRING, BASE_IMGIX_ENDPOINT, '"myappfashion.imgix.net"' 
      buildConfigField STRING, BASE_ENDPOINT_WEB, '"www.myappfashion.com"' 
      buildConfigField BOOLEAN, RETROFIT_LOG_ALL, FALSE 
      ext.enableCrashlytics = true 
      manifestPlaceholders = [appDrawerName: "myapp"] 
     } 

} 

    i just want to override versionNameSuffix & applicationIdSuffix only in beta and copy all values from staging. is there a way not to duplicate code like this example ? 
+1

只需使用'defaultConfig'就好像[本答案](https://stackoverflow.com/questions/25994149/is-there-a-way-to-have-a-common-section-with-buildconfigfield-and -resvalue-in-gr) –

+0

我明白你的意思了。有時它會引發默認設置。它只是我希望它具有與另一種風味相同的設置,而無需再次複製所有值。但很好的評論。我認爲沒有辦法做到這一點,因爲我找不到任何東西 – j2emanue

回答

0

在我們的應用程序,我們使用不同的口味不同的與被兩個口味的一個主包版本。

我們這樣定義它的gradle中:

productFlavors { 
    mock { 
     applicationIdSuffix = ".mock" 
    } 
    prod { 

    } 
    flavour1 { 
     applicationIdSuffix = ".flavour1" 
     versionCode = 1 
     versionName "1.0." + versionCode 
    } 
    flavour2 { 
     applicationIdSuffix = ".flavour2" 
     versionCode = 2 
     versionName "1.0." + versionCode 
    } 
} 

隨着包:

-> src 
---> flavour1 
-----> java 
-----> res 
---> flavour2 
-----> java 
-----> res 
---> main 
-----> assets 
-----> java 
-----> res 
-----> AndroidManifest.xml 

基礎活動/片段是 '主',口味分享片段/活動名稱。我們也使用那些使用可擴展的主要類的泛型。

端點字符串在res/strings中,每個flavor都是獨立的。

相關問題