From 81e945b490309c5bc6cbbd56d169f93918960ac3 Mon Sep 17 00:00:00 2001 From: lgcosta Date: Fri, 6 Nov 2026 08:48:16 -0300 Subject: [PATCH] build: toolchain AGP 8.13.2 + Kotlin 2.2.20 + SDK 36 (v0.4.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Gradle wrapper 8.11.1 -> 8.13 (exigido pelo AGP 8.13) - AGP 8.7.3 -> 8.13.2; Kotlin 2.0.21 -> 2.2.20; KSP -> 2.2.20-2.0.4 - compileSdk/targetSdk 35 -> 36 (Android 16 como alvo real) - Compose BOM 2025.06 -> 2026.06 (material3 1.4.0 estável; Expressive completo segue beta em 1.5.x e fica de fora a pedido: só estável) - activity-compose 1.10.1, navigation-compose 2.9.0, lifecycle 2.9.0 - Room 2.6.1 -> 2.8.3; WorkManager 2.9.1 -> 2.10.1; DataStore 1.1.7 - kotlinx-serialization 1.8.1; coroutines 1.10.2 - versionCode 7 / versionName 0.4.0 Verificado: testes unitários verdes; APKs debug+release OK; em Android 16 (API 36, Pixel 6) upgrade in-place, criar nota -> autosave -> Room -> lista, editor e chips de modo/formato sem crashes. README atualizado. --- README.md | 17 +++++++----- app/build.gradle.kts | 35 ++++++++++++------------ build.gradle.kts | 10 +++---- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 33 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 7030515..3ee15f7 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ unzip -q commandlinetools-linux-*.zip -d ~/Android/Sdk/cmdline-tools mv ~/Android/Sdk/cmdline-tools/cmdline-tools ~/Android/Sdk/cmdline-tools/latest yes | ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager --licenses ~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager \ - "platform-tools" "platforms;android-35" "build-tools;35.0.0" + "platform-tools" "platforms;android-36" "build-tools;36.0.0" # 3) ~/.bashrc (ou ~/.zshrc) export JAVA_HOME=/usr/lib/jvm/java-21-openjdk @@ -48,8 +48,8 @@ export ANDROID_HOME=$HOME/Android/Sdk export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools ``` -O projeto usa o **Gradle Wrapper** (8.11.1) — não é preciso instalar Gradle. -Se clonar sem os jars do wrapper, gere-os uma vez: `gradle wrapper --gradle-version 8.11.1` +O projeto usa o **Gradle Wrapper** (8.13) — não é preciso instalar Gradle. +Se clonar sem os jars do wrapper, gere-os uma vez: `gradle wrapper --gradle-version 8.13` (ou abra no Android Studio, que regenera automaticamente). ## Estrutura do repositório @@ -57,9 +57,9 @@ Se clonar sem os jars do wrapper, gere-os uma vez: `gradle wrapper --gradle-vers ``` notas-online-android/ ├── settings.gradle.kts / build.gradle.kts / gradle.properties -├── gradle/wrapper/ # Gradle 8.11.1 +├── gradle/wrapper/ # Gradle 8.13 ├── app/ -│ ├── build.gradle.kts # AGP 8.7.3 · Kotlin 2.0.21 · Compose BOM 2024.12 +│ ├── build.gradle.kts # AGP 8.13.2 · Kotlin 2.2.20 · Compose BOM 2026.06 │ ├── proguard-rules.pro │ └── src/main/ │ ├── AndroidManifest.xml # INTERNET + ACCESS_NETWORK_STATE; cleartext p/ LAN @@ -130,8 +130,11 @@ adb install -r app/build/outputs/apk/debug/app-debug.apk ## Testado em -- **Build**: `testDebugUnitTest` + `assembleDebug` + `assembleRelease` limpos (JDK 21 / AGP 8.7.3 / - Kotlin 2.0.21 / SDK 35 / Compose BOM 2025.06); release R8 ≈ **1,6 MB**, debug ≈ 17 MB. +- **Build**: `testDebugUnitTest` + `assembleDebug` + `assembleRelease` limpos (JDK 21 / AGP 8.13.2 / + Kotlin 2.2.20 / SDK 36 / Compose BOM 2026.06); release R8 ≈ **1,9 MB**, debug ≈ 20 MB. +- **Emulador Android 16 (API 36, x86_64, Pixel 6)** — v0.4.0: upgrade in-place sem bloqueio, + criar nota → autosave → persiste no Room → lista atualiza; editor WYSIWYG/Preview ok; + sem crashes (logcat AndroidRuntime limpo). - **Emulador Android 16 (API 36, x86_64, Pixel 6)** — v0.3.1: instalação sem bloqueio de "versão antiga", boot limpo e fluxo config → lista (status, busca, empty state) verificados. - **Emulador Android 15 (x86_64, Pixel 6)** — v0.3.0: edge-to-edge, status de sync compacto, diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 32c7035..7157489 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,14 +8,14 @@ plugins { android { namespace = "com.labexposed.notas" - compileSdk = 35 + compileSdk = 36 defaultConfig { applicationId = "com.labexposed.notas" minSdk = 26 - targetSdk = 35 - versionCode = 6 - versionName = "0.3.1" + targetSdk = 36 + versionCode = 7 + versionName = "0.4.0" } buildTypes { @@ -42,32 +42,31 @@ android { } dependencies { - val composeBom = platform("androidx.compose:compose-bom:2025.06.00") + val composeBom = platform("androidx.compose:compose-bom:2026.06.00") implementation(composeBom) // UI - implementation("androidx.activity:activity-compose:1.9.3") + implementation("androidx.activity:activity-compose:1.10.1") implementation("androidx.compose.ui:ui") implementation("androidx.compose.material3:material3") implementation("androidx.compose.material:material-icons-extended") - implementation("androidx.navigation:navigation-compose:2.8.5") - implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7") - implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.7") + implementation("androidx.navigation:navigation-compose:2.9.0") + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.9.0") + implementation("androidx.lifecycle:lifecycle-runtime-compose:2.9.0") // Dados locais - implementation("androidx.room:room-runtime:2.6.1") - implementation("androidx.room:room-ktx:2.6.1") - ksp("androidx.room:room-compiler:2.6.1") - implementation("androidx.datastore:datastore-preferences:1.1.1") + implementation("androidx.room:room-runtime:2.8.3") + implementation("androidx.room:room-ktx:2.8.3") + ksp("androidx.room:room-compiler:2.8.3") + implementation("androidx.datastore:datastore-preferences:1.1.7") - // Rede + serialização implementation("com.squareup.okhttp3:okhttp:4.12.0") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2") // Sync em segundo plano - implementation("androidx.work:work-runtime-ktx:2.9.1") + implementation("androidx.work:work-runtime-ktx:2.10.1") testImplementation("junit:junit:4.13.2") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2") } diff --git a/build.gradle.kts b/build.gradle.kts index 107abd0..17c3f01 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ // Arquivo raiz — só declara plugins; versão centralizada aqui. plugins { - id("com.android.application") version "8.7.3" apply false - id("org.jetbrains.kotlin.android") version "2.0.21" apply false - id("org.jetbrains.kotlin.plugin.compose") version "2.0.21" apply false - id("org.jetbrains.kotlin.plugin.serialization") version "2.0.21" apply false - id("com.google.devtools.ksp") version "2.0.21-1.0.28" apply false + id("com.android.application") version "8.13.2" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false + id("org.jetbrains.kotlin.plugin.compose") version "2.2.20" apply false + id("org.jetbrains.kotlin.plugin.serialization") version "2.2.20" apply false + id("com.google.devtools.ksp") version "2.2.20-2.0.4" apply false } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c8..37f853b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME