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

时间:2016-04-09 10:58:53

标签: android gradle android-ndk android-studio-2.0 gradle-experimental

将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 Sync Issue(在消息视图中):

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

我正在使用gradle-experimental插件(classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha5')进行ndk构建,因为它已被推荐,例如: here,因此我的build.gradle看起来像这样(使用com.android.model.application插件),我不能简单地“更新”到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我认为?)。

我希望有关于如何在Android Studio 2.0中使用ndk的一些想法。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

使用以下类路径修复了我的问题。

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