ICTのことならなんでも私たちにおまかせ!

1年ほど前の投稿ですがアクセスが多かったので再投稿しました。
Android SDK Toolsと、Google APIs(x86 system Image)、Google APIs(ARM system Image)、Google Play Serviceのアップデートがあったので実行したところ
Android SDK Manager が起動しなくなったのでその対策をメモします。
エラー内容
EclipseよりAndroid SDK Managerを実行するとドスマドが一瞬出てそのまま終わる。
コマンドプロンプトからandroidコマンドを叩いても以下の通りエラーとなる。
​C:\Windows\system32>android

‘-v’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
無効なパスの指定です
ERROR: SWT folder ” does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
C:\Windows\System32>​

 

試行錯誤したこと:
①SDKの再インストール
まず最初に現在のSDKを削除しました。
その後ここから最新のSDKをダウンロードしインストールし直し。(最新はinstaller_r24-windows.exe)
結果変わらず
②PATHの見直し
JAVAに関連するパスは以下の順番で定義してます
C:\Program Files\Android\android-sdk\tools;
C:\ProgramData\Oracle\Java\javapath;
C:\Program Files\Java\jdk1.8.0_25\bin;
C:\Program Files\Java\jdk1.7.0_71\bin;
見た限り問題なしと判断。
③Batファイルの調査
まずandroid.batファイルをステップ実行。
すると 変数java_exeの 値がおかしい。
(セットされてた値:-v / -version: Only prints the Java version found.)
この変数はandroid.batからCallされるfind_java.batがセットしているためまたもやステップ実行
すると
26行目:reg Query “HKLM\Hardware\Description\System\CentralProcessor\0” |^
27行目:find /i “x86” > NUL && set arch_ext=32 || set arch_ext=64
ここでarch_extに32がセットされてることを確認
31行目:for /f “delims=” %%a in (‘”%~dps0\find_java%arch_ext%.exe” -s’) do set java_exe=%%a
ここでjava_exe変数に先ほどのおかしい値がセットされていました。
まずは次の通り変更。
31行目:for /f “delims=” %%a in (‘”%~dps0\find_java32.exe” -s’) do set java_exe=%%a
ちなみにもう一箇所同じような命令がありそこもハードコーディング
37行目:for /f “delims=” %%a in (‘”%~dps0\find_java32.exe” -s -w’) do set javaw_exe=%%a
どうもこれが原因だったらしく androidコマンドを入れたら無事にAndroid SDK Managerが起動しました。
%arch_ext%変数が32にも関わらず31行目、37行目でうまく変換されないのかはわかりませんが今日はここまでにします。
ちなみにBatファイルのデバックはVisualBat(Ver 1.0.8)を使っています。
とっても便利です​​
どーでもえぐぜさんhttp://doudemoexe.com/