Я новичок в разработке для Android и пытаюсь понять, правильно ли настроена моя конфигурация Gradle, особенно в отношении совместимости между библиотеками, которые я использую. Ниже я включил соответствующие части своей установки, и мне интересно, есть ли что-нибудь проблемное или потенциально несовместимое. Мы будем очень признательны за любые отзывы. Ключевые аспекты, которые меня беспокоят:
Совместимость между зависимостями. Я использую несколько библиотек AndroidX, Compose и Kotlin. Я не уверен, существуют ли какие-либо явные несовместимости между этими версиями.
Конфигурация ProGuard: Я хочу убедитесь, что настройка ProGuard для обфускации правильна.
Совместимость Kotlin и Java: Я нацелен на JVM 21. , и я хотел бы знать, может ли это вызвать какие-либо проблемы.
Общие рекомендации: Есть ли какие-либо параметры конфигурации в моем build.gradle.kts что можно оптимизировать?
Ниже я включил свой файл settings.gradle.kts, build.gradle.kts как для модуля приложения, так и для уровня проекта, proguard-rules.pro и libs.versions.toml.
import org.gradle.api.JavaVersion
import org.gradle.jvm.toolchain.JavaLanguageVersion
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
// Top-level plugins configuration
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.compose.compiler) // Apply Compose Compiler Plugin using alias
alias(libs.plugins.dependency.analysis) // ./gradlew projectHealth
}
android {
namespace = "com.example.hlpyapp"
compileSdk = 34
defaultConfig {
applicationId = "com.example.hlpyapp"
minSdk = 28
//noinspection OldTargetApi
targetSdk = 34
multiDexEnabled = true
versionCode = 1
versionName = "1.0.1"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
ndk {
// Specify the ABIs you want to support
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", & q u o t ; x 8 6 _ 6 4 & q u o t ; ) < b r / > } < b r / > } < b r / > < b r / > n d k V e r s i o n = & q u o t ; 2 8 . 0 . 1 2 4 3 3 5 6 6 & q u o t ; < b r / > < b r / > b u i l d T y p e s { < b r / > d e b u g { < b r / > i s M i n i f y E n a b l e d = f a l s e < b r / > } < b r / > r e l e a s e { < b r / > i s M i n i f y E n a b l e d = t r u e < b r / > p r o g u a r d F i l e s ( < b r / > g e t D e f a u l t P r o g u a r d F i l e ( & q u o t ; p r o g u a r d - a n d r o i d - o p t i m i z e . t x t & q u o t ; ) , < b r / > & q u o t ; p r o g u a r d - r u l e s . p r o & q u o t ; < b r / > ) < b r / > } < b r / > } < b r / > < b r / > c o m p i l e O p t i o n s { < b r / > s o u r c e C o m p a t i b i l i t y = J a v a V e r s i o n . V E R S I O N _ 2 1 < b r / > t a r g e t C o m p a t i b i l i t y = J a v a V e r s i o n . V E R S I O N _ 2 1 < b r / > } < b r / > < b r / > k o t l i n O p t i o n s { < b r / > j v m T a r g e t = & q u o t ; 2 1 & q u o t ; < b r / > } < b r / > < b r / > b u i l d F e a t u r e s { < b r / > c o m p o s e = t r u e < b r / > } < b r / > < b r / > p a c k a g i n g { < b r / > r e s o u r c e s { < b r / > e x c l u d e s + = & q u o t ; / M E T A - I N F / { A L 2 . 0 , L G P L 2 . 1 } & q u o t ; < b r / > e x c l u d e s + = & q u o t ; M E T A - I N F / N O T I C E . m d & q u o t ; < b r / > e x c l u d e s + = "META-INF/LICENSE.md"
}
}
}
// Configure Kotlin JVM Toolchain
kotlin {
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
// Ensure all Kotlin compile tasks target JVM 21
tasks.withType().configureEach {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
}
}
// Dependencies section
dependencies {
// AndroidX core dependencies
implementation(libs.androidx.multidex)
implementation(libs.androidx.core.ktx)
//noinspection GradleDependency
implementation("androidx.core:core:1.13.1")
implementation("androidx.annotation:annotation:1.9.1")
implementation("androidx.sqlite:sqlite:2.4.0")
// Activity and Multidex dependencies
implementation("androidx.activity:activity:1.9.3")
implementation("androidx.activity:activity-compose:1.9.3")
// FlagKit library
implementation(libs.flagkit.android)
// Jetpack Compose dependencies
implementation(platform(libs.androidx.compose.bom))
implementation("androidx.compose.ui:ui:1.7.5")
implementation("androidx.compose.ui:ui-graphics:1.7.5")
implementation("androidx.compose.ui:ui-tooling:1.7.5")
implementation("androidx.compose.material3:material3:1.3.1")
implementation("androidx.compose.material:material-icons-core:1.7.5")
implementation("androidx.compose.material:material-icons-extended:1.7.5")
implementation("androidx.compose.runtime:runtime:1.7.5")
implementation("androidx.compose.runtime:runtime-livedata:1.7.5")
implementation("androidx.compose.runtime:runtime-saveable:1.7.5")
implementation("androidx.compose.foundation:foundation:1.7.5")
implementation("androidx.compose.foundation:foundation-layout:1.7.5")
implementation("androidx.compose.animation:animation:1.7.5")
implementation("androidx.compose.animation:animation-core:1.7.5")
implementation("androidx.compose.ui:ui-geometry:1.7.5")
implementation("androidx.compose.ui:ui-text:1.7.5")
implementation("androidx.compose.ui:ui-unit:1.7.5")
// Navigation component for Compose
implementation(libs.androidx.navigation.compose)
implementation("androidx.navigation:navigation-runtime:2.8.4")
implementation("androidx.navigation:navigation-common:2.8.4")
// Room dependencies for database operations
implementation(libs.androidx.room.ktx)
implementation("androidx.room:room-common:2.6.1")
implementation("androidx.room:room-runtime:2.6.1")
implementation(libs.androidx.room.paging)
ksp(libs.androidx.room.compiler)
// Paging dependencies
implementation(libs.paging.compose)
implementation("androidx.paging:paging-common:3.3.4")
// Lifecycle and ViewModel dependencies
implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation("androidx.lifecycle:lifecycle-livedata:2.8.7")
implementation("androidx.lifecycle:lifecycle-livedata-core:2.8.7")
implementation("androidx.lifecycle:lifecycle-viewmodel:2.8.7")
// Dependencies for email-related functionality
implementation(libs.android.mail)
// Testing dependencies
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation("androidx.test:monitor:1.7.2")
androidTestImplementation("junit:junit:4.13.2")
androidTestImplementation(platform(libs.androidx.compose.bom))
// Debugging tools for Compose
debugImplementation("androidx.compose.ui:ui-tooling:1.7.5")
debugRuntimeOnly("androidx.compose.ui:ui-test-manifest:1.7.5")
// PDF and internationalization libraries
implementation(libs.html2pdf)
implementation(libs.icu4j)
implementation(libs.jsoup)
implementation("com.itextpdf:layout:9.0.0")
// Kotlin Coroutines Core
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
// UI Tooling for preview and debugging
coreLibraryDesugaring(libs.desugar.jdk.libs)
}
Существуют ли какие-либо известные проблемы совместимости между версиями, которые я использую для AndroidX, Compose и других зависимостей, таких как Kotlin и Java?
Правильно ли настроен мой файл proguard-rules.pro для используемых мной библиотек? Есть ли какие-либо правила, которые мне следует добавить или удалить?
Совместимость Java и Kotlin: я ориентируюсь на Java 21 для sourceCompatibility и targetCompatibility как а также jvmTarget = "21". Целесообразно ли это или это слишком сложно для текущей поддержки Android?
Репозитории и плагины: правильно ли я настроен для управления репозиториями (
Любые предложения или советы будут невероятно полезны. Я хочу быть уверен, что не попаду в ловушки, связанные с конфигурацией Gradle или несовместимостью библиотек.
Заранее спасибо!
Я новичок в разработке для Android и пытаюсь понять, правильно ли настроена моя конфигурация Gradle, особенно в отношении совместимости между библиотеками, которые я использую. Ниже я включил соответствующие части своей установки, и мне интересно, есть ли что-нибудь проблемное или потенциально несовместимое. Мы будем очень признательны за любые отзывы. [b]Ключевые аспекты, которые меня беспокоят:[/b] [list] [*] [b]Совместимость между зависимостями.[/b] Я использую несколько библиотек AndroidX, Compose и Kotlin. Я не уверен, существуют ли какие-либо явные несовместимости между этими версиями.
[*][b]Конфигурация ProGuard:[/b] Я хочу убедитесь, что настройка ProGuard для обфускации правильна.
[*][b]Совместимость Kotlin и Java:[/b] Я нацелен на JVM 21. , и я хотел бы знать, может ли это вызвать какие-либо проблемы.
[*][b]Общие рекомендации:[/b] Есть ли какие-либо параметры конфигурации в моем build.gradle.kts что можно оптимизировать?
[/list] Ниже я включил свой файл settings.gradle.kts, build.gradle.kts как для модуля приложения, так и для уровня проекта, proguard-rules.pro и libs.versions.toml. [b][code]settings.gradle.kts[/code][/b] [code]pluginManagement { repositories { google { content { includeGroupByRegex("com\\.android.*") includeGroupByRegex("com\\.google.*") includeGroupByRegex("androidx.*") } } mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url = uri("https://jitpack.io") } // Correct syntax for JitPack repository } }
ndk { // Specify the ABIs you want to support abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", & q u o t ; x 8 6 _ 6 4 & q u o t ; ) < b r / > } < b r / > } < b r / > < b r / > n d k V e r s i o n = & q u o t ; 2 8 . 0 . 1 2 4 3 3 5 6 6 & q u o t ; < b r / > < b r / > b u i l d T y p e s { < b r / > d e b u g { < b r / > i s M i n i f y E n a b l e d = f a l s e < b r / > } < b r / > r e l e a s e { < b r / > i s M i n i f y E n a b l e d = t r u e < b r / > p r o g u a r d F i l e s ( < b r / > g e t D e f a u l t P r o g u a r d F i l e ( & q u o t ; p r o g u a r d - a n d r o i d - o p t i m i z e . t x t & q u o t ; ) , < b r / > & q u o t ; p r o g u a r d - r u l e s . p r o & q u o t ; < b r / > ) < b r / > } < b r / > } < b r / > < b r / > c o m p i l e O p t i o n s { < b r / > s o u r c e C o m p a t i b i l i t y = J a v a V e r s i o n . V E R S I O N _ 2 1 < b r / > t a r g e t C o m p a t i b i l i t y = J a v a V e r s i o n . V E R S I O N _ 2 1 < b r / > } < b r / > < b r / > k o t l i n O p t i o n s { < b r / > j v m T a r g e t = & q u o t ; 2 1 & q u o t ; < b r / > } < b r / > < b r / > b u i l d F e a t u r e s { < b r / > c o m p o s e = t r u e < b r / > } < b r / > < b r / > p a c k a g i n g { < b r / > r e s o u r c e s { < b r / > e x c l u d e s + = & q u o t ; / M E T A - I N F / { A L 2 . 0 , L G P L 2 . 1 } & q u o t ; < b r / > e x c l u d e s + = & q u o t ; M E T A - I N F / N O T I C E . m d & q u o t ; < b r / > e x c l u d e s + = "META-INF/LICENSE.md" } } }
// Debugging tools for Compose debugImplementation("androidx.compose.ui:ui-tooling:1.7.5") debugRuntimeOnly("androidx.compose.ui:ui-test-manifest:1.7.5")
// PDF and internationalization libraries implementation(libs.html2pdf) implementation(libs.icu4j) implementation(libs.jsoup) implementation("com.itextpdf:layout:9.0.0")
[plugins] android-application = { id = "com.android.application", version.ref = "agp" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "composeCompilerPlugin" } dependency-analysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } [/code] [list] [*]Существуют ли какие-либо известные проблемы совместимости между версиями, которые я использую для AndroidX, Compose и других зависимостей, таких как Kotlin и Java? [*]Правильно ли настроен мой файл proguard-rules.pro для используемых мной библиотек? Есть ли какие-либо правила, которые мне следует добавить или удалить? [*]Совместимость Java и Kotlin: я ориентируюсь на Java 21 для sourceCompatibility и targetCompatibility как а также jvmTarget = "21". Целесообразно ли это или это слишком сложно для текущей поддержки Android? [*]Репозитории и плагины: правильно ли я настроен для управления репозиториями ([code]settings.gradle.kts[/code]) и используя псевдонимы плагинов ([code]libs.versions.toml[/code]) оптимально? [/list] Любые предложения или советы будут невероятно полезны. Я хочу быть уверен, что не попаду в ловушки, связанные с конфигурацией Gradle или несовместимостью библиотек. Заранее спасибо!
Я потратил много времени на чтение сообщений на Stackoverflow относительно log4j и различных способов, которыми он может быть реализован. Я решил использовать подход Log4j.properties. Я все еще сталкиваюсь с проблемами, когда бегу из Eclipse или из...
при перетаскивании макета сетки в дизайн моего приложения я получаю следующее сообщение: -
Для этой операции требуется библиотека com.android.support:gridlayout-v7:+.
Проблема: обнаружены несоответствия в существующих зависимостях проекта....