解决error 22 0 Could not find method android for arguments的方

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

转载请标明链接出处。

一、 问题的由来

导入adt工程或者Github上的项目,编译时容易遇到报错。例如:
1、error[22,0]Could not find method android() for arguments
2、failed to find target with hash string ‘android-23’

二、原因分析

1、导入项目的sdk platforms 版本与电脑本地里的sdk platforms 版本不一致。一般是导入项目的sdk platforms 版本过低。
例如,我导入项目的sdk platforms 版本是23,但是我的sdk platforms 版本是25。

compileSdkVersion 18
targetSdkVersion 18
compile ‘com.android.support:design:25.3.1
以上三个加粗的值要一致。要根据自己AS的sdk platforms 版本进行修改,不能照搬照套。其中,“compile ‘com.android.support:design:25.3.1’”AS Editor会有提示更改为最新版本。

2、在出现以上问题之前,还有可能出现gradle配置问题,例如:Error:(1, 0) Gradle version 2.2 is required. Current version is 3.4.1.
可参考:
Error:(1, 0) Gradle version 2.2 is required. Current version is 3.4.1. – Xanthuim的博客 – CSDN博客
http://blog.csdn.net/qq_15003505/article/details/68945739

三、解决方法

修改Project所在目录\app\build.gradle 中的“targetSdkVersion”和“compile ‘com.android.support:design:23.1.0’”。代码见下面代码块。
具体为:“targetSdkVersion 25”值为当前的SDK Platform版本号,可以在SDK所在目录\Platforms\下查看,我的是“Platform-25”,即“targetSdkVersion ”值为25;
“compile ‘com.android.support:design:25.3.1’” 为最新的版本号。
其中,“compile ‘com.android.support:design:25.3.1’”AS Editor会有提示更改为最新版本。
我安装的AS版本为Android Studio 2.2.3,platform版本为Android-25。

代码块

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.2"

    defaultConfig {
        applicationId "com.win16.finaltest"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:design:25.3.1'
    provided files('lib/layoutlib.jar')
}
我的AS中,此处属性均没有指定,为空

另外转载其他两种方法,但是亲测还是报错。列于此处,得以借鉴。
方法一:
改一下编译版本就好了
改成你本地有的API版本就行了,或者去更新一下SDK。

我的AS中,此页面的属性均没有指定,为空
引用链接:https://zhidao.baidu.com/question/690185889172608564.html

方法二:
如果你的App包含了多个Android模块, 应该尽量避免给每个模块手动指定编译SDK版本. 这些公有的编译属性最好一块定义在主工程里面
eg.
build.gradle

//主工程中进行配置
ext {
  compileSdkVersion = 19
  buildToolsVersion = "19.0.1"
}
//所有子模块进行引用, 这样所有的配置就统一了
android {
  compileSdkVersion rootProject.ext.compileSdkVersion
  buildToolsVersion rootProject.ext.buildToolsVersion
}

主工程中去掉

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.1'
}

注释掉后重新编译通过。
引用链接:http://blog.csdn.net/wangtingshuai/article/details/53349530

参考文献

1、Error:(1, 0) Gradle version 2.2 is required. Current version is 3.4.1. – Xanthuim的博客 – CSDN博客
http://blog.csdn.net/qq_15003505/article/details/68945739
2、failed to find target with hash string ‘android-23’ – CSDN博客
http://blog.csdn.net/coder_ken/article/details/50853927
3、Android Studio 解决错误 Could not find method android() for arguments – 挺帅的移动开发专栏 – CSDN博客
http://blog.csdn.net/wangtingshuai/article/details/53349530
4、Android Studio大神来帮忙看看,Error:failed to find target android-19_百度知道
https://zhidao.baidu.com/question/690185889172608564.html
5、Android SDK开发包国内下载地址 – 八进制 – 博客园
http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform-sdk-download-mirror.html

点这里可以跳转到人工智能网站

发表评论