无法解析 com.android.support:appcompat-v7:28.0.0

5

关于使用v7.28.0v7.28.+v7.28.0.0-rc02出现了不少问题,但当我同步我的项目时,出现了以下错误:

无法解析依赖项“:app@debug / compileClasspath”:无法解析com.android.support:appcompat-v7:28.0.0。

我已经检查过支持库设置并按照其说明进行操作,但没有帮助。

这是我的应用程序模块

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.12.1'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven { url 'https://maven.google.com' }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.mobaleghan.nasimnoor"
        manifestPlaceholders = [
                onesignal_app_id: 'b1ced87b-48d1-4857-a68b-9c287aa4003f',
                // Project number pulled from dashboard, local value is ignored.
                onesignal_google_project_number: 'REMOTE'
        ]
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 8
        versionName "1.6.3"
        vectorDrawables.useSupportLibrary = true
    }

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

    lintOptions {
        abortOnError false
    }
}

dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:preference-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:support-annotations:27.1.1'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.google.android.apps.dashclock:dashclock-api:2.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation "com.android.support:support-core-utils:28.0.0"
    implementation 'com.onesignal:OneSignal:3.10.3'
}

还有项目 Gradle:

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

我已经在设置中测试过,Android Studio的互联网连接正常,但我不知道还要在哪里查看。

我甚至在AS 3.2.1中创建了一个新项目,但是我仍然遇到相同的错误。我不知道为什么每次更新AS都会发生这种情况


你尝试过使用 VPN 进行编译吗? - SiSa
@SiSa 我猜我不知道你在说什么! - Ghasem
你尝试过将 support:support-annotations 更新到 28.0.0 吗? - Zun
@AlexJolig,你知道伊朗受到了一些制裁。谷歌的一些功能也遵循这些制裁。因此,为了成功下载库并编译,您需要在运行VPN/代理的同时进行编译。 - SiSa
@MartinZeitler,我认为你甚至没有读过这个问题。 - Ghasem
显示剩余6条评论
5个回答

10

我相信其他答案也都很好并且有效。但我的问题是通过将代理设置为Freedom of Developers解决的。

这里输入图片描述

这个解决方案适用于像我这样在Google受到严格限制的伊朗人。

现在我的app Gradle看起来像这样:

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.12.1'
    }
}
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

repositories {
    maven { url 'https://maven.google.com' }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.mobaleghan.nasimnoor"
        manifestPlaceholders = [
                onesignal_app_id: 'b1ced87b-48d1-4857-a68b-9c287aa4003f',
                // Project number pulled from dashboard, local value is ignored.
                onesignal_google_project_number: 'REMOTE'
        ]
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 9
        versionName "1.6.4"
        vectorDrawables.useSupportLibrary = true
    }

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

    lintOptions {
        abortOnError false
    }
}

dependencies {
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:preference-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:support-annotations:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.google.android.apps.dashclock:dashclock-api:2.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation "com.android.support:support-core-utils:28.0.0"
    implementation 'com.onesignal:OneSignal:3.10.3'
}

这些代码库是基于OneSignal文档提供的。

顶层构建:

buildscript {
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

一切都运作良好。


3

Android项目有两个Gradle文件:一个存储在项目范围内,另一个存储在应用程序范围内(注意一个项目内可以有多个应用程序,但通常只有一个)。因此,您只需要在这两个Gradle文件中交换定义的存储库URL。

步骤1: 在您的build.gradle (应用程序) 中删除以下代码行:

repositories {
    maven { url 'https://maven.google.com' }
}

步骤2:将以下内容添加到您的build.gradle(项目)中。
    allprojects {
        repositories {
            google()
            jcenter()
            maven { url 'https://maven.google.com' }
            maven { url 'https://jitpack.io' }
            mavenCentral()
        }
    }

请注意,28.0.0android.support 的最后一个稳定版本。因此,您可能想要降级版本或将所有内容迁移到 androidX

28.0.0 的稳定版本将作为 android.support 打包的最终功能发布。所有随后的功能发布都将仅作为 androidx 打包的构件提供。

请查看此链接,并欢迎来到 androidX 的新时代。


0

您仍然可以使用版本28.0.0,但是现在似乎是时候迁移到Android X了!

根据支持库文档

注意:随着Android 9.0(API级别28)的发布,有一个名为AndroidX的新版本支持库,它是Jetpack的一部分。 AndroidX库包含现有的支持库,并包括最新的Jetpack组件。

您可以继续使用支持库。历史遗留物品(那些版本为27及更早版本,并打包为android.support.*)将继续在Google Maven上提供。但是,所有新的库开发都将在AndroidX库中进行。

我们建议在所有新项目中使用AndroidX库。您还应考虑将现有项目迁移到AndroidX。


0
尝试以下操作:
1)从构建工具中取消离线工作: 文件 -> 其他设置 -> 默认设置 -> 构建、执行、部署 -> 构建工具 -> Gradle -> 取消选中离线工作选项。
2)如果上述方法不起作用,请在项目的构建 gradle 中添加以下内容到 repositories:
allprojects {
     repositories {
         jcenter()
         maven {
             url "https://maven.google.com"
         }
     }
}

离线工作已经取消勾选,第二种方法也没有帮助。正如我所说,我已经检查了其他问题中的所有解决方案,并且我链接的文档说它适用于旧版本的Gradle。 - Ghasem

0

将模块的build.gradle中的这部分合并到根项目的build.gradle中:

buildscript {
    repositories {
        maven { url 'https://plugins.gradle.org/m2/'}
    }
    dependencies {
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.12.1'
    }
}

repositories {
    maven { url 'https://maven.google.com' }
}

只需在模块的build.gradle文件中保留这些行:

apply plugin: 'com.android.application'
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

android {
   ...
}

根项目的 build.gradle 应该长成这样:

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.12.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

谢谢。但我不知道为什么这些解决方案都不起作用! - Ghasem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接