+ main/MainActivity.kt+ AndroidManifest.xml+ build.gradle.kts+ main/res/layout/activity_main.xml+ main/res/values/strings.xml+ gradle/libs.versions.toml

MainActivity.kt — įėjimo taškas

main/MainActivity.kt

Android projektas prasideda nuo MainActivity.kt. Tai pirmasis ekranas, kurį mato vartotojas.

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyAppTheme {
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    Greeting("Android")
                }
            }
        }
    }
}

@Composable
fun Greeting(name: String) {
    Text(text = "Sveiki, $name!")
}

Kas čia vyksta?

  • ComponentActivity — bazinė Jetpack Compose Activity klasė
  • setContent { } — čia aprašome UI su Compose funkcijomis
  • @Composable — anotacija kuri nurodo kad funkcija kuria UI
  • MyAppTheme — automatiškai sugeneruota tema su spalvomis

AndroidManifest.xml — programos aprašas

AndroidManifest.xml

AndroidManifest.xml aprašo visą programą: pavadinimą, ikoną, leidimus ir paleisties tašką.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyApp">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Svarbiausi atributai:

  • android:label — programos pavadinimas rodomas telefone
  • android:exported="true" — Activity gali būti paleista iš šoninio meniu
  • intent-filter — nurodo, kad tai yra paleisties ekranas (MAIN + LAUNCHER)

build.gradle.kts — projekto priklausomybės

build.gradle.kts

build.gradle.kts nurodo kokias bibliotekas naudoja projektas ir kaip jis sukompiluojamas.

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.kotlin.compose)
}

android {
    namespace = "com.example.myapp"
    compileSdk = 35

    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 26
        targetSdk = 35
        versionCode = 1
        versionName = "1.0"
    }

    buildFeatures { compose = true }
}

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.material3)
}

Svarbiausia:

  • compose = true — įjungia Jetpack Compose palaikymą
  • compileSdk = 35 — Android SDK versija naudojama kompiliavimui
  • minSdk = 26 — seniausia palaikoma Android versija (Android 8.0)
  • libs.* — priklausomybės iš libs.versions.toml

activity_main.xml — XML maketas

main/res/layout/activity_main.xml

Jetpack Compose projektuose activity_main.xml dažnai yra tuščias, nes UI aprašomas Kotlin kodu, ne XML.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Kodėl jis tuščias?

  • Tradiciniame Android programavime UI aprašomas XML žymomis
  • Jetpack Compose visą UI aprašo Kotlin funkcijomis su @Composable
  • setContent { } MainActivity viduje visiškai pakeičia XML maketą

strings.xml — teksto ištekliai

main/res/values/strings.xml

strings.xml saugo visus teksto išteklius, kad juos būtų galima lengvai lokalizuoti ir keisti vienoje vietoje.

<resources>
    <string name="app_name">MyApp</string>
</resources>

Kodėl naudoti strings.xml?

  • Visi tekstai vienoje vietoje — lengva redaguoti
  • Lokalizacija: sukurkite res/values-lt/strings.xml lietuviškam tekstui
  • Naudojamas per @string/app_name XML failuose arba stringResource(R.string.app_name) Compose kode

libs.versions.toml — versijų katalogas

gradle/libs.versions.toml

libs.versions.toml yra centralizuotas versijų katalogas — viena vieta kur saugomi visų bibliotekų versijų numeriai.

[versions]
agp = "8.7.3"
kotlin = "2.0.0"
coreKtx = "1.15.0"
activityCompose = "1.9.3"
composeBom = "2024.09.00"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

Privalumai:

  • Versija keičiama vienoje vietoje — atsinaujina visur automatiškai
  • [versions] — versijų numeriai
  • [libraries] — bibliotekų koordinatės su nuoroda į versiją
  • [plugins] — Gradle įskiepiai
1 / 1