最近开始折腾Jetpack,Clone一个MVVN的项目,AS打开,Terminal编译出现下述错误:
原因是 AGP 7.0后必须使用 Java 11,而跳过版本5、6的原因是让 AGP的版本号与Gradle版本号相匹配,比如:AGP 7.x对应Gradle 7.x的API。具体讲解可见:《AGP 7.0: Next major release for the Android Gradle plugin》
使用 AGP 7.0(Android Gradle Plugin) 构建时需要 JDK 11才能运行Gradle,AS更新到 Android Studio Arctic Fox,直接捆绑了 免费的OpenJDK 11 并将Gradle配置默认使用它,一般就可以直接用了,如果不行再进行 手动配置 亦可~
Tips:从错误提示就可以知道有三种方法可以解决~
0x1、AS手动配置
依次选中项目右键:Open Module Settings
接着新旧AS会有区别,先是 老版本 :
OpenJdk 11可以到这里下载:Archived OpenJDK General-Availability Releases
然后是 新版本 :
点开,Gradle JDK选择11
一路OK,重新Rebuild项目即可,当然也可以到 Settings/Preferences,如图所示处修改~
上述入口还可以从Gradle的设置进入:
0x2、修改gradle.properties
手动配置完AS,可能出现一种情况:AS可以跑,Terminal跑 gradlew clean build 还是报错,可以在 gradle.properties
文件中指定java home的路径:
# Windows示例 org.gradle.java.home=D\:\\Coding\\AS\\jre # Mac、Linux示例 org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
这样做的好处是,电脑全局的JAVA_HOME环境变量不受影响,依旧可以是jdk 1.8,起来依赖到的应用不受影响。
0x3、修改JAVA_HOME
当然,你硬要把环境变量改成11亦可,如:
重启AS,然后Terminal键入:gradlew -v:
可以看到此时的JVM为:11.0.11,其他系统修改环境变量,MAC修改示例如下:
# 查看jdk所在位置 /usr/libexec/java_home -V # 设置环境变量 vi ~/.bash_profile # 把jdk1.8.0_172.jdk改成对应11的目录 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # esc退出输入模式,键入下述目录保存 wq # 更新配置文件 source ~/.bash_profile