2011年12月27日火曜日

謎のエラーで実行できない(2)


またしても、プロジェクトをビルドしても実行できなくなった。
ちょいとManifest.xmlをいじっていたり、使ってないプロジェクトを閉じたり
していただけなんだけど・・以下のエラーが出る。

> Error generating final archive: Debug certificate expired on ...

解決手順:

1.プロジェクト→クリーンを行う

↓それでも治らない

2.デバッグのキーストアとかゆう情報の期限切れらしい
JDKに付属する keytool というもので、キーストアを再度生成して置き換える
ことで問題は解決した。

●手順 A.キーストアの場所を確認
 →eclipseの「ウィンドウ」「設定」「Android」「ビルド」「Default debug keystore」から
パスを確認

自宅環境では以下の場所だった。
> C:\Documents and Settings\PCのユーザー名\.android\debug.keystore

●手順 B. keytool.exeを用いて、以下のコマンドでキーストアを生成する
keytoolがない場合はJDKをインストールする。
keytoolのパスが通っていない場合は、環境変数にパスを通して置く
自宅環境では以下の場所だった。
> C:\Program Files\Java\jdk1.6.0_23\bin

コマンドプロンプトで以下を実行

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

パスワードを要求されるので android と入力する

●手順 C.ファイルの置き換え
C:\Documents and Settings\PCのユーザ名\.android

に debug.keystore というファイルが出来ていたので
それを、Aのファイルに置き換える。

●手順 D.
実機を繋いでいる場合は、一度apkをアンインストールしてから
もう一度、プロジェクトをCleanして実行する


参考サイト
http://magpad.jugem.jp/?eid=151
http://magpad.jugem.jp/?eid=77

2011年12月19日月曜日

ステータスバーに進捗を表示する


1.OnCreate()と、SetContentView()の間にプログレスバーの許可を書く

// プログレスバー許可
requestWindowFeature(Window.FEATURE_PROGRESS);


2. SetContentView()後に、まずはプログレスバーをOFFにしておく

// プログレスバー表示の設定
setProgressBarVisibility(false);

3.以下のメソッドで、プログレスバーを操作

引数は、 0 - 10000 の範囲で進捗を通知する。
10000になるとプログレスバーが消える

setProgress();

以上!

2011年12月18日日曜日

オプションメニューの作り方


使い方は、Activityのメソッドをオーバーライドする方式なので簡単。

○説明
menu.addメソッドでメニューを追加する。
・2番目の引数のMENU_ID01にメニューIDを指定する。Menu.FIRSTから順番に指定していけばOK
・4番目の引数に、メニュー名を指定する 
 
@Override
// オプションメニュー生成時のイベント
public boolean onCreateOptionsMenu(Menu menu)
{
 // オプションメニューを生成、追加する
 MenuItem item = menu.add(Menu.NONE, MENU_ID01, Menu.NONE, "SampleMenu");
 // アイコンを設定する
 // android.R.drawable内にシステムデフォルトのアイコンが多数用意されている
 item.setIcon(android.R.drawable.ic_menu_preferences);
 // キーボードショートカット
 item.setAlphabeticShortcut('e');
 return super.onCreateOptionsMenu(menu);
}

@Override
// オプションアイテムクリック時のイベント
public boolean onOptionsItemSelected(MenuItem item)
{
 switch (item.getItemId())
    {
    case MENU_ID01:
     // メニューが選択されたときの処理
     break;
    default:
        break;
    }
    return super.onOptionsItemSelected(item);
}

@Override
// オプションメニューが閉じられたときのイベント
public void onOptionsMenuClosed(Menu menu)
{
}

2011年12月5日月曜日

実行時にeclipseのコンソールに謎のエラー


ファイルダイアログを作りたかったが
難しそうだったので、フリーの外部ソースをパクって来て
埋め込んだら、突然、以下のエラーが出て起動すらしなくなった。

ERROR: Unknown option '--no-crunch' ~

最初は、コードのバグを疑ったがようやらそうではなかった。
ググッてみたところ、SDK Managerのアップデートしたら解決した。
eclipseのアップデートからだけではダメなようで
SDK Managerを起動して、そこからキチンとupdateしましょう。

いままでのソケット通信をするアプリは、このバージョンで問題なく動いてたのだけど
何からの処理に依存して、上記のエラーが発生するのだろうか・・。