Gradle:不推荐的动态属性。如何重新配置​​?

时间:2014-03-19 12:39:32

标签: android gradle

我收到Gradle关于弃用动态属性的警告。

  

不推荐按需创建属性(a.k.a.动态属性),并计划在Gradle 2.0中删除。有关替换动态属性的信息,请阅读http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html。   弃用的动态属性:" srcDirs" on" source set aild",value:" [src]"。   弃用动态属性" srcDirs"在多个地点创建。

不幸的是,我不擅长Gradle语法,因此在阅读上述文章后,我无法理解应该更改哪些值以迁移到新标准。

项目仍然可以在Eclipse中构建,因此配置就像

apply plugin: 'android'

android {
    buildToolsVersion "19.0.3"
    compileSdkVersion 19

    buildTypes {
        ...
    }

    productFlavors {    
        ...
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java {
                srcDirs = ['src']
            }
            resources.srcDirs = ['src']
            aild.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            lib.srcDirs = ['libs']
            jniLibs.srcDirs=['libs']
        }

        full {        
            java {
                srcDirs = ['flavors/full/src']
            }
        }

        light {        
            java {
                srcDirs = ['flavors/light/src']
            }

            res {
                srcDirs 'flavors/light/res'
            }

            assets {
                srcDirs 'flavors/light/assets'
            }
        }
    }
}

1 个答案:

答案 0 :(得分:6)

脚本中的错误就是这行代码:

aild.srcDirs = ['src']

在旧版Gradle中,您可以在配置期间动态添加新属性。本质上,该行将做的是在“aild”对象上创建一个名为“srcDirs”的新字段并设置它的值。我相信他们贬低这种行为的原因是它通常是一种代表臭虫​​或拼写错误的代码味道。如果您确实想要动态创建该属性,则可以执行以下操作:

aild.ext.srcDirs = ['src']

但是,我不认为这实际上是你想要的。经过一番谷歌搜索之后,我想你可能想尝试将“aild”更改为“aidl”,或者甚至只是删除所有的一行,因为我认为你实际上并没有在你的项目中使用它。