Some 20 years after someone thought it was a nice idea to allow spaces in path names on Windows, it still is a bad idea to rely that just “works” for everything.
Today I tried to see if it still applied what I mentioned 2 years ago during the German BASTA! Fall conference in the Rheingoldhalle when talking about cross platform .NET development using MonoDroid/MonoTouch/Visual Studio:
Android SDK
– http://developer.android.com/sdk/index.html
– Windows:
- http://dl.google.com/android/installer_r13-windows.exe
- http://dl.google.com/android/android-sdk_r13-windows.zip
Do not install in a directory with spaces (not C:\Program Files, but C:\android-sdk)
And it does still apply: though not mentioned in the Android SDK/ADT documentation, most of the batch files in the Android SDK ADT bundle are not compatible being stored in a path that has spaces.
Unquoted referrals to paths like this are used in most SDK batch files:
cd /d %~dp0
The only way to run these batch files is with the current directory being the directory of the batch file itself, or referring to them in their fully quoted form.
Another correct way would be to use short names, but that’s only done in find_java.bat
:
%~dps0
Summary of the batch files and how they are affected:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ …\adt-bundle-windows-x86-20130522\sdk\build-tools\android-4.2.2\dx.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\android.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\ddms.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\draw9patch.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\hierarchyviewer.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\jobb.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\lint.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\monitor.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\monkeyrunner.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\traceview.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\uiautomatorviewer.bat | |
– …\adt-bundle-windows-x86-20130522\sdk\tools\lib\find_java.bat | |
+ …\adt-bundle-windows-x86-20130522\sdk\tools\lib\post_tools_install.bat | |
* …\adt-bundle-windows-x86-20130522\sdk\tools\proguard\bin\proguard.bat | |
* …\adt-bundle-windows-x86-20130522\sdk\tools\proguard\bin\proguardgui.bat | |
* …\adt-bundle-windows-x86-20130522\sdk\tools\proguard\bin\retrace.bat | |
– …\adt-bundle-windows-x86-20130522\sdk\tools\templates\gradle\wrapper\gradlew.bat | |
– compatible with spaces in path | |
+ incompatible with spaces in path | |
* won't run at all when current directory is different from directory of batch file |
(Side note: most incompatible batch files correctly do `for %%i in (“%cd%”) do set prog_dir=%%~fsi`)
So: make sure “…” is a path not containing spaces.
–jeroen