dev/Android

Android の開発メモなど

Application Install ダイアログのおかげで、証明書違いでも自動でアンインストール&インストール♪

リソースを修正して、実機で Run しようとしたら、こんなダイアログが表示されてびっくり。

f:id:jmab:20131119171143p:plain

なんのことはない、実機にはリリースビルドがインストールされていて、そこにデバッグビルドをインストールしようとしたので、証明書が違うとはじかれただけなのですが。

昔っからこんなダイアログ出てましたっけ?

Console に赤いエラーが出るだけだったような・・・。

f:id:jmab:20131119171148p:plain

Console のエラーは今もちゃんと出てますね^^)


さて問題のダイアログには、[No] と [Yes] のボタンがあるのですが。
最後の文章が「Do you want to uninstall?」だから、[Yes] ならアンインストールされちゃうのかな?

そこで「Yes」と答えてみたら、なんと、現在インストールされてるバージョンを自動的にアンインストールして、新しいバージョンをインストールしてくれちゃいましたよ!
便利!嬉しい!感激!


ということで ADT 偉い!


まぁ、それほど頻繁に発生するケースではないですけれどね、私の場合^^;

Unfortunately, license checker has stopped.

f:id:jmab:20131117142358p:plain

Android 4.4 エミュレーターでリリースビルドをテストしようと思ったら、いきなり。


Logcat はこんな感じ・・・。

11-17 00:20:09.570: E/AndroidRuntime(1764): FATAL EXCEPTION: main
11-17 00:20:09.570: E/AndroidRuntime(1764): Process: com.android.vending, PID: 1764
11-17 00:20:09.570: E/AndroidRuntime(1764): java.lang.RuntimeException: Unable to instantiate application com.android.vending.VendingApplication: java.lang.ClassNotFoundException: Didn't find class "com.android.vending.VendingApplication" on path: DexPathList[[zip file "/system/app/LicenseChecker.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]

をいをい。VendingApplication が見つからないって・・・orz


一応 issue としてもあがっているけど・・・。

Issue 61680 - android - License checker crashes on android 4.4 emulator - Android Open Source Project - Issue Tracker - Google Project Hosting

単なる入れ忘れでしょ!早く直してよぉ。

Maven のリポジトリインデックスファイルを削除する - .m2 フォルダが 300MB ってひどくない?

ディスクのお掃除をしていたら、ホームディレクトリの .m2 フォルダが 296MB!
.m2 ってなんだ???


Eclipse についてくる Maven のフォルダらしい。
でもって、Mavenリポジトリのインデックスがデフォルト自動取得される設定で、こんなサイズに。


なぜか慶応大学のサイトで対処法を発見^^;

Eclipse上のMavenに関する一時ファイルの削除方法 | 慶應義塾 日吉ITC

慶応の例は Windows なので、Mac の場合を書くと。

Eclipse を起動し、
・[Eclipse] - [環境設定] をクリック。
f:id:jmab:20131113191153p:plain
・[Preferences] の左ペインで [Maven] を選択。
・[Download repository index updates on startup]のチェックをクリア。
f:id:jmab:20131113191148p:plain
・念のため ~/.m2 をどこかへバックアップ。
・ターミナル を開き、rm -R ~/.m2/repository/ 。
慶応手順では .m2 まるごと消しているが、まるごと消すと Eclipse が起動しなくなることもあるそうなので、repository 内のみ削除がいいのではないかと。


この記事を書くのに Eclipse の設定をいじってたら、「Update index」と怪しいメッセージ・・・。

f:id:jmab:20131113191157p:plain

そうかこいつが Mavenリポジトリのアップデートだったのか!^^;

Maven リポジトリは使っていないのでこの際 Offline でもいいのかもしれない。

AVD が削除できないので、手で削除

Android Virtual Device Manager からいらなくなった AVD を削除しようとすると、

f:id:jmab:20131113183602p:plain

ううむ。


仲間発見!^^;

Lapture » AVD Androidエミュレーターが起動しないとか。

f:id:jmab:20131113183714p:plain

なるほど、少し前までマルチディスプレイの環境でエミュレータの起動に失敗するバグがありましたが。その残骸が残っているということか。
私も何度エミュレータの起動失敗で涙をのんだことか^^;


結局手で削除するのか^^;
~/.android/avd 内の *.ini と *.avd のセットを削除すればいいみたい。

baselineAligned ってこういうことだったのか!

よく見る警告
「Set android:baselineAligned=”false” on this element for better performance」
「baselineAligned を false にすると、レンダリングのパフォーマンスが良くなるよ。」
ということですが。

そもそも「baselineAligned」って何よ!

Androidアプリ開発 「android:baselineAligned」とは
f:id:jmab:20131112201127p:plain

なるほど!

高さや幅を同じにウィジェットを並べるなら baselineAligned="false" で問題ないわけですね。

デフォルト false で、やりたい人は gravity="center" しろよって思うんですが、きっとウィジェットによっては center と baseline は微妙に異なるのでしょう。