Gradle build Ошибка: Причина: org.gradle.api.internal.ExtensibleDynamicObject

Я пытаюсь импортировать https://code.google.com/p/android-serialport-api/ в Android Studio. Поскольку этот проект включает ndk, я выполнил инструкции по созданию NDK по следующей ссылке: http://tools.android.com/tech-docs/new-build-system/gradle-experimental

Но после сборки я получаю эту ошибку: Gradle Обновление проекта Не удалось выполнить Ошибка: Причина: org.gradle.api.internal.ExtensibleDynamicObject

EDIT: у меня установлена ​​версия 2.5 gradle Здесь мой build.gradle

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

model {

  android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig.with {
    applicationId = "android_serialport_api.sample"
    minSdkVersion.apiLevel =  17
    targetSdkVersion.apiLevel = 22

    android.ndk {
        moduleName = "serial_port"
    }

    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles  += file('proguard-rules.txt')
        }
    }

    android.productFlavors {

        create("all")
    }

}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
     }
   }

  }

}

Ответы

Ответ 1

Можете ли вы попробовать изменить

compileSdkVersion 22
buildToolsVersion "22.0.1"

к

compileSdkVersion = 22
buildToolsVersion = "22.0.1"

и

release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}

к

release {
    minifyEnabled = false
    proguardFiles  += file('proguard-rules.txt')
}

У меня такая же ошибка, и это работает для меня.

Ответ 2

К сожалению, реализация предварительного просмотра NDK для поддержки разработки собственного кода в Android Studio является движущей целью. Даже если вы используете более старое, разработчики .android.com заявили, что "поддерживают" комбинацию экспериментального плагина Android Gradle (от tools.android.com) и Gradle версии (от gradle.org), удачи в том, чтобы заставить сборку работать. Вместо этого всегда используйте последнюю выпущенную комбинацию с последним указанным синтаксисом языка build.gradle, в соответствии с сайтом developers.android.com.

В вашем случае ваше смешение использования операторов присваивания, "=" и "+ =". В зависимости от поддерживаемой комбинации плагина Gradle и версии Gradle, которую вы используете, она либо использует операторы присваивания всюду в файле build.gradle модуля, либо нигде - вы должны быть последовательными, все или ничего. Для "+ =" используйте вместо этого метод ".add(...)".

И помните, что язык сценариев Gradle скомпилирован в среду выполнения Java, поэтому, когда вы видите ошибку сборки, которая похожа на ошибку Java, это скрипт Gradle, который, вероятно, является проблемой.