compileSdkVersion、buildToolsVersion、targetSdkVersion 、Failed to resolve:'com.android.support:appco

  1. Failed to resolve:'com.android.support:appcompat-v7:28.+'

    android {
        compileSdkVersion 28
        buildToolsVersion "28.0.3"
        defaultConfig {
            。。。
            minSdkVersion 19
            targetSdkVersion 28
           。。。
    }
        。。。
    }
    dependencies {
        。。。
    compile 'com.android.support:appcompat-v7:28.+'
        。。。
    }

    在新建android studio项目时,经常会出现如上报错,这是因为本地com.android.support:appcompat-v7包不存在28+版本,位置如下,我本地最大是26

    D:\Android\sdk\extras\android\m2repository\com\android\support\appcompat-v7

  2. 但是既然本地没有为什么默认build.gradle中会自动配置呢?

    在androidstudio安装目录下查看build.gradle的默认配置如下:

默认配置build.gradle位置  或android-sdk\tools\templates\projects

C:android-studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\build.gradle.ftl

android {

    <#if buildApiString?matches("^\\d+$")>${buildApiString}<#else>'${buildApiString}'</#if>

    buildToolsVersion "${buildToolsVersion}"  //对应最大sdk构建工具版本  sdkbuild-tools

    defaultConfig {

    <#if !(isLibraryProject!false) && !(isInstantApp!false)>

    applicationId "${packageName}"

    </#if>

        minSdkVersion <#if minApi?matches("^\\d+$")>${minApi}<#else>'${minApi}'</#if>

        targetSdkVersion <#if targetApiString?matches("^\\d+$")>${targetApiString}<#else>'${targetApiString}'</#if>

       ...

...}

发现对应的默认compileSdkVersion targetSdkVersion :buildApiString,其对应的sdk中的位置其实是

D:\Android\sdk\platforms 即sdk platforms最大版本

Support appcompat包配置在C:android-studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\build.gradle.ftl

  <dependency mavenUrl="com.android.support:appcompat-v7:${buildApi}.+" />

对应buildApi也是sdk platforms最大版本 所以会新建项目时自动生成的就是28+,

3、解决办法

(1)可以在如上位置修改默认值

(2)降低support:appcompat版本为本地存在版本26,但是

This support library should not use a different version (26) than the compile(28)

supportLibrary必须和compileSdkVersion相同,所以compileSdkVersion也要改为26

This support library should not use a lower version (26) than the targetSdkVersion (28) 

targetSdkVersion的值是指创建的android项目使用哪个版本的api

compileSdkVersion:使用哪个版本的sdk进行编译

targetSdkVersion不能大于compileSdkVersion

所以targetSdkVersion改为<=26

(3)

在build.gradle(Project)中添加仓库

maven{

      url "https://maven.google.com"

  } 或添加  google() 如下:

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

添加后可能会报错

The SDK platform-tools version (27.0.1) is too old to check APIs compiled with API 28

解决方式,更新sdktools

4、注释:

(1)查看安装的sdk工具版本 这里是24.4.1 可以更新 更新后26.1.1

(2)

查看sdk(构建工具版本)sdkBuild-Tools版本,

D:\Android\sdk\build-tools

因为当你创建一个新的项目时,gradle去帮你完成构建项目工作,那它自然是按你的最高sdk构建工具版本去构建项目buildToolsVersion "28.0.3"

(3)

buildToolsVersion的版本需要>=CompileSdkVersion; 高版本的build-tools 可以构建低版本编译的android程序;

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值