Lollopopが出て、結構時間が経った。
最近、Google Play ConsoleのExceptionログがまずいことになりつつあったので、いい加減対応することにした。
その時のメモ
前提条件
Android Studio 0.8.14
Mac OS X 10.9.5
(Mac OS X 10.10でも確認済み)
SDKのバージョンをあげる
build.gradleに記載されている、各種SDKのバージョンをあげた。
android {
compileSdkVersion 21
buildToolVersion "21.0.0"
...
}
supportライブラリなどを利用しているのであれば、そちらも。
JDKのバージョンをあげる。
LollipopからJDK7にあがった。
Yosemiteならすでにあげているから問題ないが、Yosemiteを回避している人はJDK7にあげる必要がある。
Oracleからjdk-7u72-macosx-x64.dmgをダウンロードしてぽちぽち押してインストールした。
JDKロケーションを変更する
Android StudioのFile > Project Structure > JDK Locationで変更する。
/Library/Java/Home
JDK6は/System配下にあったが、変わってた。
Objectにprivateなtransient変数が追加された
Reflectionを使って、全メンバー変数からQueryを作成するような処理が存在していたのだけど、そこで落ちた。
よーくログを見てみると、shadow$_klass_, *shadow$_monitor_
なんてのが含まれた変なQueryになってた。
原因は以下の変数がObjectクラスに追加されたこと。
private transient Class<?> shadow$_klass_;
private transient int shadow$_monitor_;
transient変数を無視することを完全に忘れてた!
こんな感じで案外すんなりいけた。
主な機能が動いたってだけで、細かいviewが動いてなかったりしてるかもしれないけど、一旦Exceptionログはこれで落ち着きました。
(結局最後のやつだけしか活躍してないけどね!)