1. 问题
最近从Linux平台下转战Mac OS,在这个平台下配置android开发环境和android源码编译环境。从android open source project上的信息可以看出,编译android 5.x的源码需要jdk 1.7的环境。
- Java Development Kit (JDK)
- Please note, since there are no available supported OpenJDK 8 packages for Ubuntu 14.04, the Ubuntu 15.04 packages must be
- installed manually. See JDK for Ubuntu LTS 14.04 for precise instructions.
- The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
- Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
- Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
- Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
于是我安装了Mac版的jdk 1.7(安装过程很简单,下载dmg包之后直接双击就好了,默认的路径是/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home)。
当我搭建好源码编译的环境后,准备再搭建一个android开发环境(android studio),但是在装好android studio之后,我发现最新版的android studio只支持jdk 1.8以上的版本。这样的话我就不能同时拥有源码编译环境和开发环境了。我询问了一下身边的朋友,他们的做法是建立两个账户,一个平时使用,另一个专门用于android源码编译。这种方法的缺点是切换的时候要注销另一个账户,我可不想这么麻烦,于是我想到了一个办法:在系统里安装两个版本的jdk,使用的时候通过修改环境变量进行切换,这样就可以在同一个用户下进行版本切换了。
我查了一下资料,看到网上有人提出一种方法:安装多个版本的jdk,使用alias命令对版本切换的命令重命名,然后再使用的时候直接调用命令的别名就可以了(具体参见http://chessman-126-com.iteye.com/blog/2162466)。关于这个alias命令,从字面上看就是别名的意思,用户可利用alias,自定指令的别名。(从这一点来看,Mac OS和Linux差不多嘛)。
2. 解决方案
在Mac OS下打开终端,输入如下命令:
- vi .bash_profile
- # 设置 JDK 7
- export JAVA_7_HOME=`/usr/libexec/java_home -v 1.7`
- # 设置 JDK 8
- export JAVA_8_HOME=`/usr/libexec/java_home -v 1.8`
- #默认JDK 7
- export JAVA_HOME=$JAVA_7_HOME
- #alias命令动态切换JDK版本
- alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
- alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
- source .bash_profile
3. 实现效果
先看一下当下的jdk版本
- liuyunhaodeMacBook-Pro:~ liuyunhao$ java -version
- java version "1.8.0_101"
- Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
- Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
- liuyunhaodeMacBook-Pro:~ liuyunhao$ jdk7
- liuyunhaodeMacBook-Pro:~ liuyunhao$ java -version
- java version "1.7.0_71"
- Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
- Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)