diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..62f48da --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,86 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + kotlin("plugin.serialization") version "2.1.21" +} + +android { + namespace = "com.example.matule" + compileSdk = 35 + + defaultConfig { + applicationId = "com.example.matule" + minSdk = 24 + targetSdk = 35 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + 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.ui.graphics) + implementation(libs.androidx.ui.tooling.preview) + implementation(libs.androidx.material3) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) + + implementation(project(":ui-kit")) + implementation(project(":network")) + + implementation(libs.androidx.navigation.compose) + + testImplementation(libs.mockito.core) + testImplementation(libs.mockwebserver) + testImplementation(libs.kotlinx.coroutines.test) + + implementation(libs.coil.compose) + + implementation(libs.retrofit) + implementation(libs.converter.gson) + + implementation(libs.kotlinx.serialization.json) + + implementation(libs.converter.jackson) + + implementation(libs.gson) + + implementation(libs.jackson.module.kotlin) + implementation(libs.okhttp) + + implementation(libs.androidx.glance.appwidget) + implementation(libs.androidx.glance) +} \ No newline at end of file diff --git a/libs.versions (2).toml b/libs.versions (2).toml new file mode 100644 index 0000000..0c5bc00 --- /dev/null +++ b/libs.versions (2).toml @@ -0,0 +1,66 @@ +[versions] +agp = "8.9.0" +coilCompose = "3.1.0" +converterGson = "2.11.0" +converterJackson = "3.0.0" +glanceAppwidget = "1.1.1" +glance = "1.1.0" +gson = "2.13.1" +jacksonModuleKotlin = "2.19.0" +kotlin = "2.0.21" +coreKtx = "1.16.0" +junit = "4.13.2" +junitVersion = "1.2.1" +espressoCore = "3.6.1" +kotlinxCoroutinesTest = "1.5.2" +kotlinxSerializationJson = "1.8.1" +lifecycleRuntimeKtx = "2.8.7" +activityCompose = "1.10.1" +composeBom = "2024.09.00" +appcompat = "1.7.0" +material = "1.12.0" +jetbrainsKotlinJvm = "2.0.21" +mockitoCore = "3.11.2" +mockwebserver = "4.9.1" +navigationCompose = "2.9.0" +okhttp = "4.12.0" + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +androidx-glance = { module = "androidx.glance:glance", version.ref = "glance" } +androidx-glance-appwidget = { module = "androidx.glance:glance-appwidget", version.ref = "glanceAppwidget" } +androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" } +coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" } +converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "converterGson" } +converter-jackson = { module = "com.squareup.retrofit2:converter-jackson", version.ref = "converterJackson" } +gson = { module = "com.google.code.gson:gson", version.ref = "gson" } +jackson-module-kotlin = { module = "com.fasterxml.jackson.module:jackson-module-kotlin", version.ref = "jacksonModuleKotlin" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +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-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTest" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } +mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "mockwebserver" } +mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockitoCore" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "converterGson" } + +[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" } +android-library = { id = "com.android.library", version.ref = "agp" } +jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "jetbrainsKotlinJvm" } + diff --git a/libs_kotlin.docx b/libs_kotlin.docx new file mode 100644 index 0000000..2287a9a Binary files /dev/null and b/libs_kotlin.docx differ diff --git a/Санкт_Петербург_зависимости_финал.txt b/Санкт_Петербург_зависимости_финал.txt new file mode 100644 index 0000000..9f7d365 --- /dev/null +++ b/Санкт_Петербург_зависимости_финал.txt @@ -0,0 +1,124 @@ +[versions] +agp = "8.10.0" +androidPdfViewer = "3.2.0-beta.3" +kotlin = "2.1.20" +coreKtx = "1.16.0" +junit = "4.13.2" +junitVersion = "1.2.1" +espressoCore = "3.6.1" +lifecycleRuntimeKtx = "2.8.7" +activityCompose = "1.10.1" +composeBom = "2025.04.01" +appcompat = "1.7.0" +material = "1.12.0" +jetbrainsKotlinJvm = "2.1.20" + +retrofit = "2.11.0" +okhttp3 = "4.12.0" +kotlinxSerializationConverter = "1.0.0" +kotlinxSerializationJson = "1.8.0" +navigationCompose = "2.9.0" +dagger = "2.55" +hiltNavigationCompose = "1.2.0" +datastorePreferences = "1.1.6" +javaxInject = "1" +kotlinxCoroutinesTest = "1.10.2" +uiTooling = "1.8.2" +coil = "3.1.0" +materialIconsExtended = "1.7.8" + +[libraries] +androidx-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended", version.ref = "materialIconsExtended" } +coil-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil" } +coil-network-http = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coil" } + +mockwebserver = { group = "com.squareup.okhttp3", name = "mockwebserver", version.ref = "okhttp3" } +kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTest" } +javax-inject = { group = "javax.inject", name = "javax.inject", version.ref = "javaxInject" } +android-pdf-viewer = { group = "com.github.mhiew", name = "android-pdf-viewer", version.ref = "androidPdfViewer" } +androidx-datastore-preferences = { group = "androidx.datastore", name = "datastore-preferences", version.ref = "datastorePreferences" } +hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "dagger" } +hilt-android-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "dagger" } +hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigationCompose" } +navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" } +kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +retrofit2-kotlinx-serialization-converter = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "kotlinxSerializationConverter" } +logging-interceptor = { group = "com.squareup.okhttp3", name = "logging-interceptor", version.ref = "okhttp3" } +okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp3" } +retrofit2 = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } + +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +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-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } +androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } +androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } +androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +material = { group = "com.google.android.material", name = "material", version.ref = "material" } +ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "uiTooling" } + + +[plugins] +dagger-hilt-android = { id = "com.google.dagger.hilt.android", version.ref = "dagger" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +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" } +android-library = { id = "com.android.library", version.ref = "agp" } +jetbrains-kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "jetbrainsKotlinJvm" } + +plugins { + alias(libs.plugins.dagger.hilt.android) + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) + kotlin("kapt") +} + +dependencies { + debugImplementation(libs.ui.tooling) + debugImplementation(libs.androidx.ui.tooling.preview) + api(platform(libs.androidx.compose.bom)) + api(libs.androidx.activity.compose) + api(libs.androidx.ui) + api(libs.androidx.ui.graphics) + api(libs.androidx.ui.tooling.preview) + api(libs.androidx.material3) + api(libs.material) + + implementation(libs.androidx.material.icons.extended) + implementation(libs.coil.compose) + implementation(libs.coil.network.http) + implementation(libs.retrofit2.kotlinx.serialization.converter) + implementation(libs.retrofit2) + implementation(libs.okhttp) + implementation(libs.logging.interceptor) + + implementation(libs.android.pdf.viewer) + implementation(libs.androidx.datastore.preferences) + kapt(libs.hilt.android.compiler) + implementation(libs.hilt.android) + implementation(libs.hilt.navigation.compose) + + implementation(libs.navigation.compose) + implementation(libs.kotlinx.serialization.json) + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + androidTestImplementation(platform(libs.androidx.compose.bom)) + androidTestImplementation(libs.androidx.ui.test.junit4) + debugImplementation(libs.androidx.ui.tooling) + debugImplementation(libs.androidx.ui.test.manifest) +} \ No newline at end of file diff --git a/Шаронова.txt b/Шаронова.txt new file mode 100644 index 0000000..58424e1 --- /dev/null +++ b/Шаронова.txt @@ -0,0 +1,105 @@ + id("org.jetbrains.kotlin.plugin.serialization") version "2.1.0" +//App + kotlin("plugin.serialization") version "2.1.0" + + + //импорт библиотеки + implementation(project (":uiKit")) + implementation(project(":networkLib")) + + //Навигация + implementation("androidx.navigation:navigation-compose:2.8.6") + + // Kotlin + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") + + + // koin + implementation("io.insert-koin:koin-android:3.4.3") + implementation("io.insert-koin:koin-androidx-compose:3.4.3") + implementation("io.insert-koin:koin-android:3.5.0") + + //ktor + implementation("io.ktor:ktor-client-core:2.3.7") // Ядро Ktor + implementation("io.ktor:ktor-client-logging:2.3.7") // логинг + implementation("io.ktor:ktor-client-android:2.3.7") // Android-специфичный движок + implementation("io.ktor:ktor-client-content-negotiation:2.3.7") // Для JSON + implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7") // Сериализация + implementation("io.ktor:ktor-client-cio:2.3.7") //cio + + + //для виджета + implementation ("androidx.glance:glance-appwidget:1.0.0-alpha04") + implementation ("androidx.glance:glance-wear-tiles:1.0.0-alpha04") + //картинки + implementation("io.coil-kt:coil-compose:2.2.2") + + implementation ("androidx.work:work-runtime-ktx:2.7.1") + implementation ("androidx.core:core-ktx:1.6.0") + + implementation ("com.google.accompanist:accompanist-permissions:0.24.3-alpha") + + val espressoVersion = "4.2.2" + androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoVersion") + androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion") + androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion") + androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion") + androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion") + androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion") + androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion") + + testImplementation ("org.robolectric:robolectric:4.8") + + + +//UIKIT + alias(libs.plugins.kotlin.compose) + //Добавляю это, чтобы проект мог использовать Composable + implementation ("androidx.compose.ui:ui:1.8.1") + implementation ("androidx.compose.material:material:1.8.1") + implementation ("androidx.compose.ui:ui-tooling-preview:1.8.1") + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.lifecycle.runtime.ktx) + 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("io.coil-kt:coil-compose:2.2.2") + implementation("io.coil-kt:coil-svg:2.2.2") + + implementation("androidx.compose.material3:material3:1.4.0-alpha14") + + +//network + + kotlin("plugin.serialization") version "2.1.0" + + + // Ktor + implementation("io.ktor:ktor-client-core:2.3.7") // Ядро Ktor + implementation("io.ktor:ktor-client-android:2.3.7") // Android-специфичный движок + implementation("io.ktor:ktor-client-content-negotiation:2.3.7") // Для JSON + implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7") // Сериализация + implementation("io.ktor:ktor-client-logging:2.3.7") + + // Kotlin + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") + + // Lifecycle + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") + + // Dependency Injection + implementation("io.insert-koin:koin-android:3.4.3") + implementation("io.insert-koin:koin-androidx-compose:3.4.3") + + // DI + implementation("io.insert-koin:koin-android:3.5.0") + + // Тестирование + testImplementation("junit:junit:4.13.2") + testImplementation("io.mockk:mockk:1.13.8") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") \ No newline at end of file