Android Studio Giraffe安装与gradle配置
阅读原文时间:2023年08月12日阅读:3

  本机环境:win10专业版,64位,16G内存。

  原先用的AS2.2,是很早之前在看《第一行代码Android(第2版)》的时候,按书里的链接下载安装的,也不用怎么配置。(PS:第一行代码这本书对新手确实很适合,第1版是eclise,第2版是Android studio)

  最近想给AS升级一下,果不其然碰到很多问题。

  最开始肯定是去下载Android Studio,参考下方给出的链接。

  Android开发自然是要Java环境,这个没啥难度,直接下载安装就好,如果在官网上下,就需要注册一下oracle账号。我之前已经安装过jdk1.8,所以略过了,没想到后面也是个坑。

  当前的AS最新版是Android Studio Hedgehog,我一开始下载的也是这个,但一直没配置好,就换成了Android Studio Giraffe这个版本,其实应该跟AS的版本没啥关系,后面再试试换成最新版的。

  安装这个没啥好说的,参考下面的安装教程就行。因为搞Hedgehog版本的时候死活不行,一度怀疑是否是之前AS2.2版本的残余影响了,所以我是把C盘里面涉及到的文件夹都先删了个干干净净,当然,这一步估计也不是关键。文件夹最好不要选在系统盘,自己在其他盘新建一个来放就好了,名字不要带中文,SDK的文件夹不要带空格。出现弹窗"Unable to access Android SDK add-on list",先点击cancel跳过就好。一路点下去,然后就是等待下载完成。

  安装完成后,新建个项目试试水,点击new project,随便选个带窗体的模板就行。设置项目名称,包名,路径,不要带中文,语言选java,选择最低支持的Android 版本。点击finish后,又开始了下载。这里就是下载gradle以及Android项目需要引用的包。

  尝试编译,果然开始报错了,我们的目标就是让编译那个绿色三角形亮起来。

  这时候,微信另一端的老铁给我发来了私藏多年的链接,就是下面那篇《Andriod Studio配置问题:run是灰色的,编译报错 Could not resolve com.android.tools.build:gradle:3.5.2.》,确实是最接近正确答案的一篇了。

  先尝试一下点击 File -> sync ProJect with Gradel File,确实编译出错。

  先把proxy关了,点击File-Settings-System Settings-HTTP Proxy,默认应该是关的(选No proxy),确认一下就好,如图:

  找到Project的build.gradel,这里要注意,有两个build.gradel,你可以把左上角切换成Android,然后在Gradle Scripts里面,找到那个后面括号带项目名的文件,如图:

  然后修改里面的内容,参考资料里面给出的文件内容有那么一点小问题,比如少了最后一个花括号},比如有些链接没有改成https,问题不大,改一下就好(最终内容见文末,这一步我是直接用的参考资料的内容)。

  如果链接没有改成https,就会报错Could not GET 'XXX'. Received status code 403 from server: Forbidden,应该是安全机制问题。

  一开始AS里面默认用的是8.0版本的gradle,怎么编译都不行,想了想,会不会是插件版本跟gradle版本对不上,于是默默的查了下《Gradle版本、Gradle插件版本和AndroidStudio版本之间的对应关系》,随便找了一对看起来可以用的版本。

  这次又换了个报错,再查了下《Android Studio 失败:构建失败并出现异常。允许的子类需要 ASM9》,把插件版本换成7.3.0,gradle版本换成7.4,再次编译。

  这里说的插件版本跟gradle版本,一个是对应build.gradel文件里面那一行classpath "com.android.tools.build:gradle:'7.3.0',一个是对应gradle-wrapper.properties文件里面distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip,也可以在左上角File-Project Structure里面看到,我这里试着在Project Structure改了下配置,然后它给我自动把插件版本放到了参数里面去了:

  报错“Build was configured to prefer settings repositories over project repositories but repository…”,继续找资料,在Gradle Scripts里面找到settings.gradle,注释掉dependencyResolutionManagement的内容,再次编译。

  这时候看起来就很像是要成功的样子了,虽然还是报错“Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8”,这里一看就知道是java版本不对,插件要java11,那就下载一个,然后配置好环境变量,再次编译。

  这里仅仅更新外部的java环境是不够的,还要再修改一下AS的配置,点击File-Settings(这里如果选择的是JAVA_HOME要重启下AS才会更新成最新的):

  修改一下另一个build.gradle的java版本:

  到这里其实已经可以编译通过了,三角形已经亮起了健康的绿色,我也没试虚拟机,直接找了个实体机试了下,成功运行,完结撒花。

文末附上各文件完整内容:

//------------------------------------------------------------------------------------------

  • 第一个build.gradle文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        agp_version = '7.3.0'
    }
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        mavenLocal()
        mavenCentral()
        google()
        // jcenter()
        maven { url "https://jitpack.io" }
        jcenter(){url "https://jcenter.bintray.com/"}
    }
    dependencies {
        classpath "com.android.tools.build:gradle:$agp_version"

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

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        mavenLocal()
        mavenCentral()
        google()
        //jcenter()
        maven { url "https://jitpack.io" }
        jcenter(){url "https://jcenter.bintray.com/"}

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

//------------------------------------------------------------------------------------------

  • 第2个build.gradle文件:

plugins {
    id 'com.android.application'
}

android {
    namespace 'com.example.myapplication'
    compileSdk 33

    defaultConfig {
        applicationId "com.example.myapplication"
        minSdk 24
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

//------------------------------------------------------------------------------------------

  • gradle-wrapper.properties文件:

#Sat Aug 12 10:47:10 CST 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

//------------------------------------------------------------------------------------------

  • settings.gradle文件:

pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
//dependencyResolutionManagement {
//    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
//    repositories {
//        google()
//        mavenCentral()
//    }
//}
rootProject.name = "My Application"
include ':app'

//------------------------------------------------------------------------------------------

  网上也有其他的方法,但实操过后感觉作用不大,应该是药不对症,也一并放在下方了,归类在其他项。

  • 下载链接:

Android Studio :

  1、 https://developer.android.com/studio (官网)

  2、 https://www.androiddevtools.cn/# (这里面包括很多Android的资料)

Java11:https://www.oracle.com/java/technologies/downloads/#java11-windows

  • 主要参考资料:

《安卓开发 Android Studio安装教程》 https://blog.csdn.net/m0_65489276/article/details/126830701

《Android studio安装教程》 https://blog.csdn.net/tao_789456/article/details/118093106

《Andriod Studio配置问题:run是灰色的,编译报错 Could not resolve com.android.tools.build:gradle:3.5.2.》 https://blog.csdn.net/m0_37922496/article/details/113531074

《Android Studio 编译报错:Could not GET 'XXX'. Received status code 403 from server: Forbidden》 https://blog.csdn.net/summer_ck/article/details/105264997

《Gradle版本、Gradle插件版本和AndroidStudio版本之间的对应关系》 https://blog.csdn.net/Jackson_Wen/article/details/130671443

《Android Studio 失败:构建失败并出现异常。允许的子类需要 ASM9》 https://www.soinside.com/question/GSDJQXBMciNv3oMRmTsBbE

《Build was configured to prefer settings repositories over project repositories but repository ….问题》 https://blog.csdn.net/badme/article/details/121946258

《如何实现Android Gradle plugin requires Java 11 to run. You are currently using Java的具体操作步骤》 https://blog.51cto.com/u_16175443/6628800

《jdk11下载、安装及环境配置详解(win10环境)》 https://blog.csdn.net/li1325169021/article/details/128667969

  • 其他:

《解决 android studio 出现:"AndroidStudio:Could not GET 'https://dl.google.com Received status code 400 from server: Bad Request"问题》 https://www.cnblogs.com/sky-cheng/p/11832959.html

《Android studio出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"的解决办法》 https://blog.csdn.net/e_one/article/details/51046313

《Could not resolve all dependencies for configuration ‘:classpath‘.》 https://blog.csdn.net/BugNest/article/details/123057250

《Android 应用(9)——Gradle和Gradle插件》 https://blog.csdn.net/scottmvp/article/details/120920928

《Android Studio Gradle两种更新方式》 http://www.taodudu.cc/news/show-1041443.html?action=onClick

《Using insecure protocols with repositories, without explicit opt-in, is unsupported.解决方案》 https://blog.csdn.net/qq_36532805/article/details/125118215

《Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别》 https://blog.csdn.net/u013270444/article/details/88252234

《AS 把鼠标放在targetSdkVersion xx下边红波浪线提示:Google Play requires that apps target API level 31 or higher.》https://blog.csdn.net/qq_35091074/article/details/126229384

《Android studio版本对用的gradle版本和插件版本(注意事项)》https://betheme.net/qianduan/68269.html?action=onClick

gradle下载地址:https://services.gradle.org/distributions/