【问题标题】:Could not get unknown property 'defaultCompileSdkVersion' for project ':app' of type org.gradle.api.Project无法为 org.gradle.api.Project 类型的项目“:app”获取未知属性“defaultCompileSdkVersion”
【发布时间】:2023-03-29 06:25:01
【问题描述】:

我的应用程序的应用程序项目中不断出现此错误。

// Set property defaults after extension .gradle files.
    
    ext.cdvCompileSdkVersion = cdvCompileSdkVersion == null ? (
        defaultCompileSdkVersion == null
            ? privateHelpers.getProjectTarget()
            : defaultCompileSdkVersion
    ) : Integer.parseInt('' + cdvCompileSdkVersion)

【问题讨论】:

    标签: android cordova ionic-framework


    【解决方案1】:

    您尚未在应用程序 gradle 中定义已编译的 sdk 版本并尝试获取它。 在你的项目 build.gradle 中声明 compileSdkVersion

     ext {
     compileSdkVersion = 28
     buildToolsVersion = '28.0.0'
    
     }
    

    【讨论】:

    • 在 app gradle 中定义编译后的 sdk 版本后,我仍然遇到同样的错误。
    • // 在扩展 .gradle 文件之后设置属性默认值。 ext.cdvCompileSdkVersion = cdvCompileSdkVersion == null ? ( defaultCompileSdkVersion == null ? privateHelpers.getProjectTarget() : defaultCompileSdkVersion ) : Integer.parseInt('' + cdvCompileSdkVersion) ext { compileSdkVersion = 27 buildToolsVersion = '27.0.0' }
    • 分享你的 gradle 文件
    • 分享你的 gradle 文件
    【解决方案2】:
    buildscript {
        repositories {
            maven { url 'https://maven.fabric.io/public' }
        }
    
        dependencies {
            classpath 'io.fabric.tools:gradle:1.28.1'
        }
    }
    
    repositories {
        google()
    }
    
    apply plugin: 'com.android.application'
    apply plugin: 'io.fabric'
    
    repositories {
        maven { url 'https://maven.fabric.io/public' }
        maven { url "https://jitpack.io" }
        maven {
            url "http://dl.bintray.com/lukaville/maven"
        }
    }
    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 27
    
        defaultConfig {
            applicationId "com.example.abc.test"
            minSdkVersion 22
            targetSdkVersion 27
            buildToolsVersion '27.0.3'
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        buildToolsVersion '27.0.0'
    }
    
    
    if (cdvHelpers.getConfigPreference('GradlePluginKotlinEnabled', 'false').toBoolean()) {
        apply plugin: 'kotlin-android'
        apply plugin: 'kotlin-android-extensions'
    }
    
    buildscript {
        apply from: '../CordovaLib/cordova.gradle'
    
        if(cdvHelpers.getConfigPreference('GradlePluginKotlinEnabled', 'false').toBoolean()) {
             defaultGradlePluginKotlinVersion = kotlin_version
    
            /**
             * Fetches the user's defined Kotlin Version from config.xml.
             * If the version is not set or invalid, it will default to the ${defaultGradlePluginKotlinVersion}
             */
             gradlePluginKotlinVersion = cdvHelpers.getConfigPreference('GradlePluginKotlinVersion', defaultGradlePluginKotlinVersion)
            if(!cdvHelpers.isVersionValid(gradlePluginKotlinVersion)) {
                println("The defined Kotlin version (${gradlePluginKotlinVersion}) does not appear to be a valid version. Falling back to version: ${defaultGradlePluginKotlinVersion}.")
                gradlePluginKotlinVersion = defaultGradlePluginKotlinVersion
            }
    
            // Change the version to be used.
            ext.kotlin_version = gradlePluginKotlinVersion
        }
    
        repositories {
            mavenCentral()
            google()
            jcenter()
        }
    
        dependencies {
            apply from: '../CordovaLib/cordova.gradle'
    
            classpath 'com.android.tools.build:gradle:4.2.0-alpha13'
    
            if (cdvHelpers.getConfigPreference('GradlePluginKotlinEnabled', 'false').toBoolean()) {
                classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
            }
    
            if(cdvHelpers.getConfigPreference('GradlePluginGoogleServicesEnabled', 'false').toBoolean()) {
                 defaultGradlePluginGoogleServicesVersion = '4.2.0.-alpha13'
    
                /**
                 * Fetches the user's defined Google Services Plugin Version from config.xml.
                 * If the version is not set or invalid, it will default to the ${defaultGradlePluginGoogleServicesVersion}
                 */
                 gradlePluginGoogleServicesVersion = cdvHelpers.getConfigPreference('GradlePluginGoogleServicesVersion', defaultGradlePluginGoogleServicesVersion)
                if(!cdvHelpers.isVersionValid(gradlePluginGoogleServicesVersion)) {
                    println("The defined Google Services plugin version (${gradlePluginGoogleServicesVersion}) does not appear to be a valid version. Falling back to version: ${defaultGradlePluginGoogleServicesVersion}.")
                    gradlePluginGoogleServicesVersion = defaultGradlePluginGoogleServicesVersion
                }
    
                // Create the Google Services classpath and set it.
                 gradlePluginGoogleServicesClassPath = "com.google.gms:google-services:${gradlePluginGoogleServicesVersion}"
                println "Adding classpath: ${gradlePluginGoogleServicesClassPath}"
                classpath gradlePluginGoogleServicesClassPath
            }
        }
    }
    
    // Allow plugins to declare Maven dependencies via build-extras.gradle.
    allprojects {
        repositories {
            mavenCentral()
            jcenter()
        }
    }
    
    task wrapper(type: Wrapper) {
        gradleVersion = '6.5'
    }
    
    // Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties.
    // Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html
    ext {
        apply from: '../CordovaLib/cordova.gradle'
    
        // The value for android.compileSdkVersion.
        if (!project.hasProperty('cdvCompileSdkVersion')) {
            cdvCompileSdkVersion = null
        }
        // The value for android.buildToolsVersion.
        if (!project.hasProperty('cdvBuildToolsVersion')) {
            cdvBuildToolsVersion = null
        }
        // Sets the versionCode to the given value.
        if (!project.hasProperty('cdvVersionCode')) {
            cdvVersionCode = null
        }
        // Sets the minSdkVersion to the given value.
        if (!project.hasProperty('cdvMinSdkVersion')) {
            cdvMinSdkVersion = null
        }
        // Sets the maxSdkVersion to the given value.
        if (!project.hasProperty('cdvMaxSdkVersion')) {
            cdvMaxSdkVersion = null
        }
        // The value for android.targetSdkVersion.
        if (!project.hasProperty('cdvTargetSdkVersion')) {
            cdvTargetSdkVersion = null
        }
        // Whether to build architecture-specific APKs.
        if (!project.hasProperty('cdvBuildMultipleApks')) {
            cdvBuildMultipleApks = null
        }
        // Whether to append a 0 "abi digit" to versionCode when only a single APK is build
        if (!project.hasProperty('cdvVersionCodeForceAbiDigit')) {
            cdvVersionCodeForceAbiDigit = null
        }
        // .properties files to use for release signing.
        if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) {
            cdvReleaseSigningPropertiesFile = null
        }
        // .properties files to use for debug signing.
        if (!project.hasProperty('cdvDebugSigningPropertiesFile')) {
            cdvDebugSigningPropertiesFile = null
        }
        // Set by build.js script.
        if (!project.hasProperty('cdvBuildArch')) {
            cdvBuildArch = null
        }
    
        // Plugin gradle extensions can append to this to have code run at the end.
        cdvPluginPostBuildExtras = []
    }
    
    // PLUGIN GRADLE EXTENSIONS START
    // PLUGIN GRADLE EXTENSIONS END
    
    def hasBuildExtras1 = file('build-extras.gradle').exists()
    if (hasBuildExtras1) {
        apply from: 'build-extras.gradle'
    }
    
    def hasBuildExtras2 = file('../build-extras.gradle').exists()
    if (hasBuildExtras2) {
        apply from: '../build-extras.gradle'
    }
    
    // Set property defaults after extension .gradle files.
    ext.cdvCompileSdkVersion = cdvCompileSdkVersion == null ? (
        defaultCompileSdkVersion == null
            ? privateHelpers.getProjectTarget()
            : defaultCompileSdkVersion
    ) : Integer.parseInt('' + cdvCompileSdkVersion)
    
    ext {
     compileSdkVersion = 27
     buildToolsVersion = '27.0.0'
    
     }
    
    if (ext.cdvBuildToolsVersion == null) {
        ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
        //ext.cdvBuildToolsVersion = project.ext.defaultBuildToolsVersion
    }
    if (ext.cdvDebugSigningPropertiesFile == null && file('../debug-signing.properties').exists()) {
        ext.cdvDebugSigningPropertiesFile = '../debug-signing.properties'
    }
    if (ext.cdvReleaseSigningPropertiesFile == null && file('../release-signing.properties').exists()) {
        ext.cdvReleaseSigningPropertiesFile = '../release-signing.properties'
    }
    
    // Cast to appropriate types.
    ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean()
    ext.cdvVersionCodeForceAbiDigit = cdvVersionCodeForceAbiDigit == null ? false : cdvVersionCodeForceAbiDigit.toBoolean()
    
    // minSdkVersion, maxSdkVersion and targetSdkVersion
    ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? defaultMinSdkVersion : Integer.parseInt('' + cdvMinSdkVersion)
    if (cdvMaxSdkVersion != null) {
        ext.cdvMaxSdkVersion = Integer.parseInt('' + cdvMaxSdkVersion)
    }
    ext.cdvTargetSdkVersion = cdvTargetSdkVersion == null ? defaultTargetSdkVersion  : Integer.parseInt('' + cdvTargetSdkVersion)
    
    ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode)
    
    def computeBuildTargetName(debugBuild) {
        def ret = 'assemble'
        if (cdvBuildMultipleApks && cdvBuildArch) {
            def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch
            ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1)
        }
        return ret + (debugBuild ? 'Debug' : 'Release')
    }
    
    // Make cdvBuild a task that depends on the debug/arch-specific task.
    task cdvBuildDebug
    cdvBuildDebug.dependsOn {
        return computeBuildTargetName(true)
    }
    
    task cdvBuildRelease
    cdvBuildRelease.dependsOn {
        return computeBuildTargetName(false)
    }
    
    task cdvPrintProps {
        doLast {
            println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
            println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
            println('cdvVersionCode=' + cdvVersionCode)
            println('cdvVersionCodeForceAbiDigit=' + cdvVersionCodeForceAbiDigit)
            println('cdvMinSdkVersion=' + cdvMinSdkVersion)
            println('cdvMaxSdkVersion=' + cdvMaxSdkVersion)
            println('cdvTargetSdkVersion=' + cdvTargetSdkVersion)
            println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
            println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile)
            println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
            println('cdvBuildArch=' + cdvBuildArch)
            println('computedVersionCode=' + android.defaultConfig.versionCode)
            android.productFlavors.each { flavor ->
                println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode)
            }
        }
    }
    
    
    
    /*
     * WARNING: Cordova Lib and platform scripts do management inside of this code here,
     * if you are adding the dependencies manually, do so outside the comments, otherwise
     * the Cordova tools will overwrite them
     */
    
    
    dependencies {
        implementation fileTree(dir: 'libs', include: '*.jar')
    
        if (cdvHelpers.getConfigPreference('GradlePluginKotlinEnabled', 'false').toBoolean()) {
            implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        }
    
        // SUB-PROJECT DEPENDENCIES START
        implementation(project(path: ":CordovaLib"))
        // SUB-PROJECT DEPENDENCIES END
    }
    
    def promptForReleaseKeyPassword() {
        if (!cdvReleaseSigningPropertiesFile) {
            return
        }
        if ('__unset' == android.signingConfigs.release.storePassword) {
            android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ')
        }
        if ('__unset' == android.signingConfigs.release.keyPassword) {
            android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: ')
        }
    }
    
    gradle.taskGraph.whenReady { taskGraph ->
        taskGraph.getAllTasks().each() { task ->
          if(['validateReleaseSigning', 'validateSigningRelease', 'validateSigningArmv7Release', 'validateSigningX76Release'].contains(task.name)) {
             promptForReleaseKeyPassword()
          }
        }
    }
    
    def addSigningProps(propsFilePath, signingConfig) {
        def propsFile = file(propsFilePath)
        propsFile.withReader { reader ->
            props.load(reader)
        }
    
        def storeFile = (props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile'))
        if (!storeFile.isAbsolute()) {
            storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile())
        }
        if (!storeFile.exists()) {
            ('Keystore file does not exist: ' + storeFile.getAbsolutePath())
        }
        signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias')
        signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword))
        signingConfig.storeFile = storeFile
        signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword))
        def storeType = props.get('storeType', props.get('key.store.type', ''))
        if (!storeType) {
            def filename = storeFile.getName().toLowerCase()
            if (filename.endsWith('.p12') || filename.endsWith('.pfx')) {
                storeType = 'pkcs12'
            } else {
                storeType = signingConfig.storeType // "jks"
            }
        }
        signingConfig.storeType = storeType
    }
    
    for (def func : cdvPluginPostBuildExtras) {
        func()
    }
    
    // This can be defined within build-extras.gradle as:
    //     ext.postBuildExtras = { ... code here ... }
    if (hasProperty('postBuildExtras')) {
        postBuildExtras()
    }
    
    if (cdvHelpers.getConfigPreference('GradlePluginGoogleServicesEnabled', 'false').toBoolean()) {
        apply plugin: 'com.google.gms:google-services:4.2.0-alpha13'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2022-08-21
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多