Android
AndroidStudio

Android Studioを2.1に上げると、ActiveAndroidでエラーが出た場合の対処法

More than 3 years have passed since last update.


問題

Android Studioを2.1にあげると、com.android.tools.build:gradleも2.1.0に上げれるのですが、上げてしまうと、以下のようなエラーがでて、Android6.0で落ちるようになってしまいました。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.activeandroid.TableInfo.getIdName()' on a null object reference at com.activeandroid.Model.<init>(Model.java:55)


対策

調べてみるとActiveAndroidのissueに書いてあったが、AA_MODELScom.activeandroid.Model を継承しているクラスを指定したmeta-dataを追加すると良いとのとこ。

https://github.com/pardom/ActiveAndroid/issues/461#issuecomment-207252708

こんな感じになりました。

<meta-data

android:name="AA_MODELS"
android:value="com.my.db.ModelAxx, com.my.db.ModelBxx"/>


原因

まったく同じソースで、com.android.tools.build:gradleが2.0.0だったら問題なかったので、このバージョンアップのなにかが原因だと思うが、詳しくは調べていません。

ちなみに、 AA_MODELS とはなにかについては、 ここ に書かれてあるように、AcitveAndroidは全部のファイルの中からModelクラスを探しますが、AA_MODELSにModelクラスを明示的に指定することで処理を早くするために指定するものとのことです。