Android gradle-实验性 0.2.0 添加 res 和 aidl

Android gradle-experimental 0.2.0 add res and aidl

我很难在 Android Studio 1.3、Gradle 2.5 和 gradle-experimental 插件 0.2.0 中使用外部库,因为 NDK 需要。

我找到了一些 material here 关于如何更改我已经完成的旧 gradle 文件,但找不到任何其他文档文档。

在我广泛的搜索过程中,我设法找到了清单的更改,但没有找到 resaid。有没有人设法找出需要更改的内容或任何有用的文档?

apply plugin: 'com.android.model.library'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.2.0'
    }
}

model {
    android {
        compileSdkVersion = 19
        buildToolsVersion = "19.1.0"

        defaultConfig.with {
            applicationId = "org.opencv.android"
            minSdkVersion.apiLevel = 8
            targetSdkVersion.apiLevel = 19
            versionCode = 3000
            versionName = "3.0.0"
        }
    }

    android.sources {
        main {
            manifest.source.include 'AndroidManifest.xml' // OLD manifest.srcFile 'AndroidManifest.xml'
            java.source.srcDir 'src'
            resources.source.srcDirs 'src'
            res.srcDirs = ['res'] // ERROR
            aidl.srcDirs ['src'] // ERROR
        }
    }
}

错误是:

Gradle sync failed: Could not find property 'srcDirs' on AndroidLanguageSourceSet 'main:aidl'.

Gradle sync failed: Unable to load class 'com.android.build.gradle.model.AndroidLanguageSourceSet_Decorated'.

使用 println 进行一些调试显示 javaresaidl 属于 AndroidLanguageSourceSet 类型。他们现在都有相同的 source 属性,并且里面有 srcDirs 列表。您应该能够将自定义路径附加到 srcDirs 属性,例如:


android.source {
  main {
    java.source.srcDirs += 'src'
    res.source.srcDirs += 'res'
    aidl.source.srcDirs += 'aidl'
  }
}

不要忘记在新语法中使用 = 来设置值,并使用 += 将其附加到列表中(在旧语法中只需一个空格就足够了)。