2016-12-14 43 views
2

我是新手。Realm android,RealmTransformer似乎不适用

我用:

  • 的Android 2.2.3工作室
  • 摇篮:2.14.1
  • 境界 - 插件:“类路径 “io.realm:境界 - gradle这个-插件:2.2.1” “

但是,当我调用Realm.init(context)时,它会引发异常;在我的活动的onCreate。

登录:

12-14 16:40:51.096 3541-3541/? E/AndroidRuntime: FATAL EXCEPTION: main 
              Process: *.demo, PID: 3541 
              java.lang.ExceptionInInitializerError: RealmTransformer doesn't seem to be applied. Please update the project configuration to use the Realm Gradle plugin. See https://realm.io/news/android-installation-change/ 
               at io.realm.RealmConfiguration.<clinit>(RealmConfiguration.java:77) 
               at io.realm.RealmConfiguration$Builder.initializeBuilder(RealmConfiguration.java:414) 
               at io.realm.RealmConfiguration$Builder.<init>(RealmConfiguration.java:402) 
               at io.realm.Realm.init(Realm.java:188) 
               at *.demo.MainActivity.onCreate(MainActivity.java:21) 
               at android.app.Activity.performCreate(Activity.java:6237) 
               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
               at android.os.Handler.dispatchMessage(Handler.java:102) 
               at android.os.Looper.loop(Looper.java:148) 
               at android.app.ActivityThread.main(ActivityThread.java:5417) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

我的班级:

import io.realm.Realm; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     Realm.init(this); //crashing line 
    } 
} 

的build.gradle模块级:

apply plugin: 'com.android.application' 
apply plugin: 'realm-android' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "*.demo" 
     minSdkVersion 10 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner  "android.support.test.runner.AndroidJUnitRunner" 
     jackOptions { 
      enabled true 
     } 
     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    compileOptions { 
     targetCompatibility 1.8 
     sourceCompatibility 1.8 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
    exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.android.support:multidex:1.0.1' 

    compile 'com.github.pwittchen:reactivenetwork:0.7.0' 
    testCompile 'junit:junit:4.12' 
} 

预先感谢帮助。

回答

6

Jack不能在Gradle中使用Transform API。

因此,依赖于Transform API的Realm-Transformer不能与Jack一起使用。

使用Retrolambda而不是Jack用于Java 8功能支持。

+1

感谢您的回应,实际上这是答案,现在所有作品都像魅力 – gatosempai

+1

从那时起,杰克已被弃用,而Android工具3.x将打破Retrolambda,但将带有内置的lambda支持那会很好。 – EpicPandaForce

0

您需要将其添加到您的d build.gradle文件中。 :

repositories { 
    jcenter() 
} 
dependencies { 
    classpath "io.realm:realm-gradle-plugin:2.2.1" 
} 

然后做:

一旦这两个更改,只需刷新您的gradle这个依赖。如果您从v0.88之前的版本进行升级,则可能还需要清理您的gradle项目(./gradlew clean)以删除任何延迟的先前安装。

说明可以在Realm网站上找到here

+0

谢谢,我已经有这个设置工作。 – gatosempai