Ubuntu13.10编译android源码中遇到的问题
1. jdk的版本不对
我开始安装的是最新的jdk7,但是编译时会出现jdk的版本
类似于这样的提示(由于当时忘记截图了,就从网上扣了一张图出来)。这个问题的解决方法是切换你安装的1.6的sdk,这样系统就会使用你的sun sdk
因为系统默认会用OpenJdk。
先下载一个1.6的jdk $ chmod +x jdk-6u33-linux-x64.bin $ sudo ./jdk-6u33-linux-x64.bin $ sudo mv jdk1.6.0_32 /usr/lib/jvm/ $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_33/bin/java 1 $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_33/bin/javac 1 $ sudo update-alternatives --install /usr/bin/javaws javaws /usr/lib/jvm/jdk1.6.0_33/bin/javaws 1 $ sudo update-alternatives --config java $ sudo update-alternatives --config javac $ sudo update-alternatives --config javaws
然后可以通过java -version 查看下当前的java version版本是不是1.6的。
2.
解决方法是:
进入到/usr/bin/中 cd /usr/bin 然后将jdk/bin/jar链接过来 sudo ln -s -f /usr/lib/jvm/jdk1.6.0_30/bin/jar 这样就可以了
3.
解决方法是:
gedit frameworks/base/tools/aapt/Android.mk Add '-fpermissive' to line 31: LOCAL_CFLAGS += -Wno-format-y2k -fpermissive
4.
解决方法是
Fix: vi frameworks/base/libs/utils/Android.mk Add '-fpermissive' to line 64: LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
5.
解决方法:
sudo ln -s /usr/lib/jvm/jdk1.6.0_45/bin/jar /bin/jar sudo ln -s /usr/lib/jvm/jdk1.6.0_45/bin/java /bin/java sudo ln -s /usr/lib/jvm/jdk1.6.0_45/bin/javac /bin/javac sudo ln -s /usr/lib/jvm/jdk1.6.0_45/bin/javah /bin/javah sudo ln -s /usr/lib/jvm/jdk1.6.0_45/bin/javadoc /bin/javadoc
6.
解决方法:
Fix: cd external/srec wget "https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff" patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff cd ../..
7.
解决方法:
sudo apt-get install libncurses5-dev
8.
解决方法:
add #include <sys/resource.h> to dalvik/vm/native/dalvik_system_Zygote.cpp
9.
解决方法:
Fix: vi development/tools/emulator/opengl/host/tools/emugen/main.cpp Add '#include <getopt.h>' to list of includes: #include <getopt.h>
10.
解决方法
Fix: vi development/tools/emulator/opengl/Android.mk Add '-fpermissive' to line 25: EMUGL_COMMON_CFLAGS := -DWITH_GLES2 -fpermissive
11.
解决方法:
Fix: vi development/tools/emulator/opengl/host/renderer/Android.mk Add new entry 'LOCAL_LDLIBS += -lX11' after line 6 as shown: LOCAL_SRC_FILES := main.cpp LOCAL_CFLAGS += -O0 -g LOCAL_LDLIBS += -lX11 #ifeq ($(HOST_OS),windows) #LOCAL_LDLIBS += -lws2_32
12
Error: external/llvm/include/llvm/ADT/PointerUnion.h:56:10: error: enumeral mismatch in conditional expression: ‘llvm::PointerLikeTypeTraits<llvm::PointerUnion<clang::Stmt*, const clang::Type*> >::<anonymous enum>’ vs ‘llvm::PointerLikeTypeTraits<clang::ObjCInterfaceDecl*>::<anonymous enum>’ [-Werror] cc1plus: all warnings being treated as errors make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs.o] Error 1 Fix: vi frameworks/compile/slang/Android.mk Remove '-Werror' from line 22: local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter
13.
Error: frameworks/base/libs/rs/rsFont.cpp:224:76: required from here frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<unsigned int, android::renderscript::Font::CachedGlyphInfo*>’ are not found by unqualified lookup frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libRS_intermediates/rsFont.o] Error 1 Fix: vi frameworks/base/libs/rs/Android.mk Add '-fpermissive' to line 183 LOCAL_CFLAGS += -Werror -Wall -Wno-unused-parameter -Wno-unused-variable -fpermissive
14.
解决方法:
修改源码目录下/build/core/combo/HOST_linux-x86.mk文件: 将以下语句 HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0 修改为 HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
15.
解决方法:
在external/llvm/lib/ExecutionEngine/JIT/Intercept.cpp中添加头文件 #define _LARGEFILE64_SOURCE #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h>
16.
解决方法:
Fix: vi external/oprofile/libpp/format_output.h Remove 'mutable' from 'mutable counts_t & counts;' on line 94: counts_t & counts;