【问题标题】:Realm android, RealmTransformer doesn't seem to be appliedRealm android,RealmTransformer 似乎没有应用
【发布时间】:2016-12-15 08:24:28
【问题描述】:

我是新手。

我用:

  • Android 工作室 2.2.3
  • 分级:2.14.1
  • 领域插件:“类路径”io.realm:realm-gradle-plugin:2.2.1“”

但是当我调用 Realm.init(context); 时它会抛出一个异常;在我的 Activity 的 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'
}

提前感谢您的帮助。

【问题讨论】:

    标签: java android realm


    【解决方案1】:

    Jack 不能在 Gradle 中使用 Transform API。

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

    使用 Retrolambda 代替 Jack 以获得 Java 8 功能支持。

    【讨论】:

    • 感谢您的回复,实际上这就是答案,现在一切都像魅力一样
    • 从那时起,Jack 就被弃用了,android 工具 3.x 将破坏 Retrolambda,但会提供内置的 lambda 支持,这样会很好。
    • 我正在使用 Kotlin,我不需要/使用 Jack 或 Retrolambda,但我仍然遇到同样的问题!有什么帮助吗? @EpicPandaForce
    • @leodev 那么你只是没有应用插件
    • 我发现问题是由Android Studio在切换分支后保留的脏文件引起的。同样感谢
    【解决方案2】:

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

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

    然后做:

    完成这两项更改后,只需刷新您的 gradle 依赖项即可。如果您从 v0.88 之前的版本升级,您可能还需要清理您的 gradle 项目 (./gradlew clean) 以删除任何挥之不去的先前安装。

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

    【讨论】:

      猜你喜欢
      • 2015-06-11
      • 2019-12-03
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2011-12-01
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多