本机环境: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版本:
到这里其实已经可以编译通过了,三角形已经亮起了健康的绿色,我也没试虚拟机,直接找了个实体机试了下,成功运行,完结撒花。
文末附上各文件完整内容:
//------------------------------------------------------------------------------------------
// 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
}
//------------------------------------------------------------------------------------------
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'
}
//------------------------------------------------------------------------------------------
#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
//------------------------------------------------------------------------------------------
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/
手机扫一扫
移动阅读更方便
你可能感兴趣的文章