2011年11月12日土曜日

[Android] OSをバージョンアップするとアプリが動かなくなる理由

The reason for being unable to run applications on recent OS

古いOSで動いていたアプリケーションが新しいOSで動かなくなる理由を調べてみました。
最近になってAndroidリファレンスを見たら、過去によく使われたメソッドや定数がdeprecated(非推奨)にされていました。

たとえばServiceクラスのonStartは現在deprecatedにされ、API Level 5(Android2.0)以降に実装されたonStartCommandが追加されています。

1.6以前
2.0以降
onStart
動作する
非推奨
onStartCommand
実装されてない
動作する
Android1.6にも対応させるにはonStartを使いたいところです。
ところがAndroid2.2ではonStartメソッドが呼ばれないことがあるのです。
この挙動の違いが古いOSで動いていたアプリケーションが新しいOSで動かなくなる理由の一つです。

Serviceクラスの他、Intent・Context・Activity・SQLiteDatabase・MotionEventのように頻繁に使うクラスもdeprecatedが散見されます。
deprecatedのメソッドや定数を使ったアプリはOSのバージョンごとに動作が異なる可能性があります。
市販の書籍を参考にしている開発者は要注意です。書籍で紹介されている方法がdeprecatedの可能性があります。

VisualBasic5.0で作られたフリーウェアがWindows7で動いてる姿を見るとOSは互換性を維持することが当たり前に思えるのですが、Androidは違います。
度の端末でも動作するアプリケーションを作るには、アプリをメンテナンスし続ける必要がありそうです。

次回は1.6と2.xに両対応のアプリケーションのサンプルを公開する予定です。→公開しました

以上、参考になれば幸いです。

2011年11月4日金曜日

[Application] お天気ロイド v1.08公開

Androidアプリケーション お天気ロイド v1.08 を公開しました。
お天気ロイドは最新のWeather Hacks(気象データ配信サービス)をホーム画面に表示してくれるアプリケーションです。

v1.08での変更点
・Android2.xでの安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約を必ずお読みください。
https://market.android.com/details?id=com.arimasu.mtk.AndroidApp.OtenkiWidget Android Market

操作方法
Android Walker様にて動画付きの操作方法が公開されました。

2011年11月3日木曜日

[Application] Wi-Fi sync Screen v1.02公開

Androidアプリケーション Wi-Fi sync Screen v1.02 を公開しました。
"Wi-Fi sync Screen"はWi-Fiスリープを解除した端末のバッテリーを長持ちさせるアプリケーションです。
Android端末をWi-Fi接続すると再起動してしまうAirStationなどをお使いの方におすすめです。
詳細はこちら

v1.02での変更点
・Android2.xでの安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約(EULA)を必ずお読みください。
https://market.android.com/details?id=jp.fujiu.AndroidApp.WifiSyncScreen Android Market

◆トラブルシューティング◆
Wi-Fi Sync Screenを設定してもAirstationが再起動する(Wi-Fiルーターが誤動作する)場合は、Android端末のWi-Fiのスリープを解除してください。

2011年10月29日土曜日

[Android] Android2..1から2.2へバージョンアップした後の障害

About Android2.2 difficulties

1.Wi-Fi sync Screen、お天気ロイド
Wi-Fi sync Screenとお天気ロイドがAndroid2.2にバージョンアップしたLYNX3D(SH-03C)で稀に仕様通りの動作をしないことを確認しました。
現在、不具合を修正したバージョンを開発中です。
一定の品質が確保でき次第公開いたします。
もし、お困りの方がいらっしゃいましたら恐れ入りますがもうしばらくお待ち頂くようお願い申し上げます。
この不具合が端末を破壊することはありません。

2.SQLiteを使うアプリケーション
Android2.1の頃から「電卓少女」というアプリをインストールしていたのですが2.2にバージョンアップしたら起動しなりました。
LogCatを見るとAndroidRuntimeが出てます。 SQLiteに関するエラーが出てます。こんな時は
[設定]-[アプリケーション]-[アプリケーションの管理]を開いて[キャッシュを削除]をタップします。
これで直るはず・・・と思ったら直りませんでした。
アンインストールして再度マーケットからインストールしたら起動できるようになりました。
SQLiteを使うすべてのアプリケーションで起きるわけではないようです。

以上、参考になれば幸いです。

2011年10月22日土曜日

[Android] 端末をPCにつないでも認識されない

How to solve the problem that fails to negotiate USB connection

LYNX3D(SH-03C)をAndroid2.2にしたらPCにUSB接続しても認識されなくなりました。
結論
[設定]-[USB設定]-[USB接続モード]の画面を適当にいじったら突然認識されました。
この画面では「カードリーダーモード」が選択されているのですが、「高速転送モード」や「MTPモード」を何度か選択したら直りました。
その後も不安定な状態が続いたので端末を再起動したら安定しました。
SH-03C用USBドライバーの再インストールもしたのですが効果ありませんでした。

以上、参考になれば幸いです。

関連ブログ
[Android] データ通信をオンにしても3Gにつながらない
[Android] パケット代の節約術
[Android] バッテリー節約術

2011年10月15日土曜日

[Android] LYNX3D (SH-03C) をAndroid2.2にバージョンアップ

How to upgrade LYNX3D
今更ですが、Android2.1のLYNX3DをAndroid2.2(ビルド番号02.01.00)にバージョンアップしました。
詳細はこちら→LYNX 3D SH-03Cのバージョンアップ情報

手順を簡単に説明します。
  1. LYNX3DをWindows PCにUSBケーブルで接続する。
  2. USBドライバをダウンロードし、Windows PCにインストールする。
  3. メジャーアップデートツールをダウンロードし、Windows PCにインストールしたら起動する。
  4. メジャーアップデートツールの指示通りにLYNX3Dの画面を開く [設定]-[端末情報]-[メジャーアップデート]-[アップデートの確認]、[アップデートの実行]
最後の[アップデートの実行]はメーカーの発表で60分以上とされています。Mtkの環境で40分くらいでした。

バージョンアップ後は端末がオールリセットされた状態になります。たとえばこんな設定がリセットされます。(この他にもあります)
  • 3G回線を使う設定に戻された。
  • Wi-Fiを使わない設定に戻された。(これは酷い)
  • Wi-Fiアクセスポイントの設定が消えた。(これも酷い)
  • Wi-Fiスリープ設定が購入時の状態に戻された。
    これが一番酷い!この仕様がまるでWi-Fi sync Screenの問題のようにコメントされました
  • 壁紙の設定が購入時の状態に戻された。
  • GPSの設定がオフに戻された。
  • 開発用設定の「USBデバッグ」「スリープモードにしない」「疑似ロケーションを許可」もオフに戻された。
アプリ個別の設定は影響ないのですが、端末の設定と連動しているアプリは挙動が変わるかもしれません。

バージョンアップ後はタップやフリックの反応が向上して操作しやすいし、ライブ壁紙はかっこいいし、YouTube3Dはおもしろいです。

自動で追加されたライブ壁紙

そして、Android2.1のLYNX3DはOpenGLを使うとアプリケーション終了後もバッテリーが減り続ける奇病があったのですが、バージョンアップで治りました。
時間をかけてバージョンアップした甲斐がありました。
こう言うサービスを受けると本当に買ってよかったと思います。

以上、参考になれば幸いです。

2011年10月8日土曜日

[Android] マーケットの「インストール中」の状態が続く

how to solve a problem that Market keeps installing

一部の端末で、Android Marketでインストールしたアプリケーションが「インストール中」のままになり、他のアプリケーションをインストールできなくなることがあります。

設定→アプリケーション→アプリケーションの管理→マーケット(Androidマーケットのアイコン)
から
キャッシュを消去 と アップデートのアンインストール
を実行すると改善することがあります。

「アプリケーションの管理」に「マーケット」が表示されない場合は
「設定」→「アプリケーション」→「アプリケーションの管理」
を開いて
メニューボタン(XPERIAなら画面左下の田ボタン)を押して
「フィルタ」→「すべて」
で表示されます。

この不具合は、2010年11月頃にマーケットがバージョンアップされてからよく聞くようになりました。
もし同様の症状が出たらお試しください。

以上、参考になれば幸いです。