当构建Android源代码时,如何修复JDK未找到的错误?

3

我正在尝试按照这里提供的步骤构建Android源代码。然而,我的JDK出现了问题。当启动时:

lunch full-eng

I get the following error:

/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied
build/core/config.mk:344: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com.  Stop.    
** Don't have a product spec for: 'full'
** Do you have the right repo manifest?

我试图按照以下步骤正确安装JDK:


第一步

通过按照这些步骤卸载所有JAVA相关内容。

第二步

通过按照这些步骤安装正确的JAVA。我使用了默认的安装选项和版本6,而不是7或8。

第三步

在这里,我简单地按照这个答案进行操作。

sudo gedit .bashrc

在底部编辑文件,添加这些行
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME

# replacing /path/to/androidsdk/ with correct path of course..
export PATH=${PATH}:/path/to/androidsdk/android-sdk-linux/platform-tools

PATH=$PATH:$JAVA_HOME

# Variable ANDROID_JAVA_HOME
ANDROID_JAVA_HOME=/usr/lib/jvm/java-6-oracle
export ANDROID_JAVA_HOME

PATH=$PATH:$ANDROID_JAVA_HOME

第四步

测试我到目前为止所做的工作:

...:~$ echo $JAVA_HOME
/usr/lib/jvm/java-6-oracle
...:~$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Server VM (build 20.45-b01, mixed mode)
...:~$ which java
/usr/bin/java
...:~$ echo $ANDROID_JAVA_HOME
/usr/lib/jvm/java-6-oracle
...:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-6-oracle/bin:/usr/lib/jvm/java-6-oracle/db/bin:/usr/lib/jvm/java-6-oracle/jre/bin:/path/to/androidsdk/android-sdk-linux/platform-tools:/usr/lib/jvm/java-6-oracle

步骤 5

在终端中进入 Android 源代码文件夹并输入以下命令:

source build/envsetup.sh

结果:

including device/asus/grouper/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/lge/mako/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/samsung_slsi/arndale/vendorsetup.sh
including device/samsung/toroplus/vendorsetup.sh
including device/samsung/toro/vendorsetup.sh
including device/ti/panda/vendorsetup.sh

第六步

打开终端,进入Android源文件夹,并输入以下命令:

lunch full-eng

结果:

.../androidsource$ lunch full-eng
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc: Permission denied
/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied
build/core/config.mk:344: *** Error: could not find jdk tools.jar, please install JDK6, which you can download from java.sun.com.  Stop.

** Don't have a product spec for: 'full'
** Do you have the right repo manifest?

我做错了什么?缺少什么?"Permission denied"是什么意思?

5个回答

8

我有过同样的问题。通过更改整个Android源代码文件夹的文件权限,我解决了它:

sudo chmod 755 -R ~/Android

它对我真的很有用。但是你能解释一下这个命令的含义吗? - Chandra Sekhar

3

我找到了解决方案:

  1. 由于某些原因,我没有相应的权限,就像"Permission denied"所表示的那样。通过chmod设置Android源文件夹的权限就可以解决问题。

  2. 我错误地下载了最新的分支。然而,我只有32位系统。对于32位系统,你只能使用小于Android 2.3的Android源代码,并且对于这些版本,你还必须使用JDK 5。 http://source.android.com/source/building.html


2

1
通常,这是由于javac未配置为系统的替代方案所致。因此,您的javac没有/usr/bin/javac的链接。
请使用以下命令设置javac的替代方案:
$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0_32/bin/javac" 1

注意:我安装的javac目录为"/usr/lib/jvm/jdk1.6.0_32/",您可以根据自己的配置进行更改。


完美!!尝试了25多个解决方案后 - 这一个起作用了。 - Jamie Lindsey

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接