Android源码编译时jdk冲突解决办法
2017-08-14 16:45
447 查看
做Android rom开发过程中,可能会经常做不同的版本4.2,4.4,5.1或者6.0。每个版本的编译环境对jdk的版本要求都有点差异。
4.2版本需要使用jdk1.5或者1.6,使用1.7的jdk编译时会报类型错误等问题
5.1以上的版本需使用openJDK 1.7及以上,否则会直接报“目标版本与源版本冲突”之类的问题。
平时,我们的一个Linux编译服务器中会存放多个不同android版本的项目,这个时候就要对单个项目进行jdk的配置才能避免jdk冲突。
首先,我们最好是在linux编译服务器中下载两套jdk,一个1.6的和一个openJDK 1.7。注意这里jdk 1.6可以用apt命令下载安装,而openJDK是不能用apt来安装的,而是直接下载后解压到一个目录中存放即可。
接下来,我们看看我们要编译的工程所依赖的jdk版本
build\core\combo\javac.mk
Android 4.2的javac.mk代码如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
红色标注的target 1.6就是指的此工程编译依赖的JDK版本。
以上两点确认了之后,就是要针对当前工程进行配置了。
这里提供一个脚本mbldenv.sh,存放到根目录下
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
红色标注的就是对应的jdk目录,修改成需要的就可以使用了。
使用方法,source build/env…之后,source mbldenv.sh,这个时候就当前工程的就会使用jdk1.6.0_45来进行编译了。
最后再附上一个5.1的mbldenv.sh
4.2版本需要使用jdk1.5或者1.6,使用1.7的jdk编译时会报类型错误等问题
5.1以上的版本需使用openJDK 1.7及以上,否则会直接报“目标版本与源版本冲突”之类的问题。
平时,我们的一个Linux编译服务器中会存放多个不同android版本的项目,这个时候就要对单个项目进行jdk的配置才能避免jdk冲突。
首先,我们最好是在linux编译服务器中下载两套jdk,一个1.6的和一个openJDK 1.7。注意这里jdk 1.6可以用apt命令下载安装,而openJDK是不能用apt来安装的,而是直接下载后解压到一个目录中存放即可。
接下来,我们看看我们要编译的工程所依赖的jdk版本
build\core\combo\javac.mk
Android 4.2的javac.mk代码如下:
# Selects a Java compiler. # # Inputs: # CUSTOM_JAVA_COMPILER -- "eclipse", "openjdk". or nothing for the system # default # # Outputs: # COMMON_JAVAC -- Java compiler command with common arguments # Whatever compiler is on this system. ifeq ($(BUILD_OS), windows) COMMON_JAVAC := development/host/windows/prebuilt/javawrap.exe -J-Xmx256m \ -target 1.6 -Xmaxerrs 9999999 else COMMON_JAVAC := javac -J-Xmx512M -target 1.6 -Xmaxerrs 9999999 endif # Eclipse. ifeq ($(CUSTOM_JAVA_COMPILER), eclipse) COMMON_JAVAC := java -Xmx256m -jar prebuilt/common/ecj/ecj.jar -6 \ -maxProblems 9999999 -nowarn $(info CUSTOM_JAVA_COMPILER=eclipse) endif # OpenJDK. ifeq ($(CUSTOM_JAVA_COMPILER), openjdk) # We set the VM options (like -Xmx) in the javac script. COMMON_JAVAC := prebuilt/common/openjdk/bin/javac -target 1.6 \ -Xmaxerrs 9999999 $(info CUSTOM_JAVA_COMPILER=openjdk) endif HOST_JAVAC ?= $(COMMON_JAVAC) TARGET_JAVAC ?= $(COMMON_JAVAC) #$(info HOST_JAVAC=$(HOST_JAVAC)) #$(info TARGET_JAVAC=$(TARGET_JAVAC))1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
红色标注的target 1.6就是指的此工程编译依赖的JDK版本。
以上两点确认了之后,就是要针对当前工程进行配置了。
这里提供一个脚本mbldenv.sh,存放到根目录下
#!/bin/bash # ########################################################## # ALPS(Android4.1 based) build environment profile setting # ########################################################## # Overwrite JAVA_HOME environment variable setting if already exists JAVA_HOME=**/home/ken/jdk/jdk1.6.0_45** export JAVA_HOME # Overwrite ANDROID_JAVA_HOME environment variable setting if already exists ANDROID_JAVA_HOME=**/home/ken/jdk/jdk1.6.0_45** export ANDROID_JAVA_HOME # Overwrite PATH environment setting for JDK & arm-eabi if already exists PATH=**/home/ken/jdk/jdk1.6.0_45**/bin:$PWD/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin:$PATH export PATH # Add MediaTek developed Python libraries path into PYTHONPATH if [ -z "$PYTHONPATH" ]; then PYTHONPATH=$PWD/mediatek/build/tools else PYTHONPATH=$PWD/mediatek/build/tools:$PYTHONPATH fi export PYTHONPATH1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
红色标注的就是对应的jdk目录,修改成需要的就可以使用了。
使用方法,source build/env…之后,source mbldenv.sh,这个时候就当前工程的就会使用jdk1.6.0_45来进行编译了。
最后再附上一个5.1的mbldenv.sh
#!/bin/bash # ########################################################## # ALPS(Android5.1 based) build environment profile setting # ########################################################## # Overwrite JAVA_HOME environment variable setting if already exists JAVA_HOME=**/usr/lib/jvm/java-1.7.0-openjdk-amd64** export JAVA_HOME # Overwrite ANDROID_JAVA_HOME environment variable setting if already exists ANDROID_JAVA_HOME=**/usr/lib/jvm/java-1.7.0-openjdk-amd64** export ANDROID_JAVA_HOME # Overwrite PATH environment setting for JDK & arm-eabi if already exists PATH=**/usr/lib/jvm/java-1.7.0-openjdk-amd64**/bin:$PWD/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin:$PATH export PATH # Add MediaTek developed Python libraries path into PYTHONPATH if [ -z "$PYTHONPATH" ]; then PYTHONPATH=$PWD/mediatek/build/tools else PYTHONPATH=$PWD/mediatek/build/tools:$PYTHONPATH fi export PYTHONPATH转载自:http://blog.csdn.net/q1302182594/article/details/52125839
相关文章推荐
- Android源码编译时jdk冲突解决办法
- 通过mk文件编译android4.0.3系统app源码后覆盖安装失败解决办法(android odex文件)
- 解决切换jdk编译android源码错误
- 使用Openjdk7编译android源码出现"Could not initialize NSS"错误的解决办法
- 因svn编译Android源码出错的解决办法
- Android 4.1源码编译找不到资源文件解决办法
- Android 4.1源码编译找不到资源文件解决办法
- Ubuntu(64位)编译Android源码常见错误解决办法
- 新版Android源码用mmm编译 apk 优化,导致Failure [INSTALL_FAILED_DEXOPT]问题的解决办法
- ubuntu 11.10(32位系统)下编译android源码 make错误解决办法
- Android 4.1源码编译找不到资源文件解决办法
- Android源码编译:出现zip error: Invalid command arguments解决办法
- Android 4.1源码编译找不到资源文件解决办法
- 通过mk文件编译android4.0.3系统app源码后覆盖安装失败解决办法(android odex文件)
- 使用新版Eclips编写的APK(V 7包)放入Android源码中mmm编译,报错的两种解决办法
- 【Android源码编译】在公司内网环境下使用repo获取android源码失败解决办法
- Android源码编译gcc版本过高解决办法
- Android 4.1源码编译找不到资源文件解决办法
- android源码编译常见错误及解决办法1
- 解决jdk1.6已经安装,编译android源码报错问题