I keep getting a build error in Android Studio when trying to compile my project:
Cannot resolve reference: ‘Offset’
This issue occurs in the generated code from Figma’s Relay plugin for UI components. Android Studio wants me to import androidx.compose.ui.geometry.offset but since this code gets regenerated every time I build, the import gets lost.
I already added all the required dependencies to both my libs.version.toml and build.gradle files but the error persists. I tried cleaning the project, invalidating caches, and updating to the newest versions of SDK, gradle, and kotlin but nothing works.
Here’s my configuration:
plugins {
alias(libs.plugins.android.app)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.firebase.services)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.figma.relay)
}
android {
namespace = "com.example.myapp.birdie"
compileSdk = 35
defaultConfig {
applicationId = "com.example.myapp.birdie"
minSdk = 24
targetSdk = 35
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.1"
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.firebase.auth)
implementation(libs.androidx.credentials)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
implementation(libs.compose.ui)
implementation(libs.compose.foundation)
implementation(libs.compose.material)
}
And the generated Relay code that’s causing problems:
package com.example.myapp.birdie.welcomescreen
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp
import com.google.relay.compose.RelayContainer
import com.google.relay.compose.RelayText
@Composable
fun WelcomeScreen(modifier: Modifier = Modifier) {
MainContainer(modifier = modifier) {
HeaderText(
modifier = Modifier.boxAlign(
alignment = Alignment.TopStart,
offset = DpOffset(
x = 50.0.dp,
y = 100.0.dp
)
)
)
ActionButton(
modifier = Modifier.boxAlign(
alignment = Alignment.TopCenter,
offset = DpOffset(
x = 0.0.dp,
y = 400.0.dp
)
)
)
}
}
@Composable
fun MainContainer(
modifier: Modifier = Modifier,
content: @Composable RelayContainerScope.() -> Unit
) {
RelayContainer(
content = content,
modifier = modifier.background(Color.Transparent).drawWithContent(
onDraw = {
drawRect(
brush = Brush.linearGradient(
start = Offset.Zero,
end = Offset.Infinite
)
)
drawContent()
}
).fillMaxWidth(1.0f).fillMaxHeight(1.0f)
)
}