2017-02-15 102 views
1

爲了更快的發展,我要做到以下幾點:Android:如何重置resConfigs發佈版本?

android { 
    defaultConfig { 
     resConfigs "en" 
    } 
} 

我的應用程序有很多的語言,這樣做雖然節省了開發時間顯著。但是,我不想用這個版本發佈一個版本。不幸的是,resConfigs不適用於產品口味或生成類型,例如,我無法在debug {}中設置它。

如何自動排除resConfigs版本變種?我不想在編譯發佈時記住註釋掉那行代碼。

回答

0

我的解決方案受到this answer的啓發而引發了一個相關問題。這裏是你如何做到這一點:在

應用/的build.gradle

// Reset `resConfigs` for release 
afterEvaluate { 
    android.applicationVariants.all { variant -> 
     if (variant.buildType.name.equals('release')) { 
      [email protected] = null 
     } 
    } 
} 

這工作,因爲mResourceConfiguration是支持字段爲resConfigs。不幸的是,Android Gradle DSL當前不公開重置resConfigs的方法,因此我們不得不使用groovy @<fieldName>語法直接訪問該字段。儘管mResourceConfiguration是私人的,但它仍然有效。

警告:此解決方案有點脆弱,因爲Android Gradle構建工具團隊可隨時更改該字段的名稱,因爲它不屬於公共API。

1

這不工作?

檢測調試版本,重置配置並添加所需的調試配置。

applicationVariants.all { variant -> 
    if (variant.buildType.name == "debug") { 
     variant.mergedFlavor.resourceConfigurations.clear() 
     variant.mergedFlavor.resourceConfigurations.add("en") 
    } 
} 
+0

'resourceConfigurations'不是'variant.mergedFlavor'的公共成員。 – AutonomousApps

+0

@AutonomousApps適合我。您使用的是哪種Gradle版本? – darken

+0

一箇舊的。工具2.1.2和Gradle 2.14。 – AutonomousApps