在编译android如何来回切换JDK
16lz
2021-01-26
原生android 4.4.4 (KitKat)开始使用Java 7,但现在芯片厂商的codebase用的还是Java 6,需要来回切换,纠结吧~
先说一下原生android KitKat,参照android developer官网,安装openjdk即可:
$sudoapt-getupdate$sudoapt-getinstallopenjdk-7-jdk$sudoupdate-alternatives--configjava$sudoupdate-alternatives--configjavac
openjdk会直接安装到/usr/bin/目录下
➜~Twhichjavac/usr/bin/javac➜~Tjavac-versionjavac1.7.0_55
如果要切回Java 6,可以通过修改环境变量,我的java 6是直接在oracle官网<link>下载,放入了~/bin/目录里,因此单独把设置环境变量的脚本独立出来
➜~cat~/bin/set_java_1.6exportJAVA_HOME=~/bin/jdk1.6.0_45exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=$JAVA_HOME➜~source~/bin/set_java_1.6➜~whichjavac/home/caohong/bin/jdk1.6.0_45/bin/javac➜~javac-versionjavac1.6.0_45
搞定。
更优雅的,参考<OSX setjdk>, 写一个执行脚本
#!/bin/bashfunctionsetjdk{#localvmdir=/System/Library/Frameworks/JavaVM.framework/Versions#修改成自己的jdk所在的目录,并且要把目录名从jdk1.6.0_45改成jdk/1.6,执行起来:setjdk1.6localvmdir=~/bin/caohong/bin/jdk/localver=${1?Usage:setjdk<version>}[-d$vmdir/$ver]||{echoUnknownJDKversion:$verreturn1}echo-n"Settingthisterminal'sJDKto$ver..."exportJAVA_HOME=$vmdir/$ver/HomePATH=$(echo$PATH|tr':''\n'|grep-v$vmdir|tr'\n'':')exportPATH=$JAVA_HOME/bin:$PATHjava-version}
这个参考脚本里,PATH目录保证了不会因为执行多次`setjdk`而把jdk目录累加起来(tr的作用是把冒号换成换行符,以便用grep -v把原来设置的jdk删除)
另外,MAC系统里,从10.5之后,java目录可以通过 /usr/libexec/java_home获得(详细参考<apple developer: how to get jdk on max osx>):
➜~/usr/libexec/java_home/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
对于<OSX setjdk>里稍微有点过时,因为10.5之前,java的目录都是放在/System/Library/Frameworks/JavaVM.framework/Versions 目录下,default值是通过软链接来指定的:
➜~ls-l/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDKlrwxr-xr-x1rootwheel5963019:21/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK->/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
更多相关文章
- Android(安卓)Environment 判断sd卡是否挂载 获取sd卡目录
- ubuntu16.04 Android(安卓)Studio 模拟器无法启动
- Android(安卓)Service相关
- 用kotlin写了一些android常用的一些工具类
- Ubuntu 12.04 64位编译cm-10.2 总结
- ionic app 目录结构说明
- Android(安卓)异步和超时处理 例子
- android ubuntu编译ffmpeg
- android Fragments详解四:管理fragment