From b21c34cb73b022addf5eae9be5f4404b58972b55 Mon Sep 17 00:00:00 2001 From: Caleb Shim Date: Tue, 10 Nov 2026 14:39:55 -0500 Subject: [PATCH 1/2] Upgrade AGP --- app/build.gradle.kts | 31 ++++++++++++------------ build.gradle.kts | 10 ++++---- gradle/libs.versions.toml | 13 +++++++--- gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 84bdc850..fcae7750 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,4 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget import java.io.FileInputStream import java.util.Properties @@ -10,19 +11,18 @@ if (secretsPropertiesFile.exists()) { plugins { alias(libs.plugins.androidApplication) - alias(libs.plugins.jetbrainsKotlinAndroid) version "1.9.10" - id("com.apollographql.apollo") version "4.0.0" - id("kotlin-kapt") - id("com.google.dagger.hilt.android") - id("org.jetbrains.kotlin.plugin.compose") version "2.0.0" // this version matches your Kotlin version - id("org.jetbrains.kotlin.plugin.serialization") + alias(libs.plugins.apollo) + alias(libs.plugins.ksp) + alias(libs.plugins.hilt) + alias(libs.plugins.kotlinCompose) + alias(libs.plugins.kotlinSerialization) id("com.google.gms.google-services") } android { namespace = "com.cornellappdev.score" - compileSdk = 35 + compileSdk = 37 defaultConfig { applicationId = "com.cornellappdev.score" @@ -67,16 +67,15 @@ android { ) } } - composeOptions { - kotlinCompilerExtensionVersion = "1.7.0" - } - compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } - kotlinOptions { - jvmTarget = "1.8" +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_1_8) } } @@ -89,9 +88,9 @@ dependencies { implementation("androidx.lifecycle:lifecycle-viewmodel-compose") implementation("androidx.navigation:navigation-compose:2.8.2") implementation(libs.material3) - implementation("com.google.dagger:hilt-android:2.51.1") + implementation("com.google.dagger:hilt-android:${libs.versions.hilt.get()}") implementation(libs.androidx.foundation) - kapt("com.google.dagger:hilt-android-compiler:2.51.1") + ksp("com.google.dagger:hilt-android-compiler:${libs.versions.hilt.get()}") implementation("androidx.hilt:hilt-navigation-compose:1.0.0") implementation("com.google.accompanist:accompanist-pager:0.24.0-alpha") @@ -111,7 +110,7 @@ dependencies { implementation("io.socket:socket.io-client:2.1.1") { exclude(group = "org.json", module = "json") } - implementation("com.apollographql.apollo:apollo-runtime:4.0.0") + implementation(libs.apollo.runtime) implementation("io.coil-kt.coil3:coil-compose:3.1.0") implementation("io.coil-kt.coil3:coil-network-okhttp:3.1.0") lintChecks(libs.compose.lint.checks) diff --git a/build.gradle.kts b/build.gradle.kts index 05c415e8..8bb23cf6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { alias(libs.plugins.androidApplication) apply false - alias(libs.plugins.jetbrainsKotlinAndroid) version "1.9.10" apply false - id("com.google.dagger.hilt.android") version "2.51.1" apply false - kotlin("jvm") version "2.0.20" - kotlin("plugin.serialization") version "2.0.20" + alias(libs.plugins.kotlinCompose) apply false + alias(libs.plugins.kotlinSerialization) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.hilt) apply false id("com.google.gms.google-services") version "4.4.3" apply false -} \ No newline at end of file +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index baadf24f..858968e2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,9 @@ [versions] -agp = "8.8.2" +agp = "9.5.1" composeLintChecks = "1.4.2" -kotlin = "1.9.0" +kotlin = "2.2.10" +ksp = "2.3.13" +hilt = "2.60.1" coreKtx = "1.10.1" junit = "4.13.2" junitVersion = "1.1.5" @@ -11,7 +13,7 @@ material = "1.12.0" activity = "1.8.0" constraintlayout = "2.1.4" runtimeAndroid = "1.7.2" -apollo = "4.1.1" +apollo = "4.4.4" # Using alpha due to pull-to-refresh bug in stable # See https://stackoverflow.com/a/79126321 @@ -39,5 +41,8 @@ androidx-foundation = { group = "androidx.compose.foundation", name = "foundatio [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } -jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlinCompose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlinSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } apollo = { id = "com.apollographql.apollo", version.ref = "apollo" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cfc8e570..33fee4e8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Sep 17 00:24:01 EDT 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.9.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 46b4caa6da4c7d5f4803b9eee2411cd891e29e71 Mon Sep 17 00:00:00 2001 From: Caleb Shim Date: Tue, 10 Nov 2026 14:46:34 -0500 Subject: [PATCH 2/2] Switch CodeQL to advanced setup with a real Android build Default setup's autobuild ran ./gradlew testClasses, which only compiled the empty root project, so :app was never analyzed. That task no longer exists after removing the root kotlin("jvm") plugin. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/codeql.yml | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000..a8403d2a --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,61 @@ +name: CodeQL + +on: + push: + branches: + - 'main' + pull_request: + branches: + - 'main' + schedule: + - cron: '0 21 * * 1' + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + runs-on: ubuntu-latest + permissions: + security-events: write + packages: read + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: actions + build-mode: none + - language: java-kotlin + build-mode: manual + + steps: + - uses: actions/checkout@v7 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v4 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + + - name: Set up JDK 17 + if: matrix.build-mode == 'manual' + uses: actions/setup-java@v6 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Create google-services.json + if: matrix.build-mode == 'manual' + run: | + echo "${{ secrets.GOOGLE_SERVICES_JSON_NEW }}" | base64 --decode > app/google-services.json + + - name: Build + if: matrix.build-mode == 'manual' + run: ./gradlew --no-daemon --no-build-cache assembleDebug compileDebugUnitTestKotlin + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v4 + with: + category: "/language:${{ matrix.language }}"