2013年2月3日日曜日

Androidプログラム開発-異機種開発に関して

Nexus7(4.2.1)でプログラム開発を行ってきましたが、もう一つ持っているGalaxy S2(4.0.3)でも動かすつもりで、プロジェクトを最初に作るときにベースラインのAPIを4.0.3にしてありました。
更にチャレンジとして、最初はWindows7、最後の調整はMac OSXで行いました。ちょっと文字コードが大丈夫かな?と思いましたが、SJISでプロジェクトを作成しても問題ありませんでした。(MacはEUCのはずだけど、問題でませんでした。)

ただちょっとGalaxyで困ったのが、USBケーブルを接続していて充電状態になってても、すぐに勝手にスリープしてスクリーンロックしてしまうことです。こうなると、デバッグはできないわ、MTPでのファイル転送も(Macでは)拒否されてしまいます。(不思議とWindowsではスクリーンロック状態でもファイル転送はできます。Macの方はデフォルトでMTP転送をサポートしてないので、特別のアプリを動かしていますが、そのせいか?)
一方、Nexus7は「開発者オプション」にUSBケーブルをつないで充電状態の場合、スリープしないというスイッチがあるので問題は起きません。(上から3つ目です)
Galaxy S2にも同様のものがあればよかったんですが、残念ながらありません。eclipseでAndroidアプリの開発を始めた最初はPC内のemulatorでやってたんですがこれが非常に遅い!Nexus7でデバッグしてみたら非常に快適でした。でもこれだとGalaxy S2のときのデバッグが困ります。色々、調べたんですが、USBケーブル接続時にスリープ禁止というスイッチはないようですが、かわりに思いついたのが「スクリーンロックしなければいい」ということです。これならば「セキュリティ」のところでスリープしてからスクリーンロックまでの時間(デフォルトは5秒のようです)を10分くらいにしてやれば、実用上問題ないでしょう。
あと、MacでGalaxyを使ってるとき困ったのがプログラムを動かすための設定ファイルを転送するときです。MacのMTPプログラムのせいかもしれませんが、Galaxyがすぐにスリープしてしまうせいか、いつも拒否されてしまいます。そこで最後の奥の手、昔の「USB接続モード」で転送してしまいました。Androidが4.0になってからこの方法は推奨されなくなったせいか、Nexus7にはそもそもこのモードがありません。Galaxyは昔はあったんですが、なんか設定メニューがだいぶ様変わりしてしまい、変な場所にありますが「無線とネットワーク」にスイッチがあります。
「USBユーティリティ」をタップしてやればPC接続モードにするか聞いてきます。
これで昔ながらUSB接続で安定してデータを送り込めます。

MTPはデータをPC側に吸い出すにはいいですが、送り込むのがちょっと面倒です。Macだけの問題かもしれませんが。

0 件のコメント:

コメントを投稿