Android SDK和AVD Manager无法运行

时间:2012-06-13 20:58:01

标签: android avd

我安装了Android SDK,但我无法使用它,因为AVD和SDK Manager无法运行。当我尝试打开其中任何一个时,命令提示符窗口会弹出大约半秒钟然后关闭。我已经尝试从命令提示符运行exe来查看是否有错误消息,但没有输出,它的行为相同。我研究了这个问题,发现其他计算机完全一样。我尝试了一些贴在那里的解决方案:

似乎不起作用的解决方案

  • 将JDK位置添加到PATH环境变量
  • 的开头
  • 将Android SDK位置添加到PATH环境变量
  • 以管理员身份运行应用程序
  • 从用户(.android)目录
  • 中删除C:/Users/[User Name]文件夹
  • C:驱动器的根目录中安装,而不是在Program Files
  • 中安装

操作系统信息:Windows 7家庭高级版,管理员权限


更新

我想我找到了问题的根源,但我仍然不知道如何修复它。问题似乎出现在android.bat目录中的C:\Android\android-sdk\tools文件中。它尝试调用find_java.bat但由于语法问题很小而无法调用。这是输出:


'C:\ Android \ ANDROI~1 \ tools \ lib \ find_java.exe -s'无法识别为内部或外部命令,可运行程序或批处理文件。

错误:找不到合适的Java。为了正确使用Android Developer 工具,您需要在系统上安装合适的Java JDK版本。 我们建议您安装JDK版本的JavaSE,可在此处获得:   http://www.oracle.com/technetwork/java/javase/downloads

您可以在此处找到完整的Android SDK要求:   http://developer.android.com/sdk/requirements.html


经过对android.bat的一些修改后,我能够让它调用find_java.bat,无论我做了什么,它都会产生一堆错误。我终于感到沮丧并决定在java.exe的位置进行硬编码。稍后在批处理文件中还有另一个错误。我开始认为我的安装或批处理文件出了问题。这是批处理文件(android.bat):

@echo off
rem Copyright (C) 2007 The Android Open Source Project
rem
rem Licensed under the Apache License, Version 2.0 (the "License");
rem you may not use this file except in compliance with the License.
rem You may obtain a copy of the License at
rem
rem      http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

rem Useful links:
rem Command-line reference:
rem   http://technet.microsoft.com/en-us/library/bb490890.aspx

rem don't modify the caller's environment
setlocal

rem Set up prog to be the path of this script, including following symlinks,
rem and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0

rem Grab current directory before we change it
set work_dir="%cd%"

rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0


rem Check we have a valid Java.exe in the path.
set java_exe=
call lib\find_java.bat
if not defined java_exe goto :EOF

set jar_path=lib\sdkmanager.jar;lib\swtmenubar.jar

rem Set SWT.Jar path based on current architecture (x86 or x86_64)
for /f %%a in ('%java_exe% -jar lib\archquery.jar') do set swt_path=lib\%%a

:MkTempCopy
    rem Copy android.bat and its required libs to a temp dir.
    rem This avoids locking the tool dir in case the user is trying to update it.

    set tmp_dir=%TEMP%\temp-android-tool
    xcopy %swt_path% %tmp_dir%\%swt_path% /I /E /C /G /R /Y /Q > nul
    copy /B /D /Y lib\androidprefs.jar   %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\org.eclipse.*      %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\sdk*               %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\common.jar         %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\commons-compress*  %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\swtmenubar.jar     %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\commons-logging*   %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\commons-codec*     %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\httpclient*        %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\httpcore*          %tmp_dir%\lib\        > nul
    copy /B /D /Y lib\httpmime*          %tmp_dir%\lib\        > nul

    rem jar_path and swt_path are relative to PWD so we don't need to adjust them, just change dirs.
    set tools_dir=%cd%
    cd /d %tmp_dir%

:EndTempCopy

rem The global ANDROID_SWT always override the SWT.Jar path
if defined ANDROID_SWT set swt_path=%ANDROID_SWT%

if exist %swt_path% goto SetPath
    echo ERROR: SWT folder '%swt_path%' does not exist.
    echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
    goto :EOF

:SetPath
rem Finally exec the java program and end here.
REM set REMOTE_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
call %java_exe% %REMOTE_DEBUG% -Dcom.android.sdkmanager.toolsdir="%tools_dir%" -Dcom.android.sdkmanager.workdir=%work_dir% -classpath "%jar_path%;%swt_path%\swt.jar" com.android.sdkmanager.Main %*

rem EOF

更新(再次)

我在运行于virtualbox的WinXP上安装了Android SDK,它运行良好。我仍然宁愿能够在Win7上使用它。

13 个答案:

答案 0 :(得分:8)

这就是我在Windows 8上使用它的方法

  1. 添加JAVA_HOME环境变量并将其设置为java 安装位置(即C:\Program Files (x86)\Java\jdk1.6.0_39\bin

  2. 接下来编辑C:\ Users {YOUR USERNAME} \ AppData \ Local \ Android \ android-sdk \ tools \ android.bat查找 set java_exe= call lib\find_java.bat行并将其更改为 set java_exe=java.exe

  3. 保存文件,它应该运行

  4. 注意如果您收到有关swt位置的错误,只需对路径进行硬编码即可。将其设置为lib \ x86或lib \ x86_64

    希望这有帮助

答案 1 :(得分:5)

我安装了一个新的JD64版本的JDK并修复了我的问题

答案 2 :(得分:3)

我遇到了这个问题,全新安装了64位win 7 pro,使用了全新的64位JDK。

Kenton Price在这篇文章中的解决方案解决了我的问题,现在一切都很完美。

Android SDK installation doesn't find JDK

由于某些原因,我系统上的(最初是linux开发的)ADK需要使用linux样式正斜杠定义的JAVA_HOME而不是windows样式反斜杠。

答案 3 :(得分:2)

我发现Rajesh在上面的评论中发现了同样的问题。 此行括号中的命令未执行

for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

编辑:有些人可能有这条线: for / f" delims =" %% a in('"%~dps0find_java%arch_ext%.exe" -s')设置java_exe = %% a

此行来自sdk的find_java.bat目录中的tools\lib\

我有一个Win 7 x64系统,我不打算重新加载整个操作系统,所以我硬编码了MZB在上面的帖子中建议的内容:

这一行之后:

for /f "delims=" %%a in ('"%java_exe%" -jar lib\archquery.jar') do set swt_path=lib\%%a

编辑:或这一行:

for / f" delims =" %% a in('"%~dps0find_java%arch_ext%.exe" -s')设置java_exe = %% a

我添加了这一行:

set java_exe=%JAVA_HOME%\bin\java.exe

这假设您将JAVA_HOME环境变量设置为Java JDK文件夹(不包含\bin

如果您的JAVA_HOME变量包含\bin,请按以下方式设置:

set java_exe=%JAVA_HOME%\java.exe

如果您没有设置JAVA_HOME环境,那么您需要使用MZB在其帖子中执行的机器上的实际路径对其进行硬编码。

我也为javaw逻辑做过:

set javaw_exe=%JAVA_HOME%\bin\javaw.exe

我终于可以访问SDK Manager了。

2015年6月1日更新:

Ken Y-N在我提交之后更新了这篇文章:

当我创建这篇文章时,我引用了这一行:

for / f" delims =" %% a in('"%~dps0find_java%arch_ext%.exe" -s')设置java_exe = %% a

这是我当前的find_java.bat文件夹... \ sdk \ tools \ lib,我刚刚从当前版本的Android Studio Windows x64版本更新了(android-studio-bundle-141.1903250-windows.exe) 。变量%arch_ext%将包含32或64,具体取决于它们具有的系统。

但我不知道上述行如何转换为:

for / f" delims =" %% a in('"%java_exe%" -jar lib \ archquery.jar')设置swt_path = lib \ %% a

在Ken Y-N完成编辑之后

但是也许有些人在他们的find_java.bat文件中有你的版本,但我相信有些人会像我一样拥有其他人。我只是指出那些无法打开SDK Manager的问题。

另外我应该提一下JDK1.7和JDK1.8都有这个问题。我最初安装了JDK1.8但是在昨天阅读Android Studio的要求时,它说JDK1.7是必需的,所以我昨晚安装JDK1.7认为这可以解决我的问题,但是find_java.bat的问题是一样的使用任一版本的JDK。

我应该指出,当我安装Android Studio和两个版本的JDK时,我最初能够在首次打开Android Studio之前访问SDK Manager。但是,当我打开Android Studio时,它首先开始更新SDK Manager,当问题发生时可能就是因为在启动IDEA项目之后,我无法在此之后打开SDK Manager。

所以也许find_java.bat在第一次打开Android Studio之前就已经有了这条线:

for / f" delims =" %% a in('"%java_exe%" -jar lib \ archquery.jar')设置swt_path = lib \ %% a

当Adroid Studio更新SDK时,它有这条线吗?

for / f" delims =" %% a in('"%~dps0find_java%arch_ext%.exe" -s')设置java_exe = %% a

我没有时间对其进行测试 - 我已经失去了太多时间试图找出如何访问SDK。如果他们遇到同样的问题,也许其他人可以确认这一点。

答案 4 :(得分:1)

我也有同样的问题无法打开Android SDK管理器,但通过从用户(C:/ Users / [User Name])目录中删除.android文件夹,它可以工作......

由于

答案 5 :(得分:1)

我遇到了类似于lopsided98的问题,并且在这里尝试了所有解决方案,但没有结果。然后我记得我必须添加一个环境变量才能找到java才能让Android工作室首先启动,所以我只是尝试为Android_home添加一个新的系统变量并将其导向我的android文件夹{{ 1}}。就像我在设置java时所做的那样,然后启动没有任何问题。 SDK管理器现在也在运行。如果你还有问题,我希望这会有所帮助

这是我在设置java部分时发现的,只是想我也可以试试android。

在某些Windows系统上,启动程序脚本找不到Java的安装位置。如果遇到此问题,则需要设置一个指示正确位置的环境变量。

  

选择开始菜单>计算机>系统属性>先进的系统   属性。

然后打开C:\Program Files (x86)\Android并添加指向JDK文件夹的新系统变量Advanced tab > Environment Variables,例如

  

C:\ Program Files \ Java \ jdk1.7.0_21。

答案 6 :(得分:0)

不要删除.android文件夹。 Juz删除.android文件夹中的avd文件夹。它会为你的工作带来很多好处。

提前欢呼。 普拉卡什。

答案 7 :(得分:0)

我遇到了这个问题,结果就是这个问题:

D:\dev\adt-bundle-windows-x86_64-20130522\sdk>"tools\lib\find_java.exe"
C:\Windows\system32\java.exe

我模糊地回忆起很久以前在程序中找到Java并将其复制到system32目录以“解析”它的问题。

我删除了这些文件,现在:

D:\dev\adt-bundle-windows-x86_64-20130522\sdk>"tools\lib\find_java.exe"
C:\Program Files\Java\jre7\bin\java.exe

和SDK / ADK管理器现在正常运行。

答案 8 :(得分:0)

我在windows-8 64位机器上遇到了同样的问题。把问题缩小到了 特别声明 for /f "delims=" %%a in ('"%~dps0\find_java.exe" -s') do set java_exe=%%a  在find_java.bat文件中。

由于某种原因,括号中的语句没有作为命令执行。  我尝试了上面提出的所有建议的解决方案,但没有一个有效。最后发现这个特殊的声明在另一台Windows 8 64位机器上工作正常,所以我的Windows 8安装有问题。我检查了我的操作系统文件,发现其中一些文件已损坏,所以我修复了我的Windows 8安装,之后一切正常。

答案 9 :(得分:0)

如果问题出在Windows计算机上,则只需以管理员身份运行AVD Manager或SDK Manager

答案 10 :(得分:0)

\ tools \ lib \ find_java.bat可能存在问题,无法成功确定java.exe和javaw.exe可执行文件的位置。

此处的解决方法:http://www.gmansoft.com/android-sdk-manager-find-java-problem/ 为我工作。请注意,如果你"修复" android.bat中的其他批处理文件中的问题仍将被破坏。

如果上述链接断开,解决方法是将find_java.bat的结果硬连线以返回java可执行文件的实际位置。例如将其编辑为:

rem Check we have a valid Java.exe in the path. The return code will
rem be 0 if the command worked or 1 if the exec failed (program not found).
rem for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s') do set java_exe=%%a
set java_exe=c:\program files\Java\jdk1.8.0_25\bin\java.exe
if not defined java_exe goto :CheckFailed

:SearchJavaW
rem Check if we can find a javaw.exe at the same location than java.exe.
rem If that doesn't work, just fall back on the java.exe we just found.
rem for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s -w') do set javaw_exe=%%a
set javaw_exe=c:\program files\Java\jdk1.8.0_25\bin\javaw.exe
if not exist "%javaw_exe%" set javaw_exe=%java_exe%
goto :EOF

答案 11 :(得分:0)

升级我的工作环境时遇到了同样的问题。问题发生在<AndroidSDK>\tools\lib\find_java.bat(而不是指向此文件的任何人)。它搜索了64位版本的Java,而我安装了32位版本。 set arch_ext=32中简单而肮脏的find_java.bat为我解决了这个问题。

答案 12 :(得分:0)

我在Windows 8.1上面临同样的问题,它通过以管理员身份运行Android Studio来解决

相关问题