Android 2.3 Canary 2 で試す realm-android

はじめに

今日から Advent Carender な時期ですよね〜

それはさておき、下記の情報を参考にしながら導入しようとして見たメモ

試した環境は

ところが android gradle plugin 2.3.+ では・・

  • aptプラグイン 1.8 指定が息をしていません
  • gradle plugin 2.2.+ では併用記述が可能だったのですが・・・
  • annotationProcessor のみが有効になっているようです

をみると近いうちに正式サポートされそうですが

最新版の

  • root/build.gradle
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.+'
        classpath 'io.realm:realm-gradle-plugin:2.2.0'
    }
}
  • app/build.gradle
apply plugin: 'com.android.application'
// androidの後である必要がある
apply plugin: 'realm-android'

な記述では駄目なようでした・・

で現時点ではどうすればいいか

  • plugin指定方式から classpath指定にして暫定的に凌ぐ

  • app/build.gradle

apply plugin: 'com.android.application'
// androidの後である必要がある
//apply plugin: 'realm-android' //残念ながらコメント・・・


dependencies {
  compile 'io.realm:realm-android:0.87.5'
}

なんか痛し痒しですね・・

最新版とか使うと、やはり大きく挙動が違うのかなー


使ってみた所感

  • RealmObject を extendsしたクラスに制限ありすぎ。。

    • _XXX フィールドは駄目
    • 全メンバーはprivate only
    • Getter/Setterを延々と書かないと駄目。。
    • RealmObjectを継承したクラスを更に継承しては駄目
  • Realmを利用しただけでアプリの使用メモリが増えて挙動が重くなった気がする・・*1

端末のDBの中身はやはり見づらい・・

qiita.com

の記事見て、android realm browser を組み込みました。*2

理想はdebugビルドのときのみの方がいいんですが、、、

結局使い勝手的に

  • 通常操作用DTO <=>RealmObject継承互換DTO な変換関数を作って利用する感じかな。。
  • autoincrement がたしかに無いので,下記のページの情報は助かりました。。
    • 簡単にできましたblogが多すぎて、草が生えそうな感じなんですよね。。(苦笑

最新版へのマイグレーション情報は?

realmの公式サイト見てもいまいちコードのマイグレーション情報みたいなのでてこないので

厳し目な気もしないでもない。下記あたりの情報参考にすればいい認識なんでしょうかね?

ここらへんは Realmに知見がある sakura_bird1 さん辺りにお話を聞いてみたいかもです。

*1:GCが発生しやすい?

*2:セキュリティ強化?のために adb pullができない端末が増えている気がする。。