首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未配置NDK。使用SDK管理器下载。首选NDK版本为'21.0.6113669‘

未配置NDK。使用SDK管理器下载。首选NDK版本为'21.0.6113669‘
EN

Stack Overflow用户
提问于 2020-09-30 20:24:45
回答 2查看 2.1K关注 0票数 1

我已经安装了NDK版本'21.0.6113669‘,但当我尝试将项目与Gradle文件同步时,得到以下错误:

代码语言:javascript
运行
复制
NDK not configured. Download it with SDK manager. Preferred NDK version is '21.0.6113669'. 
Update NDK version to 21.0.6113669 and sync project

请在我的build.gradle下面找到

代码语言:javascript
运行
复制
buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.0'
    }
}

plugins {
  id "com.android.application"
}

android {
    compileSdkVersion project.properties.compileSdkVersion.toInteger()
    ndkVersion '21.0.6113669'
        
    dependencies {
        implementation "androidx.annotation:annotation:1.1.0"
        implementation "androidx.viewpager:viewpager:1.0.0"
        implementation "androidx.drawerlayout:drawerlayout:1.1.0"
        implementation project(":terminal-view")
    }

    defaultConfig {
        applicationId "com.termux"
        minSdkVersion project.properties.minSdkVersion.toInteger()
        targetSdkVersion project.properties.targetSdkVersion.toInteger()
        versionCode 101
        versionName "0.101"

        externalNativeBuild {
            ndkBuild {
                cFlags "-std=c11", "-Wall", "-Wextra", "-Werror", "-Os", "-fno-stack-protector", "-Wl,--gc-sections"
            }
        }

        ndk {
            abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
        }

    }

    signingConfigs {
        debug {
            storeFile file('dev_keystore.jks')
            keyAlias 'alias'
            storePassword 'xrj45yWGLbsO7W0v'
            keyPassword 'xrj45yWGLbsO7W0v'
        }
    }

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

        debug {
            signingConfig signingConfigs.debug
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    externalNativeBuild {
        ndkBuild {
            path "src/main/cpp/Android.mk"
        }
    }

    testOptions {
        unitTests {
            includeAndroidResources = true
        }
    }
    buildToolsVersion '27.0.3'
}

dependencies {
    testImplementation 'junit:junit:4.13'
    testImplementation 'org.robolectric:robolectric:4.3.1'
}

task versionName {
  doLast {
    print android.defaultConfig.versionName
  }
}

def downloadBootstrap(String arch, String expectedChecksum, int version) {
    def digest = java.security.MessageDigest.getInstance("SHA-256")

    def localUrl = "src/main/cpp/bootstrap-" + arch + ".zip"
    def file = new File(projectDir, localUrl)
    if (file.exists()) {
        def buffer = new byte[8192]
        def input = new FileInputStream(file)
        while (true) {
            def readBytes = input.read(buffer)
            if (readBytes < 0) break
            digest.update(buffer, 0, readBytes)
        }
        def checksum = new BigInteger(1, digest.digest()).toString(16)
        if (checksum == expectedChecksum) {
            return
        } else {
            logger.quiet("Deleting old local file with wrong hash: " + localUrl)
            file.delete()
        }
    }

    def remoteUrl = "https://bintray.com/termux/bootstrap/download_file?file_path=bootstrap-" + arch + "-v" + version + ".zip"
    logger.quiet("Downloading " + remoteUrl + " ...")

    file.parentFile.mkdirs()
    def out = new BufferedOutputStream(new FileOutputStream(file))

    def connection = new URL(remoteUrl).openConnection()
    connection.setInstanceFollowRedirects(true)
    def digestStream = new java.security.DigestInputStream(connection.inputStream, digest)
    out << digestStream
    out.close()

    def checksum = new BigInteger(1, digest.digest()).toString(16)
    if (checksum != expectedChecksum) {
        file.delete()
        //throw new GradleException("Wrong checksum for " + remoteUrl + ": expected: " + expectedChecksum + ", actual: " + checksum)
        throw new FileNotFoundException("Wrong checksum for " + remoteUrl + ": expected: " + expectedChecksum + ", actual: " + checksum)
    }
}

clean {
    doLast {
        def tree = fileTree(new File(projectDir, 'src/main/cpp'))
        tree.include 'bootstrap-*.zip'
        tree.each { it.delete() }
    }
}

task downloadBootstraps(){
    doLast {
        def version = 30
        downloadBootstrap("aarch64", "7a90034285c614d23fa450547a5e2aec77d4242c9891ad662bf0c6fd3bd7ef4e", version)
        downloadBootstrap("arm",     "f030869ce9a43f84d88560d7ac5153ee4f7e517bca0b37ab01df3e1acba0fe37", version)
        downloadBootstrap("i686",    "1ea9b63f21602231140d58a5545cfbc6bc2ded56ef2b3c31cba2759d913eef00", version)
        downloadBootstrap("x86_64",  "a50eb8a4dd02b7898bbd4a9653a25c14b56c1737409ce7f64110fd33c2c69382", version)
    }
}

//buildscript {
//    dependencies {
//        classpath 'com.android.tools.build:gradle:4.0.0'
//    }
//}

afterEvaluate {
  android.applicationVariants.all { variant ->
    variant.javaCompileProvider.get().dependsOn(downloadBootstraps)
  }
}

我已经从我的笔记本电脑上删除了.gradle文件夹并重新安装,还尝试了Android Studio中的无效缓存/重启选项,但问题仍然没有解决。欢迎提出任何建议。

EN

回答 2

Stack Overflow用户

发布于 2020-09-30 23:19:02

这是Android目录中的build.gradle!您必须添加

代码语言:javascript
运行
复制
android {
    ndkVersion '21.3.6528147'
...

Android/app中使用build.gradle并从安卓/build.gradle中删除ndk version ...

我的Android/app代码中的简单build.gradle

代码语言:javascript
运行
复制
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
    compileSdkVersion 30
    ndkVersion '21.0.6113669'
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
        checkReleaseBuilds false
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.test.test"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
票数 0
EN

Stack Overflow用户

发布于 2021-11-12 04:55:25

从“https://developer.android.com/ndk”下载Ndk并解压到某个位置,在local.properties文件中添加其路径,如下所示:

ndk.dir=C:\Users\AppData\android-ndk-r23b

并在build.gradle文件中更改ndk的版本

android {

代码语言:javascript
运行
复制
ndkVersion '23.1.7779620'
...

立即同步并构建您的应用程序

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64137526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档