fc2ブログ

[Titanium Studio]Androidエミュレータでのデバッグにハマる

Titanium Mobileの勉強を細々とやってます。
サンプルコードがうまく動かないので、Titanium Studioでデバッグしようとしたら失敗した。

結論を先に書くと、「AndroidデバイスをUSB接続中に、Androidエミュレータでのデバッグを実行すると失敗する

AndroidデバイスをUSB接続中でも、Androidエミュレータでの実行は問題なくできる。デバッグだとダメ。

需要があるかわからないが、Titanium StudioでのAndroidエミュレータデバッグ起動手順について書く。

1. デバッグ開始
project explorerのdebugボタンを押して開始。Ver1.0ではエミュレータでのデバッグしかできない。
debugボタン

2. debug perspectiveを開く
「debug perspectiveを開きますか?」と聞いてくるので、yesで開ける。聞かれなかったら、メニューバーのwindow→open perspectiveから開く。

3. アプリケーションがインストールされるまでひたすら待つ
デバッグビューのApplication installerが<terminated,exit value:0>となるまで待つ。
debugビュー
通常の起動に比べて、デバッグ時はインストールされるまで時間がかかる。
タイムアウトしたら、エミュレータを終了してやり直す。(結構な頻度でタイムアウトする)

なお、AndroidデバイスをUSB接続中の場合は、<terminated,exit value:1>となり、コンソールに
[ERROR] Exception: error: more than one device and emulator
と表示される。

4. エミュレータのロック解除
アプリケーションはインストール完了後に自動で起動される。
鍵マークをドラッグしてロック解除して、アプリケーションを表示する。
(アプリケーションがインストールされる前にロック解除してもよい)
エミュレータのロック解除

これでデバッグを開始できる。ブレークポイントの設定やステップ実行手順はeclipseと同じ。

はじめはFastdevが怪しいと思って色々と調べたのだが、Fastdevは悪くなかった。
Fastdevのコンソールに
Error killing app, result: ['App not connected']
と表示されることがあるが、これはFastdevサーバ上にアプリケーションが見つからないだけで問題ない。
スポンサーサイト



Android Compatibility Package を探し求めて

事の発端からPackageを見つけるまでを、時系列にまとめてみた。

勉強用Androidアプリにダイアログを追加する。

ダイアログ表示後backするとメモリリークして異常終了。Dialog.show()で表示したのがダメみたいだ。
きちんとShowing a Dialog | Android Developersに従って、Activity.showDialog()で表示しよう。

リファレンスを見るとActivity.showDialogはdeprecated(非推奨)。DialogFragmentを使いなさいと書いてある。
しかしDialogFragmentはAPI level 11(Android 3.0)以上でなければ使えない。

Android Compatibility Packageを使えばAPI level 4(Android 1.6)以上でもFragmentsが使える。
Android Compatibility packageで2.x系でもマルチサイズ対応
に従ってAndroid Compatibility Packageをインストールしようとする。

しかし、Android Compatibility Packageが見当たらない。記事には「Android SDK and AVD Manager」とあるが、自分の環境は「Android SDK Manager」だし何か違うのか?

Android Compatibility Packageは、2011年10月のrevision 4からAndroid Support Packageに名称変更されていた。
Android SDK Managerから普通にインストールできる。

Setting Up a Project to Use a Libraryに従ってandroid-support-v4.jarにBuild Pathを通した時点で時間切れ。
続きは明日にしよう。

[Android]インタフェースの実装で@Overrideを記述するとエラーになる

Androidアプリ開発の勉強はじめました。

サンプルプログラムをいじっているのだが、Overrideアノテーションがコンパイルエラーになった。
private OnClickListener StartListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        // 略
    }
};
「インタフェースのメソッドを実装(implements)するときは@Overrideを書いちゃダメだよ」とのこと。

ネットで調べたところ、eclipseのコンパイラーレベルを1.6以上にすれば良いらしい。
Window→PreferencesからJava→Compilerと選択してCompiler compliance levelを確認したが、1.7だ。試しに1.6にしても相変わらずエラーになる。

更に調べたところ、プロジェクトのコンパイラーレベルを変更しなければならないことがわかった。
Project→PropertiesからJava Compilerを選択してCompiler compliance levelを確認したら1.5だった。
1.7に変更したところ、Android requires compiler compliance level 5.0 or 6.0. というエラーが。
1.6に変更したら無事にコンパイルできた。
(JDK7だとリリース時にantをリビルトするとか面倒な事が必要らしい。JDK6で開発するかな)

それにしても、「Window→Preferencesからコンパイラーレベルを変えてね」という日本語情報はすぐに見つかったのだが、「Project→Propertiesから変えてね」は英語情報しか見つけられなかった。

とここまで書いてから、念のため「android override エラー」で検索したら、このエントリとほぼ同内容の日本語情報がすぐに見つかった。
でもせっかく書いたから公開する。

HP Pavilionのデバイスまわりの設定をする

ちょっとしたバイトをしてちょっとした収入を得たので、新しいノートPCを買った。(実際にお金が振り込まれるのは来月末なのだが)
買ったのは、HP Pavilion dv7
解像度が最低でも縦900px欲しくて、手が届きそうな価格ということでHPのPCになった。

デバイスまわりの設定を少しいじったので書いておく。1ヶ月以上ブログ更新してなかったし。

・Webカメラを無効化
何かの拍子に勝手に動き出したら嫌なので。
<設定方法>
コントロールパネルからデバイスマネージャーを起動し、イメージングデバイスの配下にある「HP TrueVision HD」のプロパティからデバイスを無効にする。

・タッチパッドを無効化
キー入力中にタッチパッドに触れると、カーソルが勝手に飛ぶのが嫌なので。
タッチパッド左上をダブルタップすると無効化されるのだが、OSを起動するたびに無効化しなければならない。
デバイスマネージャーでも無効化できるが、「マウスをつないでるときだけタッチパッド無効化」の方が使い勝手がいい。1度設定すれば、電源を落としても有効。
<設定方法>
コントロールパネルからマウスを起動し、デバイス設定タブで「USBマウス接続時に内蔵ポインティングデバイスを無効にする」をチェック。

・function keyを、fnキーを押さなくても実行する
デフォルトでは、例えばf10キーを押すと音量がアップする。f10キーの機能を使うには、fn+f10と入力する必要がある。
自分はfunction keyを使うことが多いので、fnキーを押さなくてもfunction keyの機能を使えるようにした。
<設定方法>
BIOS設定画面で、System Configuration の Action Keys Mode を DISABLEDにする。
電源を入れた直後のhpマークが出ているときにescキーを押すと、BIOS設定画面が出てくる。

ctrlキーとfnキーの入れ替えもしたかったが、Pavilionでは対応していなかった。しょうがないのでキー配置を変えるソフトでctrlキーとwindowsキーを入れ替えた。
でもwindowsキーの位置だとしっくり来ない。
ノートPCのFnとCtrlを入れ替える代替案
で紹介されている方法が魅力的だ。プラスチック板よりも金具の方がいいのか。今度ホームセンター行ったら物色してみよう。

デスクトップアプリも新しいのを使おうと探して、Rainmeterを使うことにした。スキンを自分用に改造したので、気が向いたら解説エントリを書くかもしれない。

jQuery Mobile を触ってみる

スマートフォン向けのサイトを作ろうと思って少し調べてみた。
jQuery Mobileを使えば手軽に作れそうだ。

入門記事はないかと探して、西畑一馬のjQuery Mobileデザイン入門をザザっと読んでみた。
「デザイン入門」なので、マークアップとCSSが中心でJavaScriptについてはあまり触れていない。
結局、リファレンスをひと通り読むことにした。

ページ遷移はjQuery Mobileがやってくれるので、リンクを貼るだけでいい。
遷移後のonloadや$(document).ready()に該当するものがわかりづらいが、data-role="page" のdivのpageinitイベントにバインドすればいいとわかった。
ただし、
$('#id').bind('pageinit', function(event){...
だとバインドされなかった。
$('#id').live('pageinit', function(event){...
だとバインドされた。意味が分からない。

とりあえず、
・メニューのリストから"ベジェ曲線を使ってみた"をタップすると、ベジェ曲線を使ってみたのCanvasが表示される。
・画面をタップするとボールが動く。もう一度タップすると止まる。
という動きをするMulti-pageを作ってみた。

作ってみたのだが、確認しようにもスマートフォンを持っていない
パソコンからスマホ用サイトの表示をチェックできるMobilizerをインストールしてみたが、CPU負荷が100%に張り付いて動かない。
スマートフォンよりも開発用PCを買うのが先だな。
結局、Safariをインストールして、開発メニューからUser-AgentをiPhoneにして一応動くことを確認した。(HTTPヘッダのUser-Agentを変えているだけなら意味が無さそう)

ページイベント周りがよくわからないから、あとで整理したい。
プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター