Search code examples
androidkotlinandroid-gradle-plugin

why is the gradle syntax of my projects different from that of everyone else's?


in my kotlin android projects the gradle syntax must look like this way, and doesn't support many of the features/lines posted around in tutorials and other answers here, why?

in my projects, the dependency implementation line must look like this

    implementation("androidx.activity:activity-compose:1.8.1")

but everywhere else what i see is this, and this is not at all supported in my project

    implementation'androidx.activity:activity-compose:1.8.1'

lines and functions like below don't work at all and i have no idea how to configure the gradle to read them or make them work.

    api project(':module-name')
    maven { url 'https://jitpack.io' }

on such lines i get all kinds of syntax errors, unresolved references, unexpected tokens and so on

my project's gradle looks like this


plugins {
    id("com.android.application")
    id("org.jetbrains.kotlin.android")
}

android {
    namespace = "com.example.myapplication"
    compileSdk = 33

    defaultConfig {
        applicationId = "com.example.myapplication"
        minSdk = 24
        targetSdk = 33
        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.4.3"
    }
    packaging {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
}

dependencies {
    implementation (":RFIDAPI3Library")
    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
    implementation("androidx.activity:activity-compose:1.8.1")
    implementation(platform("androidx.compose:compose-bom:2023.03.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-graphics")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
    androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00"))
    androidTestImplementation("androidx.compose.ui:ui-test-junit4")
    debugImplementation("androidx.compose.ui:ui-tooling")
    debugImplementation("androidx.compose.ui:ui-test-manifest")
}

i don't understand what's going on and where the difference lays


Solution

  • I have encountered these problems too. Gradle scripts are written in either Groovy DSL or Kotlin DSL (domain-specific language).

    What you have in your studio is Kotlin DSL and other code are of Groovy DSL. There is no duffrence in functionality, it's just the syntax.

    You can always find the correct syntax on the official documentation here. By clicking that link you can modify your gradle accordinly.