我很难在Android Studio 1.3,Gradle 2.5和gradle-experimental插件0.2.0中使用外部库,这是因为NDK所必需的。
我找到了一些关于如何更改我已经完成的旧gradle文件的材料here,但无法找到任何其他文档文档。
在我的广泛搜索过程中,我设法找出了清单的更改,但没有找到res
和aid
的更改。有没有人设法找出需要更改的内容或任何有用的文档?
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'。
答案 0 :(得分:1)
使用println
进行的一些调试表明,java
,res
,aidl
属于AndroidLanguageSourceSet
类型。它们现在都具有相同的source
属性,并且srcDirs
列在其中。您应该能够将自定义路径附加到srcDirs属性,如:
android.source {
main {
java.source.srcDirs += 'src'
res.source.srcDirs += 'res'
aidl.source.srcDirs += 'aidl'
}
}
请勿忘记在新语法中使用=
来设置值,并+=
将其附加到列表中(在旧语法中只有空格就足够了)。