1.问题描述:

以前编译android4.4的时候没啥问题,自从安装了eclipse后就编译不过,错误信息如下:

GenerateJNIHeader    jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, options)  File "../../base/android/jni_generator/jni_generator.py", line 522, in CreateFromClass    jni_from_javap = JNIFromJavaP(stdout.split('\n'), options)  File "../../base/android/jni_generator/jni_generator.py", line 488, in __init__    signature=JniParams.ParseJavaPSignature(contents[lineno + 1]))]  File "../../base/android/jni_generator/jni_generator.py", line 147, in ParseJavaPSignature    return '"%s"' % signature_line[signature_line.index(prefix) + len(prefix):]ValueError: substring not foundmake: *** [out/target/product/smdk4x12/obj/GYP/shared_intermediates/ui/gl/jni/Surface_jni.h] Error 1make: *** Waiting for unfinished jobs....make: *** [out/target/product/smdk4x12/obj/GYP/shared_intermediates/android_webview/jni/InputStream_jni.h] Error 1Traceback (most recent call last):  File "../../base/android/jni_generator/jni_generator.py", line 1103, in     sys.exit(main(sys.argv))  File "../../base/android/jni_generator/jni_generator.py", line 1099, in main    GenerateJNIHeader(input_file, output_file, options)  File "../../base/android/jni_generator/jni_generator.py", line 1012, in GenerateJNIHeader    jni_from_javap = JNIFromJavaP.CreateFromClass(input_file, options)  File "../../base/android/jni_generator/jni_generator.py", line 522, in CreateFromClass    jni_from_javap = JNIFromJavaP(stdout.split('\n'), options)  File "../../base/android/jni_generator/jni_generator.py", line 488, in __init__    signature=JniParams.ParseJavaPSignature(contents[lineno + 1]))]  File "../../base/android/jni_generator/jni_generator.py", line 147, in ParseJavaPSignature    return '"%s"' % signature_line[signature_line.index(prefix) + len(prefix):]ValueError: substring not foundmake: *** [out/target/product/smdk4x12/obj/GYP/shared_intermediates/android_webview/jni/CancellationSignal_jni.h] Error 1

2.原因分析:

导致上述的错误应该是我在用eclipse的时候需要用jdk 7,而android4.4源码编译需要用jdk 6,所以才会出现莫名其妙的错误.

3.解决方法:

用一个命令就可以切换jdk版本,这个命令是:

sudo update-alternatives --config javap
如果只有一个jdk版本则需要添加javap

sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 300

否则就需要选择jdk版本

root@ubuntu:/home/topeet/Android/iTop4412_KK4.4_git# sudo update-alternatives --config javapThere are 2 choices for the alternative javap (providing /usr/bin/javap).  Selection    Path                                Priority   Status------------------------------------------------------------* 0            /usr/lib/jvm/jdk1.8.0_74/bin/javap   300       auto mode  1            /usr/lib/jvm/jdk1.6.0_43/bin/javap   1         manual mode  2            /usr/lib/jvm/jdk1.8.0_74/bin/javap   300       manual modePress enter to keep the current choice[*], or type selection number: 1update-alternatives: using /usr/lib/jvm/jdk1.6.0_43/bin/javap to provide /usr/bin/javap (javap) in manual mode.root@ubuntu:/home/topeet/Android/iTop4412_KK4.4_git# root@ubuntu:/home/topeet/Android/iTop4412_KK4.4_git# root@ubuntu:/home/topeet/Android/iTop4412_KK4.4_git# root@ubuntu:/home/topeet/Android/iTop4412_KK4.4_git# sudo update-alternatives --config javapThere are 2 choices for the alternative javap (providing /usr/bin/javap).  Selection    Path                                Priority   Status------------------------------------------------------------  0            /usr/lib/jvm/jdk1.8.0_74/bin/javap   300       auto mode* 1            /usr/lib/jvm/jdk1.6.0_43/bin/javap   1         manual mode  2            /usr/lib/jvm/jdk1.8.0_74/bin/javap   300       manual modePress enter to keep the current choice[*], or type selection number:

最后java -version的版本是改过来了,但是javac -version的版本没有改过来

root@maya-g450:/opt/FriendlyARM/android-4.2.2_r1# make -j4============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=4.2.2TARGET_PRODUCT=full_tiny4412TARGET_BUILD_VARIANT=engTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armTARGET_ARCH_VARIANT=armv7-a-neonHOST_ARCH=x86HOST_OS=linuxHOST_OS_EXTRA=Linux-3.16.0-77-generic-x86_64-with-Ubuntu-14.04-trustyHOST_BUILD_TYPE=releaseBUILD_ID=JDQ39OUT_DIR=out============================================Checking build tools versions...************************************************************You are attempting to build with the incorrect versionof javac. Your version is: javac 1.8.0_74.The correct version is: 1.6. Please follow the machine setup instructions at    https://source.android.com/source/download.html************************************************************

再次修改另一个文件:bashrc文件,把JAVA_HOME的目录改成java 1.6的就可以解决问题。

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43/

参考资料:http://www.linuxdiyf.com/linux/15546.html

http://blog.csdn.net/evahuangchen/article/details/48392539


更多相关文章

  1. APP签名打包时遇到的问题
  2. Cygwin 下编译Jni生成So文件时报错Could not find application p
  3. No cached version of com.android.tools.build:gradle:3.6.3 av
  4. Android(安卓)ndk“Unresolved inclusion: ”
  5. Invoke-customs are only supported starting with Android(安卓
  6. Android各版本对应的SDK和JDK版本
  7. android studio3.6.3编译Telegram android 1482 问题小记(nebula
  8. Android(安卓)7.1 源码编译
  9. 编译 Android版本的Openal方式

随机推荐

  1. Android(安卓)Studio初步使用
  2. Dialog与DialogFragment设置大小位置的区
  3. Android图片动画播放
  4. 日拱一卒(七)
  5. Android(安卓)WebView 全面干货指南
  6. Android设置通知Notification
  7. Android(安卓)Device Monitor使用
  8. Android(安卓)SDK下载安装及配置教程
  9. 【Android(安卓)界面效果13】关于全屏和
  10. Android(安卓)httpGet 使用 以及使用Hand