build/core/java.mk:20: *** dalvik/dexgen: Invalid LOCAL_SDK_VERSION '4' Choices are: current . Stop.以及其类似的错误:
user@Ubuntu1004:~/omap3/ics-google-re/mydriod$ make
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=4.0.3.0.2.0.1.0
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out
===========================================
/bin/bash: line 0: cd: cts/tools/cts-native-xml-generator/src/res: No such file or directory
build/core/java.mk:20: *** dalvik/dexgen: Invalid LOCAL_SDK_VERSION '4' Choices are: current . Stop.
解决:
first try: "rm -rf prebuilt ; repo sync -l prebuilt"
If that's still not enough: "rm -rf prebuilt ; repo sync prebuilt"
If that's still not enough and you have a solid internet connection:
"rm -rf prebuilt .repo/projects/prebuilt.git ; repo sync prebuilt".
-----------------------------------------------
Invalid LOCAL_NDK_VERSION '8' Choices are,Invalid LOCAL_SDK_VERSION '8' Choices are的解决方法
这应该是更准确的解决方案!!!
Invalid LOCAL_NDK_VERSION '8' Choices are 在编译android源码的时候这个问题一直困扰我好久了。网上也查了很多无果,于是终于狠下心来想看看到底怎么回事,看了下出错的build/core/binary.mk文件,原来是因为项目中指定的NDK_VERSION与TARGET_AVAILABLE_NDK_VERSIONS不匹配造成的,那怎么TARGET_AVAILABLE_NDK_VERSIONS又是哪里来的呢?
在build/core/config.mk中可以看到
HISTORICAL_SDK_VERSIONS_ROOT := $(TOPDIR)prebuilt/sdk
HISTORICAL_NDK_VERSIONS_ROOT := $(TOPDIR)prebuilt/ndk
TARGET_AVAILABLE_SDK_VERSIONS := current $(call numerically_sort,\
$(patsubst $(HISTORICAL_SDK_VERSIONS_ROOT)/%/android.jar,%, \
$(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/*/android.jar)))
TARGET_AVAILABLE_NDK_VERSIONS := $(call numerically_sort,\
$(patsubst $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r%,%, \
$(wildcard $(HISTORICAL_NDK_VERSIONS_ROOT)/android-ndk-r*)))
在prebuilt文件夹里看了下。。。好吧,果然是少了不少东西,通过git
clonegit://android.git.kernel.org/platform/prebuilt.git
推荐用 git fetch git://android.git.kernel.org/platform/prebuilt.git可以支持断点续传。
这个恶心的问题终于算是解决了。
------------------------------------------------------------
今天在ubuntu上编译Android源码,make一开始就遇到了sdk版本的错误,查了好久。。
后来发现,原来我取的代码不全,在prebuild项目中,少了一些文件。奇怪的是我用repo sync prebuild也没用,只有先把prebuild目录删除后,再执行repo sync prebuild,才把代码取完整,编译通过。
其实用repo status就可以看到有哪些文件缺失了(行首带-D标志的代表缺失文件)。