'Build realm sync project with new Android (Java) project
I'm having trouble getting my realm dependencies right for an Android Java project.
I started a new project to try and isolate the problem.
The project is using Android Gradle Plugin Version 7.1.0 and Gradle version 7.2 and Android studio 2021.1.1
I followed the instructions for installing realm in the project. And it builds and runs when I just call
Realm.init(context);
When I try to initialize a synced realm however (buy following the getting Sync quick start guide) I can't seem to get the right imports for the App and AppConfiguration classes.
The build fails with
error: cannot find symbol
App app = new App(new AppConfiguration.Builder("XXXYYYZZZ")
In my older project I see the imports were
import io.realm.mongodb.App;
import io.realm.mongodb.AppConfiguration;
But that doesn't seem to be found by Android studio.
(The RealmTransformer part of the import io.realm.transformer.RealmTransformer line is in read, which is probably not a great sign, but I can't see any warnings in the IDE about it, and it seems to build fine)
Application level gradle file as below
I've tried various combinations of api vs implementation and kapt vs annotationProcessor. Also did "invalidate caches and restart". But nothing worked.
buildscript {
ext.kotlin_version = '1.5.21'
ext.realm_version = '10.10.0'
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath "io.realm:realm-transformer:$realm_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
plugins {
id 'com.android.application'
}
//apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
import io.realm.transformer.RealmTransformer
android.registerTransform(new RealmTransformer(project))
android {
compileSdk 31
defaultConfig {
applicationId "guru.diederik.myapplication"
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
api "io.realm:realm-annotations:$realm_version"
api "io.realm:realm-android-library:$realm_version"
api "io.realm:realm-android-kotlin-extensions:$realm_version"
kapt "io.realm:realm-annotations-processor:$realm_version"
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Solution 1:[1]
It seems that the install instructions have been updated. Applying them have now worked, and the project builds.
Project level gradle file that works.
buildscript {
ext.realm_version = '10.10.1'
dependencies {
classpath "io.realm:realm-gradle-plugin:$realm_version"
}
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.1.0' apply false
id 'com.android.library' version '7.1.0' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
And app level gradle file that works
buildscript {
ext.kotlin_version = '1.6.10'
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath "io.realm:realm-transformer:$realm_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
plugins {
id 'com.android.application'
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
android {
compileSdk 31
defaultConfig {
applicationId "guru.diederik.myapplication"
minSdk 21
targetSdk 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
realm {
syncEnabled = true
}
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Diederik |
