幾周前,我發佈了一個問題How to override resources depending on buildType。 而就在昨天,有一個gradle plugin release for android。 基於this post on G+我決定寫這個問題。resValue gradle錯誤:「generated.xml」中的不受支持的類型「String」
我已經詳細描述的問題:
我想這取決於buildType
創建一些資源價值,但是,這並不正常工作: 文件「generated.xml」將只創建如果我做一個完整的構建通過命令行:
gradlew build
但我也通過在comannd線構建完整的項目得到一個錯誤210
每隔一個build-trial都不會創建這個文件。我嘗試以下操作:
- 了IDE:
- 改造項目
- 在命令行中執行外部任務 「assembleBuildVariant」
- :
- gradlew assembleBuildVariant
奇怪gradle這個控制檯輸出:
:app:generateBuildVariantResValues UP-TO-DATE
我的build.gradle:
buildTypes {
debug{
buildConfigField "String", "FOO", "\"FOO DEBUG\""
resValue "String", "RES FOO", "RES FOO DEBUG"
}
release {
buildConfigField "String", "FOO", "\"FOO RELEASE\""
resValue "String", "RES FOO", "RES FOO RELEASE"
}
}
我 「generated.xml」:
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Values from build type: release -->
<item name="RES FOO" type="String">RES FOO RELEASE</item>
我的問題:
這是一個錯誤還是我錯過了什麼?爲什麼這個文件不是由IDE上的Rebuild
創建的?
我的建設。gradle這個(基於rciovatis答案更新2014年2月10日):
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName "1.0"
resValue "string", "RES_FOO", "RES FOO"
}
buildTypes {
debug{
buildConfigField "String", "FOO", "\"FOO DEBUG\""
resValue "string", "RES_FOO", "RES FOO DEBUG"
}
release {
buildConfigField "String", "FOO", "\"FOO RELEASE\""
resValue "string", "RES_FOO", "RES FOO RELEASE"
}
}
UPDATE 2014年2月14日IT WORKS:
後an update of the gradle android plugin一切正常:
在/編譯/ RES /所有/你應該看到下列文件夾:
- 所有
- 產生( - >在這裏你會發現生成的資源通過
resValue
值)
第一個文件夾all
包含所有合併的資源。在方向all/<buildVariant>/values/values.xml
你應該找到生成的資源,在我的情況:
// for buildType DEBUG
<item name="TESTFOO" type="string">TEST FOO DEBUG</item>
// for buildType RELEASE
<item name="TESTFOO" type="string">TEST FOO RELEASE</item>
要獲得代碼值只使用生成的資源所有其他人一樣:
getResources().getString(R.string.TESTFOO)
爲什麼你需要** ** buildConfigField?你在你的代碼中調用它在哪裏? –