2014年11月29日土曜日

[Android] アプリのメソッド数を知るには

dex-method-countsというツールを使うと、APK内に含まれるメソッド数をパッケージ毎に知ることができる。

レポジトリをクローンしてきたらまずはツールのビルド。

./gradlew assemble

ビルドしたら、レポジトリのディレクトリで下記のコマンドを実行すると、指定のAPKのメソッド数をカウントしてくれる。

./dex-method-counts path/to/app.apk

アウトプットはこんな感じ

Read in 49877 method IDs.
<root>: 49877
    : 8
    android: 8768
        accessibilityservice: 6
        accounts: 4
        animation: 2
        app: 308
        bluetooth: 2
        content: 260
            pm: 24
            res: 51
            ...
        support: 6302
            annotation: 3
            v4: 6299
                accessibilityservice: 41
                app: 1371
        ...
    butterknife: 161
        internal: 89
    com: 30662
        bumptech: 2113
            glide: 2113
                ...
        google: 22969
            ...
Overall method count: 49877

ご覧のように、パッケージごとに細かくメソッド数を算出してくれる。

下記のようなエラー(いわゆる65K問題)が出てしまった時、削るライブラリの候補を考えるのに便利。

trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.

2014年11月13日木曜日

Nexus 5にAndroid 5.0(Lollipop)のFactory Imageを焼く

11/13についにAndroid 5.0のNexusu端末向けFactory Imageが公開されました。
Nexus4など一部端末は遅れるようですが、楽しみですね

前提条件

  • adbfastbootがコマンドラインから使えること
  • 端末内の必要なデータはバックアップしてあること

手順

  1. Factory Imageをダウンロード、解凍する

  2. Factory Imageを回答したディレクトリ内にターミナルで移動する

  3. bootloaderに再起動する。

    adb reboot bootloader
  4. bootloaderをアンロックします。

    fastboot oem unlock

    端末上で音量ボタンで"Yes"を選択し、電源ボタンでOKしてください。
    ※これを実行しないとFactory Imageを焼けませんが、保証がなくなるので充分注意してください。
    当方では一切責任を負いません。
    ※実行すると端末内のデータがすべて消えます。予めバックアップをとっておいてください。

  5. 予め用意されている、必要なデータをすべて焼くスクリプトを実行します。

    sh flash-all.sh

以上で手順は終わりです。 作業が終わったら端末が自動的に再起動します。

※"missing system.img"ダイアログが表示される場合

稀に"missing system.img"と出てうまくFactory Imageが焼けない事があるようです。
そんな場合は、下記の手順で進めるとうまくいくようです。

  1. image-hammerhead-lrx21o.zipを解凍する
  2. bootloaderを焼く

    fastboot flash bootloader <bootloaderファイル名>
  3. radioを焼く

    fastboot flash radio <radioファイル名>
  4. 一度bootloaderを再起動する

    fastboot reboot-bootloader
  5. 残りのファイルを焼く(image-hammerhead-lrx21o.zip内のファイル)

    fastboot flash recovery recovery.img
    fastboot flash boot boot.img
    fastboot flash system system.img
    fastboot flash cache cache.img
    fastboot flash userdata userdata.img
  6. 再起動する

    fastboot reboot

こちらからは以上です。 よいLollipopライフを!

参考:

2014年11月6日木曜日

GooglePlayストアで英語圏のレビューを見る方法(ブラウザ限定)

アドレスバーのURL末尾に下記内容を追記する。

&hl=en

hl=xxがすでにURLについている場合は置き換えてください。

hlhost languageの略です。enは英語。
このあたりに他の言語コードも書いてあるので、置き換えてみると他の言語のレビューも閲覧できます。

日本ではマイナーなアプリの評判を見るときに重宝します。

2014年9月9日火曜日

[Android] ActionBarPullToRefreshがうまく動かない時にやるべきたった一つのこと

ActionBar-PullToRefreshはAndroidでいわゆるpull-to-refreshな画面を実装するときによく使われるライブラリですが、いつの間にかDeprecatedになっていたようです。

README.mdを見ると、

PLEASE NOTE, THIS PROJECT IS NO LONGER BEING MAINTAINED

と思いっきり書いてあるのですが、すっかり見落としてました。

じゃあ代わりに何使えばいいのよ、ということで色々探してみたのですが、Commitをさかのぼってたら見つけました

dostiharise commented on 94da7fc on 5 May
Why is the project being abandoned? Is there a better version?

asfdfdfd commented on 94da7fc on 15 May
That's why: https://twitter.com/chrisbanes/status/460799199941230593

dostiharise commented on 94da7fc on 27 Jun
Ah, thanks! @asfdfdfd :+1:

で、貼り付けられてるtweetを見ると

SwipeRefreshLayoutの方がイケてるからそっち使ってね、ということらしいです。

ちゃんとREADMEに書いておいてほしいところですが、Googleの提供するSupport Libraryでまかなえるようになったのはうれしいですね。

2014年8月26日火曜日

Pebbleを一年間使ってきた私がLG G Watchを使ってみて思ったこと

2013/5/19から約1年3ヶ月ほどPebbleを使ってたけど、この度ちょっと魔が差してLG G Watchを購入した。
一週間ほど使ってみて、Pebbleとくらべて感じたことをまとめておく。

Pebbleのよい点

- 文字盤(画面)が見やすい

Pebbleはe-paper displayなので、白黒ではあるけれども、外でも画面が確認しやすい。

- 電池持ちがよい

Pebbleは毎日使っても約一週間電池が持つ。

- シェイクして通知を削除、が気持ちいい。

これはPebbleというよりもYaNCというPebbleの拡張アプリの機能だけど、腕を振ることでPebbleに来た通知を消去できる。Pebble本体を触ることなく確認した通知を消せるので、慣れると非常に楽。

- 入力方法の制限

Pebbleにはボタンが4つしかついてないので、入力デバイスとしてできることは非常に限られてしまっている。
ただ、ボタンが4つしかないからこそ使い方に迷うことは少ないし、シンプルにまとまっていると思う。

Pebbleのちょっと足りない点

- 日本語表示に対応していない。

日本語というか、アルファベット以外は表示できない。
Pebble単体で使おうとするとGmailや電話の通知はすべて内容が白い四角になってしまう。(Unicodeもサポートするよ!って公式は言ってるけどいつになるのやら…)
ただし、前に述べたYaNCというアプリを使うと日本語も表示できる。

G Watch(Android Wear)のよい点

- 日本語が標準機能で表示できる

起動してすぐ、特に複雑な設定もなく日本語を使えるのはありがたい。

- フルカラーで見た目キレイ。

キレイ。日光の下でもちゃんと見れるとなおよかった。

- Google Now/Androidとの連携

やはりGoogle謹製なだけあってGoogle Nowのカードがそのまま見れたりするのはとても便利。

- 入力方法が多彩。

タッチパネルなのでまあ、スマートフォンと同じような操作ができる。サードパーティ製のAndroid Wear用キーボードアプリもあるし。使いやすいかどうかは別として。
あと、時計に話しかけてメモ作成とかメッセージ送信とか未来を感じるよね。ナイトライダーとかスーパージェッターとか。

- 拡張性の高さ

PebbleもSDK提供されててサードパーティ製アプリたくさんあったけど、スペック的にもAndroid Wearの方が色々できそうで高まる。何つくろうかな。

G Watch(Android Wear)のちょっと足りない点

- 日光の下で文字盤(画面)が見づらい。

というか見えない。手で覆ってあげればなんとか見えるかなー、っていうレベル。
これは時計としてはかなり致命的なのでは…

- 電池が持たない

一日ちょっと使うともう電池がなくなってしまう。
一週間充電しなくても大丈夫なPebbleに慣れてしまっているとちょっと不満。
スマートフォンと一緒に充電するようにしてしまえばいいんだけれども、専用のクレードルが必要なので充電をうっかり忘れてしまうと致命的。
そうか、書いてて気づいたけど旅行に行くときはクレードル持ち歩かなきゃなのか…

- たまに時刻の更新が遅れる

バッテリーの消費対策のためなのか、待機モードの時に時刻が更新されないことがあるみたい。時刻を確認→20秒もたたないうちにもう一度確認したら2分進んでる、とか。駅に向かってる途中にこれやられると脱力するよね。

まとめ

時計+スマートフォンに来た通知の確認、という程度の用途だとまだPebbleの方に軍配が上がる。
G Watchだと日光の下で時刻の確認すら満足にできないし、稼働時間もまだまだ心許ない。
ただ、音声入力とか「子どもの頃に夢見た未来デバイス」という感じでテンションは上がる(現状テンション上がるだけなのが…うん…) 。
まあまだ人柱感の強いデバイスではあるし、今後の発展に期待、という感じでした。