ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2016年2月6日土曜日

Androidで内部ストレージの容量が足りなくなったときの調査 (特にSHL21の場合)

概要
Android 4.1で使っているAQUOS PHONE SERIE SHL21で、「内部ストレージが足りない」というような通知がでました。 Androidのコンテンツマネージャーアプリで、内部ストレージに保存された、音楽、動画などをみてもさほど大きなものは入っていませんでした。(全部SDカードに入れています。) コンテンツマネージャーのメニューの「microSDと端末容量」を開くと、「その他」が4Gbyteほど占めていました。
コンテンツマネージャーアプリで調査しきれない内部ストレージ不足を調査しました。
手順
注意: ファイルを削除するとAndroidのアプリケーションが正常に動作しなくなることがあります。自己責任で、慎重に行ってください。
  1. duコマンドを使うために、BusyBox Install (No Root)をインストール。
  2. BusyBox Installの指示に従ってBusyBox、ターミナルアプリ を入れます
  3. BusyBoxの最初のコマンド(パス設定など)をクリップボードにコピー
  4. Androidのターミナルアプリを開いて、BusyBoxの最初のコマンドをペーストしてEnter
  5. ルートディレクトリからディレクトリごとの使用量を調査。コマンドを入力するため、Bluetooth キーボードを使うと便利です。
    cd /
    busybox du -hs * 2> /dev/null
    
  6. 使用量の多いディレクトリにcdして、busybox du を実行するのを繰り返します。
例: Android 4.1 SHL21でのディスク不足の原因
/storage/sdcard0/Android/data/jp.co.sharp.android.picturemanager.media/ にlocal-image-thumbs、 hires-image-cache というディレクトリが大量にあり、合計で4Gbyteほどになっていました。ギャラリー(画像閲覧アプリ)のサムネイルを保存しているようです。全て削除しました。削除した後もギャラリーは普通に動作します。

2012年10月1日月曜日

AndroidのJUnitテストの結果をXMLとして出力 (→ Jenkinsで表示)

Android JUnit Testって、Eclipseで実行すると進捗の表示も結果の表示も分かりやすいのだけれど、antやコマンドラインから実行したときは、ログからテスト失敗時のスタックトレースを探して対処せねばならず分かりにくいです。また、Jenkinsでテスト実行時にテスト結果を表示出来ないのはもったいないです。

そんなわけで探してみたところ、Android JUnit results in Hudson にいいコードがのっていました。podplayerのテストであるpodtestで使っています。この方法ではテスト実行時に使用するInstrumentationTestRunner を置き換えなければならないのでちょっと注意が必要です。

  1. テストプロジェクトのAndroidManifest.xml のinstrumatation要素のandroid:nameを com.neenbedankt.android.test.InstrumentationTestRunnerに置き換える
  2. antから実行する場合、ant.propertiesに test.runner=com.neenbedankt.android.test.InstrumentationTestRunner という一行を加える。
  3. Eclipseから実行する場合、以前使っていたAndroid JUnit TestのRunの設定を削除する必要がある? (Projectの設定から Run/Debug setting)
JUnitを実行すると、結果のファイルが実施したターゲット(エミュレータ/実機)のテストプロジェクトのディレクトリ (podtestだと /data/data/com.mamewo.podtest0.tests/files/ ) に保存されるので、 adb pullして、JenkinsにJUnitの結果のファイルとして設定するとテスト結果が表示されます。

2012年7月25日水曜日

Android: 複数の値を持つ設定をお手軽に作る

「複数のWebサイトから好きなのを選ぶ」といった設定画面を作るのに、Webサイトごとに対応するPreferenceをつくってもいいのですが、設定画面のXMLが大きくなり、項目ごとに設定のキーを設定するため設定を取り扱うJavaのコードが煩雑になってしまいます。
ここ で紹介されている設定画面を使うと、簡単に複数の値を持つ設定を作れます。

  • 選択された値がセパレータで連結された文字列として返る
  • 設定のキーは1つにまとめられる
  • 設定項目の表示文字列、値文字列はリソースとしてarrays.xmlに定義できる
なかなか、便利。セパレータの定義で悩むことはありますが。。まらーむ で使用しています。
Preferenceをカスタマイズして新たな設定画面を作るサンプルとしても参考になるかも?

2012年6月14日木曜日

Robotium: 僕はロボット

なかなかのマシーンだ。(奥田民生)
というわけで、Robotiumの感想を書きます。
Robotium は、Androidのテストツールで、タッチ入力、Widget(Button, TextViewなど)の操作を行ってUIの試験を自動で行えます。まらーむでもリリース前などの試験に使用しています。試験している項目は以下のようなものです。
  • アラームのセットから起床後にとめるところまでの基本操作
    • TextViewの内容をassertで検証
    • 音やバイブレーションは人間が判定
  • 設定画面を開いてクラッシュしないことを確認
基本的な試験にしか今は使用していませんが、結構使えています。たて画面、横画面の両方テストしています。
自動試験を書くコツとしては
  • Widgetを取り出すのにSolo.getViewを使った方が良さそう
    • 例えば、XperiaでTime pickerが円柱状のオリジナルのものになっているのですが、Solo.getTimePickerでとれないことがあったような。。。。
  • 英語版のUIを試験した方が良さげ
    • メニューキーを押したときのメニューはSolo.clickOnMenuItem(String)とメニューのテキストで選択するのだけれども、濁点、半濁点が含まれるとうまく選べないことがあるような。。。
といった具合です。気力があれば詳細を調査しようと思います。すべてidで指定したいなぁ。。。
疑問なのが、PreferenceActivityの扱い方です。設定のキーか何かでPreferenceを取得したいのですが、今はindexで指定するAPIしかない模様。
あと、スクリーンキャプチャ機能が、、、、と思ったところで scirocco を発見したので、使ってみようと思っているところなのです。