ラベル 開発環境 の投稿を表示しています。 すべての投稿を表示
ラベル 開発環境 の投稿を表示しています。 すべての投稿を表示

2012年3月28日水曜日

android.bat が起動しないので、こんな回避策を実施してみました

最近、ノートPCを新調して、android 開発環境を導入していたところ、
android.bat が起動しない現象にぶつかりました。

c:\myprog\android-sdk-windows\tools> android.bat
Failed to convert path to a short DOS path: C:\Windows\SYSTEM32\java.exe

ERROR: No suitable Java found. In order to properly use the Android Developer
Tools, you need a suitable version of Java JDK installed on your system.
We recommend that you install the JDK version of JavaSE, available here:
  http://www.oracle.com/technetwork/java/javase/downloads

You can find the complete Android SDK requirements here:
  http://developer.android.com/sdk/requirements.html


c:\myprog\android-sdk-windows\tools>

android.bat の内部で、lib\find_java.bat を呼び出しており、
その処理を見ると、同じフォルダにある find_java.exe で java_exec 環境変数がセットされていない模様。

原因はさっぱり分かりません。

lib\find_java.bat を編集し、以下の 2 行を追記したところ、とりあえず、android.bat が起動するようになりました。
(java.exe、javaw.exeが存在するフォルダ名は適宜読み替えて下さい)
set java_exe=C:\myprog\Java\jdk1.6.0_30\bin\java.exe
set javaw_exe=C:\myprog\Java\jdk1.6.0_30\bin\javaw.exe

2010年10月29日金曜日

エミュレーターで Google マップ表示 (Proxy経由の場合)

Proxy 環境化の PC にて emulator を起動し、Google Map を表示させると、
地図が表示されずに、LogCat 上に以下のエラーが記録されます。

ERROR/ActivityThread(200): Failed to find provider info for com.google.settings
ERROR/MapActivity(222): Couldn't get connection factory client

emulator に対し、Proxy 設定を行えば、解決したのですが、
ググって調べた結果、対応方法が3通りあることが分かったので、以下に整理します。

設定する値は共通です。
設定値
-http-proxy http://<proxyのFQDN又はIPアドレス>:<ポート番号>

emulator の proxy 設定方法。
  1. Default emulator options を設定。
    新規プロジェクト作成時のデフォルトとなる emulator のオプション。
    既存プロジェクトには反映されないので、既存プロジェクトに対しては 2. か 3. の方法を実施。

  2. Additional Emulator Command Line Options を設定
    各プロジェクト毎の個別設定。
    1. を実施していれば、新規プロジェクトは自動設定されます。

  3. emulator コマンドの引数で指定。

詳細は以下の通りです。

1. Default emulator options を設定。

Eclipse にて "Window" --> "Preferences" で Preferences 画面を表示させます。
"Android" --> "Launch" を選択し、以下のように "Default emulator options" に値を設定します。
これで新規プロジェクトが作成されるたびに、この設定が反映されるようになります。



2. Additional Emulator Command Line Options を設定

Eclipse にて "Run" --> "Run Configurations..." 又は "Debug Configurations..." を選択。
左側の該当のプロジェクトを選択し、右側の "Target" タブを選択。
一番下にある "Additional Emulator Command Line Options" に値を設定します。

※ 自分の環境だけも知れませんが、画面を下に広げないと見えない状態でした。



3. emulator コマンドの引数で指定。

コマンド・プロンプトにて、emulator を起動するときに、
-http-proxy http://<proxyのFQDN又はIPアドレス>:<ポート番号> を指定します。

C:\> emulator -avd <AVD名> -http-proxy http://<proxyのFQDN又はIPアドレス>:<ポート番号>

2010年10月7日木曜日

adb logcat (複数デバイスが存在する場合)

USB で実機が接続され、さらにエミュレーターが起動されている状態で、

adb logcat を実行すると、以下のエラーが繰り返し表示されます。


 -waiting for device -
 error: more than one device and emulator


これを回避するには、-s オプションにて、デバイスを指定する必要があります。

シリアル番号は adb devices で確認できます。


以下は実行例です。


 C:\> adb devices      
      … (1)
 List of devices attached
 HT97ALF0xxxx device
 emulator-5554 device


 C:\> adb -s emulator-5554 logcat  … (2)


(1) 実機1つ、エミュレータが1つ起動されている状態です

(2) エミュレーターに対して、adb logcat を実行しています。


毎回、シリアル番号を指定するのは面倒なので、バッチを作成してみました。

logcat_cmd.bat 等、適当な名前で保存して、実行するだけで使用できます。


デバイスが1つしかないときは、無条件に adb logcat を実行し、

デバイスが2つ以上あるときは、リストから選択させるようにして、

adb -s <シリアル番号> logcat を実行するようにしています。


adb logcat を状況に合わせて実行するバッチ
@echo off

REM 前提条件
REM コマンド・プロンプトが以下の2点を満たす状態で開始されること。
REM 「オプション」タブで「現在のコードページが『932』
REM 「フォント」タブで「フォント」が『MS ゴシック』

setlocal enabledelayedexpansion

set CMD=

set /A num = 0
REM xxxx device となっている行のみ表示
for /F "tokens=1-2" %%a in ('adb devices ^| findstr device ^| findstr /V "List of devices attached"') do (
  set /A num = !num! + 1
  echo !num!. %%a
)

REM デバイスなし
if %num% EQU 0 (
  echo デバイスが存在しません。
  pause
  goto :STOP
) else if %num% EQU 1 (
  REM デバイス1つ
  set CMD=adb logcat
  chcp 65001 & !CMD!
  goto :STOP
)

REM デバイス2つ以上
set /p select_num=adb logcat を実行するデバイスを選択して下さい(1-%num%)
set /A num = 0
for /F "tokens=1-2" %%a in ('adb devices ^| findstr [a-zA-Z] ^| findstr /V "^List of devices"') do (
  set /A num = !num! + 1
  if !num! EQU %select_num% (
  set CMD=adb -s %%a logcat
  chcp 65001 & !CMD!
  )
)

:STOP

endlocal

exit /b 0

2010年10月5日火曜日

adb logcat で UTF-8 を文字化けせずに見る方法

先日、開発していて気がついたのですが、

eclipse 上の Logcat では、UTF-8 が文字化けして表示されます。



う~ん、と思っていたところ、コマンド・プロンプトで、

adb logcat とコマンドを実行する方法があることも分かりましたが、

これでも文字化けしてしまいます。

出力例
 V/AllMapInfo(  214): name        = 2番札所ã�¸ã�®é�“
 V/AllMapInfo(  214): route.size  = 14
 V/AllMapInfo(  214): rootnum     = 2
 V/AllMapInfo(  214): name        = 3番札所ã�¸ã�®é�“
 V/AllMapInfo(  214): route.size  = 45
 V/AllMapInfo(  214): rootnum     = 3
 V/AllMapInfo(  214): name        = 4番札所ã�¸ã�®é�“


が! しかし! コマンドを実行する方法では、

一手間加えてあげれば、きちんと表示されることが分かりました ヾ(o・д・)ノ

ググって調べると、レジストリの TrueTypeFont を新規追加しないと
いけなさそうなんですが、自分の Vista の環境で試したところ、
やらなくても、うまくいきました。

  1. レジストリの設定

    2010/10/6 訂正。再度、試行錯誤してみた結果、これは実施しなくてもよさそうです。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont にて、名前 0. (ゼロとドット)、種類 REG_SZ、値 MS Gothic を設定。

  1. OS再起動
    2010/10/6 訂正。1. のレジストリ変更がなければ、これも実施不要です。

  2. コマンド・プロンプト起動&事前確認
    コマンド・プロンプトを起動し、タイトル・バーを右クリックからプロパティを選択し、
    フォントが MS ゴシック になっていることを確認。
    なってなければ、MS ゴシック に変更する。

    さらに、コマンド・プロンプト上で、chcp を実行し、
    現在のコード ページが 932 (Shift-JIS) であることを確認。
    932 でない場合は、chcp 932 で変更する。
  1. 文字コード UTF8 に変更し、adb logcat を実行

    chcp 65001 を実行し、コードページを UTF8 に変更。
    adb logcat を実行すれば、UTF-8 が表示されるようになります。

    実行例
     > chcp 65001
     > adb logcat
     (省略)
     V/DEBUG ( 213): Map name = お遍路
     D/dalvikvm( 213): GC freed 6302 objects / 327536 bytes in 115ms
     V/AllMapInfo( 213): mapid = 0
     V/AllMapInfo( 213): name = お遍路
     (省略)

無事、UTF-8 が表示されるようになりました。