Android gradle-experimental 0.2.0添加res和aidl

时间:2015-08-08 15:16:08

标签: android android-ndk android-gradle

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

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

在我的广泛搜索过程中,我设法找出了清单的更改,但没有找到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失败:无法找到属性' srcDirs'在AndroidLanguageSourceSet' main:aidl'。

     

Gradle sync失败:无法加载课程' com.android.build.gradle.model.AndroidLanguageSourceSet_Decorated'。

1 个答案:

答案 0 :(得分:1)

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


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

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