您当前位置: 首页 » 折腾 » Android SDK Manager 无法打开的问题

Android SDK Manager 无法打开的问题

2014年12月10日 | 发表评论(7) 查看评论

一年多没写新文章了,我现在正在用着 32 位的 Windows 7 系统,虽然还有着诸多的不习惯,可另外一块硬盘上装着的 Windows XP 还是用的越来越少了。

昨天看到 Android Studio 1.0 正式版发布了,那个激动啊,赶紧下载下来学习,顺便把之前为了 Cordova 编译安装的 Android SDK 也更新一下,然后就杯具了……

打开 SDK Manager 时一闪而过就退出了,完全卸载重新安装 installer_r24-windows.exe 还是没用,

尝试在命令行运行 android.bat,在命令行输出了如下内容:

D:\android-sdk\tools>android.bat
'-v' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
无效路径
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
系统找不到指定的路径。
ERROR: SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.

网上搜索了下相关问题,基本上都是修改下环境变量什么的,尝试了一下都没用。

自己找找看问题出在哪里,编辑 android.bat 注释掉第一行的 @echo off 后再次运行,发现在

call lib\find_java.bat

这个调用后出现错误,再编辑 find_java.bat 同样注释第一行的关闭回显代码,可以看到如下输出

for /F "delims=" %a in ('"D:\ANDROI~1\tools\lib\\find_java32 .exe" -s') do set java_exe=%a

仔细一看,find_java32 和 .exe 之间有一个空格,在 find_java.bat 中找到对应的代码为:

for /f "delims=" %%a in ('"%~dps0\find_java%arch_ext%.exe" -s') do set java_exe=%%a

也就是说 %arch_ext% 这个变量被设置成了 “32 “,再看看这个变量是哪来的:

find /i "x86" > NUL && set arch_ext=32 || set arch_ext=64

看到没,”32″ 和 “||” 之间有一个空格!

删除这个空格,重新打开 SDK Manager,可以打开了!

如果要保持代码留白一致的话可以用加括号的方法,即改成如下:

find /i "x86" > NUL && (set arch_ext=32) || (set arch_ext=64)

这就是一个空格引发的杯具,多年的软件开发经验告诉我,最经常犯的错误甚至是致命的错误往往都是极小的问题导致的,比如标点错误、拼写错误或者这里的多了一个空格……

分享到: 更多
分类:

折腾

| 标签:

发表评论?

7 条评论。

  1. 兄台!必须点个赞!我把这个答案发到stackOverFlow上去了,你的链接会保留:D

  2. 为什么我评论不能发表呢?

  3. 评论我还没审核呢,审核了就能看到了,我去设置成不用审核吧,自己都很少来看了~

  4. 在网上搜了一大堆都是说环境变量配错
    搞得我卸载重装了很多次JDK都没弄好
    看到你这个改了之后终于能打开SDK manager了
    泪奔 感谢

  5. 感謝,解決了我的問題。

  6. 😛
    原来大神是这样的。。。 🙂

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>