このページ

覚書が目的の本サイトであるが、その中でも覚書的な扱いである。具体的には…
  • 思ったことを書きため、
  • ひとつのネタとして成立すると思った時点で、
  • 体裁を整えて独立した記事する、
ためのものである。

用語

ウィジェット(widget)
AndroidでのGUI部品のことらしい
DDMS
Dalvik Debug Monitorの略らしい。アプリのデバッグに活用できる。ところで、Sはどこにいった?

ネーミングルール

  • ウィジェットのID
    • ネットのサンプルは以下のように書くことが多い。ルールなどがありそうなので調査する
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ListViewSample"(←これのこと)
/>

エミュレータ関連

  • 言語設定
初めてエミュレータを起動した後は、言語設定が英語になっている。日本語表示にしたい場合は、端末メニューのsettingsからlanguageを日本語にする。提供元不明のアプリにチェックを入れておく(これは余計か)。
  • エミュレータの起動に時間がかかる
どうにかならんもんか。使っているPCが古すぎか。Eclipseのメニュー→実行→実行構成→ターゲットタブ→Disable Boot Animationのチェックボックスにチェックが気になって、チェックして実行してみると気持ち早いかもしれない(面倒で計測していない)。
  • エミュレータがすぐ落ちる
2.2でも2.3.3でもタッチパネルに該当する領域以外をクリックしたり、ウィンドウを動かすとなんのメッセージも出ずに落ちる。あまりにエミュレータの動作が重いので、自分のPCが非力なためだと思っていたが、Eclipseのメニュー→実行→実行構成→ターゲットタブ→Disable Boot Animationのチェックボックスにチェックを入れて実行したところ、落ちなくなった。詳細な理由は不明。今後の経過を見守る。
  • エミュレータ起動せず
OSバージョン2.2として作成したエミュレータをEclipseから起動しようとしてエラーメッセージが表示された。エラー内容は以下のとおり。
[2011-10-02 11:32:34 - Emulator] 警告: Data partition already in use. Changes will not persist!
[2011-10-02 11:32:34 - Emulator] ko:Snapshot storage already in use: C:\Documents and Settings\Kumikomi\.android\avd\Android22.avd/snapshots.img
検索した結果、解決策として見つかったのは以下のとおり。ただし英文のみだったため、適当に訳している。
  1. Eclipseのメニュー→実行→実行構成→ターゲットタブ→Wipe User Dataのチェックボックスにチェックを入れ、実行
  2. adb kill-serverを使ってADBサーバを停止し、再起動。adb kill-serverについてはここ
  3. それでもだめならAVDを新しく作る
AVDを新しく作るに該当するだろうということで、作ったもののまだ使ったことのない(ユーザデータがない)2.3.3のエミュレータを使ってみたところエラーが出なかった。…エラーは出なくなったものの、詳細不明で気持ち悪い
  • エミュレータ起動せず2
WipeUserDataのチェックボックスにチェックを入れたところ、OSバージョン2.3.3向けに作成したエミュレータをEclipseから起動時にエラーメッセージが表示された。エラー内容は以下のとおり。
[2012-04-18 23:18:53 - Emulator] emulator: エラー: Unable to load VM from snapshot. The snapshot has been saved for a different hardware configuration.
解決策はウィンドウ→AVD Manager→Emulator選択→編集ボタン→Snapshotの使用可能チェックボックスのチェックを外す。エラーの内容を正しく読み取ることはできないが、適当に訳すと、スナップショットは異なるハードウェアコンフィグレーション向けにセーブされた、とあるので、Snapshotのチェックを外して見ることを思いついただけ。これで発生しなくなった。ただし、例によって起動に恐ろしく時間がかかる状況となるので、いいんだか悪いんだかという感じ
  • 画面の構成変更が実行およびデバッグ時の反映されない
解決策はエミュレータ起動せず2と同じだった。つまり、スナップショットの使用可能チェックボックスのチェックを外すことである。これにより、画面の構成変更がちゃんと実行時等で反映されるようになった。ここでスナップショットに対する仮説が思い浮かんだ。スナップショットの使用可能チェックボックスにチェックを入れると、チェックを入れた際の構成がコンフィグレーション後にディスク等に保存され、以降はそのスナップショットがロードされることで構成のコンフィグレーションに要する時間を省くことが可能となっているのではないか、というものである。起動時間のうちコンフィグレーションに要する時間が圧倒的であるため、スナップショットをONすることで起動時間が短縮される。そんな感じではないのだろうか。

ログ関連

  • DDMSにしろLogCatにしろ、表示される時刻がJSTではなさそう。わかりにくいので変えられないだろうか。

GUI実装における警告(Warning)について

GUIの実装において、リソース配置を*.xmlタブの画面で行なっている場合についてのメモである。
  • エディタウィンドウの最も左側に黄色い三角形で、その中にエクスクラメーション・マークが入ったアイコンが出ることがある
  • これは警告を意味するアイコンである
    • マウスポインタを消し的部分の上に移動後しばらくすると、英語で警告の詳細な内容が出てくる。今回出てきたのは、
[I18N] Hardcoded string 何かしらの文字列, should use @string resource
で、適当に訳すと、文字列の部分がハードコーディングされている、@文字列リソースを使え、とのご指摘
    • なるほどごもっとも
    • 普段仕事で使っている開発環境は笑えるくらい貧弱でエディタなんてWindows標準のメモ帳に毛が生えた程度。こんな親切な指摘もしてくれるとはちょっと驚き
    • 指摘は他にもいろいろあるのだろう。指摘されたらメモすることにしよう
  • ハードコーディングの指摘が出た場合の対処法は、
    • グラフィカルに行うGraphical Layoutタブをクリック
    • ウィンドウ右上隅にある同じアイコンをクリック
    • Lint〜のダイアログがでてくる
    • 任意の行を選び、右隣のFixボタンを押すと、修正方法が提案される
      • 今回のケースで行けば、文字列を文字列リソースとして定義し、かつ置き換えとなる
    • この警告はAndroid開発環境のみで有効なのだろうか。Lint〜のウィンドウの隅にドロイド君の画像が出ている
    • 警告内容をクリップボードにコピーしたい場合は、マウスポインタを指摘部分に移動後しばらくすると、警告の詳細な内容が出た後、F2キーを押すか、現れた渓谷の詳細なテキストの上にマウスポインタを移動させた後しばらくすると、警告の詳細なウィンドウに枠が現れ、テキスト部分が選択できるようになる
    • 文章ではうまく表現できていない…

参考サイト

参考書

  • レシピの名前のとおり、実現する方法を具体的な事例を載せて書かれている。開発中のノウハウも載っており、役に立った。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます