Android Studio 2.0 使用 gradle-experimental 插件破坏了 ndk 构建

Android Studio 2.0 breaks ndk build with gradle-experimental plugin

将 Android Studio 更新到 2.0 版(稳定版)后,我项目的 Gradle 同步中断。

错误弹出窗口:

Android Gradle Plugin Update Required

The project is using an incompatible version of the Android Gradle plugin.

To configure the project, the IDE will update the Android Gradle Plugin to version 2.0.0.

You can learn more about this version of the plugin from this [release notes][1].

-> Update   -> Cancel and update manually

Gradle 同步问题(在消息视图中):

Error:The project is using an incompatible version of the Android Gradle plugin.
Please update your project to use version 2.0.0.
-> Search in build.gradle files

我正在为 ndk 构建使用 gradle-experimental 插件 (classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha5'),因为它已被推荐,例如here,因此我的 build.gradle 看起来像这样(使用 com.android.model.application 插件),我不能简单地 'update' 到 classpath 'com.android.tools.build:gradle:2.0.0':

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

def superpowered_path = file('.').absolutePath + "/src/main/jni/Superpowered"

model {

    repositories {
        libs(PrebuiltLibraries) {
            superpowered {
                headers.srcDir "${superpowered_path}"
                binaries.withType(StaticLibraryBinary) {
                    staticLibraryFile = file("${superpowered_path}/lib/${targetPlatform.getName()}/libSuperpoweredAndroid.a")
                }
            }
        }
    }

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"

        defaultConfig {
            applicationId "APPID"
            minSdkVersion.apiLevel 15
            targetSdkVersion.apiLevel 23
            versionCode 1
            versionName "1.0"

            archivesBaseName = "APPNAME-$versionCode-$versionName"

            renderscriptTargetApi 20
            renderscriptSupportModeEnabled true
        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles.add(file('proguard-rules.pro'))
                signingConfig = $("android.signingConfigs.releaseSigning")
            }
            debug {
                applicationIdSuffix ".debug"
                versionNameSuffix "-DEBUG"
                signingConfig = $("android.signingConfigs.debugSigning")
            }
        }

        sources {
            main {
                jni {
                    dependencies {
                        library "superpowered" linkage "static"
                    }
                }
            }
        }

        /*
         * native build settings
         */
        ndk {
            moduleName = "NDKMODULE-jni"
            cppFlags.add("-std=c++11")
            ldLibs.addAll(["android", "log", "OpenSLES"])
            abiFilters.addAll(["armeabi-v7a", "x86", "arm64-v8a"])
        }
    }

    android.signingConfigs {
        create("releaseSigning") {
            keyAlias 'release'
            keyPassword 'PASSWORD'
            storeFile file('KEYSTORE.jks')
            storePassword 'PASSWORD'
            storeType "jks"
        }
        create("debugSigning") {
            keyAlias 'debug'
            keyPassword 'PASSWORD'
            storeFile file('KEYSTORE.jks')
            storePassword 'PASSWORD'
            storeType "jks"
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar', '*.a'])
    testCompile 'junit:junit:4.12'

    // Android support libs
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.android.support:design:23.2.1'
    compile 'com.android.support:support-v4:23.2.1'
    compile 'com.android.support:recyclerview-v7:23.2.1'

    // Android Async Http
    // Apache 2.0 http://loopj.com/android-async-http/
    compile 'com.loopj.android:android-async-http:1.4.9'

    // OkHttp http://square.github.io/okhttp/
    // Apache v2
    compile 'com.squareup.okhttp3:okhttp:3.2.0'

    // Picasso http://square.github.io/picasso/
    // Apache v2
    compile 'com.squareup.picasso:picasso:2.5.2'

    // Retrofit http://square.github.io/retrofit/
    // Apache v2
    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
}

我能找到的关于 Android Studio 2.0 的所有问题都是关于 canary/beta 版本的,似乎有与这个问题不同的问题。 在更新之前,Gradle 同步按预期工作。 (我一直在使用最后一个稳定版本,我认为是 1.5.1?)。

我希望获得有关如何将 ndk 与 Android Studio 2.0 一起使用的一些想法。

使用 gradle-experimental:0.7.0-alpha1 为我修复了 Gradle 同步: classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1'

使用以下类路径解决了我的问题。

classpath 'com.android.tools.build:gradle-experimental:0.7.0'