2012/03/28

Android SDK Tools を Rev. 17 にしたら ClassNotFoundException が発生するようになった

2013/5/28 追記
ADT ver. 22 でも ClassNotFoundException が発生するようになりました。
原因は、この ver. 17 での仕様変更が(バグで)無効になったから…
暫定的なバグのようですが、しばらく直らないかもしれませんので、ご注意ください。
穀風: Eclipse ADT を Ver. 22 にしたら ClassNotFoundException が発生するようになった

1週間ほど前、Android SDK Tools の Rev. 17 がリリースされたとのことで、早速アップデートしてみました。

ところが、これまで動いていたアプリが突然動かなくなってしまったのです。
起動時にいきなり落ちるという悲しい状況。
エラーログは以下のような感じです。

Uncaught handler: thread main exiting due to uncaught exception
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.kokufu.android.apps.xxxx/com.kokufu.android.apps.xxxx.TestActivity}: java.lang.ClassNotFoundException: com.kokufu.android.apps.xxxx.TestActivity in loader dalvik.system.PathClassLoader@44e39248
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
    at android.app.ActivityThread.access$2200(ActivityThread.java:119)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:4363)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.kokufu.android.apps.xxxx.TestActivity in loader dalvik.system.PathClassLoader@44e39248
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409)
    ... 11 more

動いていたものに一切手は入れていませんので、原因は明らかに今回のアップデート。
Updated SDK Tools and ADT revision 17 | Android Developers Blog を確認してみても、それらしい記述はないような…
ん? Support Library もアップデートって書いてある。
で、よくよく見てみると、今回落ちている TestActivity は android.support.v4.app.FragmentActivity を継承していました。

2012/03/25

Xperia X10 (SO-01B) をアメリカで Wi-Fi ルータとして使用する方法のまとめ

今回、サンフランシスコに1週間滞在することになったのですが、諸処の事情でネットワークにつながっているのが必須の状態でした。
しかし、ローミングサービスを毎日使うとさすがに利用料が高すぎる…
というわけで、プリペイドSIMを自分のスマートフォンに刺して使えないものかと画策しました。

ところが、私が持っているauのスマートフォンはアメリカでプリペイドSIMを差すことができないらしいのです。
参考 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1264341902


がーーん。
しかし、幸いなことに私には以前2台持ちで契約していた Xperia X10 (SO-01B) があります。
こいつを Wi-Fi ルータにしてやれば私のauスマートフォンも海外で使えるではないですか!
(au のスマフォを使えることが必須だったわけではないのですが、妻と自分の2台使えるようにしたかったので、Wi-Fiルータ化が出来るようにしたかったのです)

というわけで、Xperia を Wi-Fi ルータとして使えるようになったので報告しておきます。
(間に紆余曲折ありましたが、その辺は別ブログにアップしておきました。)

2012/03/05

Android の HTTP クライアントは何を使うべきか?

2015/9/19 追記
Android M では Apache の DefaultHttpClient が使えなくなりました。
OS イメージにはしばらく維持され、コンパイルを通すためのオプションも提供されるようですが、今後新規に作成するアプリでは HttpURLConnection を使うのが良いでしょう。
元ネタは↓
Android's HTTP Clients | Android Developer's Blog

Android の HTTP クライアントは 3つあります。

2012/03/04

タブレット用 AVD が起動しない

@ Windows 7 Professional

Android タブレットを持っていない私、タブレットの動作確認はエミュレータでやるしかないのです。
で、WXGA800 の仮想デバイスを作成しました。

スペックは以下のような感じ。

2012/03/02

ListView は Graphical Layout で作ったまま使ってはいけない

ListView の表示時に無駄が多すぎなのではないか? というエントリを書いたところ、いならさんという方からコメントをいただきました。
【Androidアプリ】AdapterのgetView()が必要以上に呼ばれる件|べっ、別にWeb言語のことなんか好きじゃないんだからねっ!!/// という記事によると、layout_width と layout_height が両方共 fill_parent じゃないと、この現象が起こるとのこと。

まさに、ご指摘の通り!
ListView の height が以下のように wrap_content になっていました。