public.xml用来告诉aapt保持固定的资源ID
res/values/pulibc.xml
<resources>
<public id = "0x7f050011" name = "a_in" type = "anim"/>
<resources/>
android gradle plugin 从1.3.0开始忽略了public.xml ,不过可以通过gradle脚本来绕过这个限制。
afterEvaluate {
for(variantinandroid.applicationVariants) {
defscope = variant.getVariantData().getScope()
String mergeTaskName = scope.getMergeResourcesTask().name
defmergeTask =tasks.getByName(mergeTaskName)
mergeTask.doLast {
copy {
inti=0
from(android.sourceSets.main.res.srcDirs) {
include'values/public.xml'
rename'public.xml', (i++ ==0?"public.xml":"public_${i}.xml")
}
into(mergeTask.outputDir)
}
}
}
##END