Gradle Метод DSL не найден: "classpath()"
Я работаю над проектом Android, который использовал Gradle, как указано ниже.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
allprojects {
repositories {
mavenCentral()
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':workspace:darkmoon:darul-android:vitamio:vitamio')
compile project(':Dev:adt-bundle-mac-x86_64:sdk:extras:google:google_play_services:libproject:google-play-services_lib')
}
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
Но когда я его создаю, продолжайте получать эту ошибку: "Gradle Метод DSL не найден", и он указал на
следующая строка:
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':workspace:epsilonmobile:darul-android:vitamio:vitamio')
compile project(':Dev:adt-bundle-mac-x86_64:sdk:extras:google:google_play_services:libproject:google-play-services_lib')
}
Извините, если этот вопрос немного нуб, я новичок как для Gradle, так и для Android Studio
Ответы
Ответ 1
Конфигурация A classpath
доступна только для зависимостей buildscript
. Вам нужно избавиться от строки classpath 'com.android.tools.build:gradle:0.12.+'
в верхнем уровне dependencies
. (Gradle плагины должны быть объявлены под buildscript { dependencies { ... } }
.)
Ответ 2
В gradle script buildscript
- это специальный раздел, в котором вы можете объявлять зависимости самого сборки script (т.е. двоичные файлы, необходимые для процесса сборки).
Процесс сборки gradle представляет собой не что иное, как процесс java, и поэтому он поддерживает обычные зависимости в classpath.
com.android.tools.build:gradle:0.12.+
идентифицировать двоичный файл, необходимый для процесса сборки (он содержит код, способный понять/выполнить раздел андроида сборки script).
Андроид apk, который будет создан этим script, не нуждается в бинарном com.android.tools.build:gradle:0.12.+
для запуска на вашем устройстве Android (т.е. apk, конечно, уже собирается, когда он запускается на устройстве): нет причина объявить его снова в зависимостях верхнего уровня
(это зависимости, требуемые вашим приложением)