【问题标题】:Realm support maven or having jar of it's latest source领域支持 maven 或拥有最新源的 jar
【发布时间】:2016-10-17 19:57:38
【问题描述】:

我在这里有一些奇怪的用例,我的项目分为 2 个模块,一个是 server-project,另一个是 android-app,现在它们都共享相同的模型类。在 Eclipse 中使用 maven 构建工具的服务器项目和在 Android Studio 中使用 gradle 的 android-app。

看起来领域没有 maven 工件,也没有找到最新版本的 jar 文件。

请帮我弄清楚有点奇怪的情况。

【问题讨论】:

标签: android maven realm realm-migration


【解决方案1】:

您需要将某种 hack 放入模型中,以便在 android 和共享服务器项目之间共享。

您可以为您的服务器创建可以被 gradle 排除的虚拟领域类,并且您需要在相同的确切包中创建相同的确切类。 服务器类:

package io.realm;
import java.util.ArrayList;

public class RealmObject extends ArrayList
{

}

package io.realm;
import java.util.ArrayList;

public class RealmList<E> extends ArrayList
{

}

共享项目 gradle 应该忽略 dummy 类并且可以使用领域类:

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        classpath "io.realm:realm-gradle-plugin:2.0.2"
    }
}

repositories {
    mavenCentral()
    jcenter()
}

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

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    publishNonDefault true

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 24
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java {
                srcDirs 'src'
                //Exclude server (fake) Realm dependent files to avoid conflicts with Realm framework
                exclude '**/Ignore.java'
                exclude '**/RealmObject.java'
                exclude '**/RealmList.java'
                exclude '**/PrimaryKey.java'
            }
            res.srcDirs = ['res']
            aidl.srcDirs = ['aidl']
        }
    }

    lintOptions {
        abortOnError false
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }
}

注意:服务器仍然不支持领域。我们只是调整以支持 android 和服务器工作。

最终模型:

import io.realm.RealmList;
import io.realm.RealmObject;

public class MyModel extends RealmObject

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多