cocos-x 3.7+Android Studio:使用 cocos 插件时未配置 NDK

cocos-x 3.7+Android Studio: NDK not configured when cocos plugin is used

我已经在 Android Studio 下编译了新的 cocos 3.7 项目(虽然并不容易)。 当我在项目中添加 Facebook 插件时,出现此编译错误:

Skipping task ':libcocos2dx:compileDebugAidl' as it is up-to-date (took 0.008 secs).
:libPluginProtocol:compileReleaseNdk UP-TO-DATE
:libcocos2dx:compileDebugAidl (Thread[Task worker Thread 3,5,main]) completed. Took 0.011 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':libPluginProtocol:compileReleaseNdk'.
> NDK not configured.
  Download the NDK from http://developer.android.com/tools/sdk/ndk/.Then add ndk.dir=path/to/ndk in local.properties.
  (On Windows, make sure you escape backslashes, e.g. C:\ndk rather than C:\ndk)

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

我在 "Import Module" 的项目中添加了插件,然后选择了相应的 proj.android 文件夹。

我尝试过的:

  1. 为所有模块设置相同的 compile/target/min sdk/tools 版本(从以前工作的模块复制值)
  2. 正在将 ndk.dir 添加到我的项目 local.properties
  3. 正在将 ndk.dir 添加到 libPluginProtocol local.properties
  4. 通过 jni.srcDirs = []
  5. 禁用自动 ndk-build 调用

更改 local.properties 无效,因为这些文件是自动生成的,我添加的 ndk.dir 条目丢失了。

我正在从命令行编译:cocos compile -p android --android-studio

环境:cocos-js 3.7,ndk=r10c

这是我生成的 gradle 文件的峰值:

项目(工作)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.sharkintelligence.GameXY.google.full"
        minSdkVersion 10
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

    sourceSets.main {
        java.srcDir "src"
        res.srcDir "res"
        jniLibs.srcDir "libs"
        manifest.srcFile "AndroidManifest.xml"
        assets.srcDir "assets"
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    signingConfigs {

       release {
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                storeFile file(RELEASE_STORE_FILE)
                storePassword RELEASE_STORE_PASSWORD
                keyAlias RELEASE_KEY_ALIAS
                keyPassword RELEASE_KEY_PASSWORD
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (project.hasProperty("RELEASE_STORE_FILE")) {
                signingConfig signingConfigs.release
            }
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':libcocos2dx')
    compile project(':libPluginFacebook')
}

libcocos(工作)

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

    sourceSets.main {
        aidl.srcDir "../java/src"
        java.srcDir "../java/src"
        manifest.srcFile "AndroidManifest.xml"
    }

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

libPluginProtocol(不工作)

apply plugin: 'com.android.library'
android {
    compileSdkVersion 22
    buildToolsVersion '22.0.1'
    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 22

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

dependencies {
}

答案是设置系统变量ANDROID_NDK_HOME。 在我的例子中:export ANDROID_NDK_HOME=$NDK_ROOT