没有方法的签名:com.android.build.gradle.AppPlugin.getNdkFolder()

问题描述:

我发现与这个问题有关的不同答案,但没有为我工作,所以不知道我是否在某处添加了错误。没有方法的签名:com.android.build.gradle.AppPlugin.getNdkFolder()

错误:

摇篮同步失败:方法的无签名:com.android.build.gradle.AppPlugin.getNdkFolder()是适用于参数类型:()值:[]

构建.gradle模块

apply plugin: 'com.android.application' 
import org.apache.tools.ant.taskdefs.condition.Os 
android { 
    compileSdkVersion 21 
    buildToolsVersion "21" 
    defaultConfig { 
     applicationId 'com.domain.game' 
     minSdkVersion 11 
     targetSdkVersion 11 

     ndk { 
      moduleName "cocos2dcpp_shared" 
     } 

     sourceSets.main { 
      jni.srcDirs = [] 
      jniLibs.srcDir 'src/main/libs' 
      java.srcDirs += '../../Classes' 
      assets.srcDirs = ['../../Resources'] 
     } 

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


task buildNative(type: Exec, description: 'Compile JNI source via NDK') { 
    def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder() 
    //def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder() 
    if(Os.isFamily(Os.FAMILY_WINDOWS)) 
     commandLine "${ndkDir}\\ndk-build.cmd",'-C', file('src/main/jni').absolutePath, '-j', Runtime.runtime.availableProcessors(), 'all' 
    else 
     commandLine "${ndkDir}/ndk-build",'-C', file('src/main/jni').absolutePath, '-j', Runtime.runtime.availableProcessors(), 'all' 
} 

task cleanNative(type: Exec, description: 'Clean JNI object files') { 
    def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder() 
    if(Os.isFamily(Os.FAMILY_WINDOWS)) 
     commandLine "${ndkDir}\\ndk-build.cmd",'-C', file('src/main/jni').absolutePath, 'clean' 
    else 
     commandLine "${ndkDir}/ndk-build",'-C', file('src/main/jni').absolutePath, 'clean' 
} 

clean.dependsOn 'cleanNative' 

tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn buildNative 
} 


dependencies { 
    compile project(':googleplayservices_lib') 
    compile files('libs/OpenIAB-0.9.6-sync2.jar') 
    compile files('libs/android-support-v4.jar') 
    compile files('libs/GiftizSDK_1.5.0.jar') 
} 

的build.gradle项目

// Top-level build file where you can add configuration options common to all sub-projects/modules. 
buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

gradle-wrapper.properties

#Thu Apr 06 06:38:18 BST 2017 
distributionBase=GRADLE_USER_HOME 
distributionPath=wrapper/dists 
zipStoreBase=GRADLE_USER_HOME 
zipStorePath=wrapper/dists 
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip 

任何帮助将非常感激。

由于

更新:

local.properties

ndk.dir=C\:\\AndroidEclipse\\android-ndk-r10e 
sdk.dir=C\:\\AndroidEclipse\\SDK 

它无法在这条线DEF ndkDir = project.plugins.findPlugin( 'com.android.application') .getNdkFolder()

使用plugins.getPlugin('com.android.application').sdkHandler.ndkFolder或改为。

+0

我已经试过这个,但没有事件检测到它从开始的“插件”开始。这就像插件不存在作为可用[选项](https://snag.gy/LYkpqZ.jpg)的一部分。 与android.ndkDirectory **相同​​的问题。 android有,但ndkDirectory不是 – Chelseawillrecover

+1

@Chelseawillrecover android.ndkDirectory'为我工作。我们使用相同的gradle版本2.3.0。或者你可以尝试下面的内容。 'def androidPluginExtension = project.getExtensions()。getByName(“android”); //使用它可以轻松查看扩展中可用的属性。 ()“)ndkDirectory()ndkDirectory()ndkDirectory()ndkDirectory(); ndkDirectory(); ndkDirectory(); ndkDirectory(”ndkDirectory“)ndkDir2 = “); System.out.println(“使用ndk目录:$ {ndkDir2}”);' – jiashie