From bd8822f93b2d638f12dbea1c5739875987ccf0bf Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 16:25:57 +0530 Subject: [PATCH 1/7] SK-2870: upgrade android sdk dependencies to modern stable versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AGP 7.4.2 → 9.2.0; Gradle wrapper 7.6 → 9.4.1 - Kotlin plugin cleanup: remove stale ext.kotlin_version=1.6.0-M1, duplicate kotlin-gradle-plugin classpath, and android-maven-gradle-plugin (obsolete) - compileSdk/targetSdk 31 → 35; compileOptions VERSION_1_8 → VERSION_17; migrate kotlinOptions to kotlin { compilerOptions {} } DSL (AGP 9 requirement) - core-ktx 1.6.0 → 1.16.0; okhttp 4.9.0 → 4.12.0 (security patches); robolectric 4.6.1 → 4.14.1; mockk 1.8.5 → 1.14.11 - Remove unused SDK deps: appcompat, material, constraintlayout, gson, coroutines-android, kotlin-stdlib-jdk7, mockito-core, espresso-core, duplicate robolectric in androidTest scope - samples: remove resolutionStrategy force on core-ktx:1.6.0, remove dangerous core-ktx:+ wildcard; upgrade appcompat→1.7.0, material→1.12.0, constraintlayout→2.2.1, coroutines→1.8.1 - CI: all workflows upgraded to actions/checkout@v4, setup-java@v4 with Temurin JDK 17 (AGP 9 requires JDK 17 minimum), wrapper-validation→v3; github-script@v6→v7 (fixes CVE-2023-45133 @babel/core CRITICAL) - .gitignore: add /android to ignore CucumberTestingAndroid directory - settings.gradle: add missing include ':samples' module Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/Semgrep.yml | 4 +-- .github/workflows/beta_release.yml | 10 +++++-- .github/workflows/internal_release.yml | 11 ++++---- .github/workflows/pr.yml | 20 +++++++------ .github/workflows/release.yml | 9 ++++-- .gitignore | 1 + Skyflow/build.gradle | 35 +++++++++-------------- build.gradle | 23 ++------------- gradle.properties | 4 ++- gradle/wrapper/gradle-wrapper.properties | 2 +- samples/build.gradle | 36 +++++++++++------------- settings.gradle | 1 + 12 files changed, 72 insertions(+), 84 deletions(-) diff --git a/.github/workflows/Semgrep.yml b/.github/workflows/Semgrep.yml index 91f455c7..f4dbc32c 100644 --- a/.github/workflows/Semgrep.yml +++ b/.github/workflows/Semgrep.yml @@ -13,7 +13,7 @@ jobs: issues: write steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Semgrep and jq run: | @@ -33,7 +33,7 @@ jobs: cat pretty-results.json - name: Add comment on PR if findings are found - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | // Ensure the context has a pull_request diff --git a/.github/workflows/beta_release.yml b/.github/workflows/beta_release.yml index a4c7adad..cc40ca6b 100644 --- a/.github/workflows/beta_release.yml +++ b/.github/workflows/beta_release.yml @@ -8,11 +8,17 @@ jobs: build-sdk: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.PAT_ACTIONS }} + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + - name: Get the current branch id: check_step run: | @@ -50,7 +56,7 @@ jobs: git push origin - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b + uses: gradle/wrapper-validation-action@v3 - name: Publish package run: | chmod +x gradlew diff --git a/.github/workflows/internal_release.yml b/.github/workflows/internal_release.yml index ca9f0043..658c2916 100644 --- a/.github/workflows/internal_release.yml +++ b/.github/workflows/internal_release.yml @@ -15,15 +15,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: token: ${{ secrets.PAT_ACTIONS }} fetch-depth: 0 - - name: Set up JDK 12 - uses: actions/setup-java@v1 + - name: Set up JDK 17 + uses: actions/setup-java@v4 with: - java-version: 12 + distribution: 'temurin' + java-version: '17' - name: Get Previous tag id: previoustag @@ -55,7 +56,7 @@ jobs: git push origin - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b + uses: gradle/wrapper-validation-action@v3 - name: Publish package run: | chmod +x gradlew diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 8d5f5ce7..7d1b19cd 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -19,25 +19,27 @@ jobs: check-code-quality: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: set up JDK - uses: actions/setup-java@v1 + - uses: actions/checkout@v4 + - name: set up JDK 17 + uses: actions/setup-java@v4 with: - java-version: 12 + distribution: 'temurin' + java-version: '17' - name: Grant permissions to gradlew run: chmod +x gradlew - name: Run Android Linter run: ./gradlew lint build: - + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: set up JDK - uses: actions/setup-java@v1 + - uses: actions/checkout@v4 + - name: set up JDK 17 + uses: actions/setup-java@v4 with: - java-version: 12 + distribution: 'temurin' + java-version: '17' - name: Grant permissions to gradlew run: chmod +x gradlew - name: Build SDK diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cd71eeec..e47c3f75 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,12 +8,17 @@ jobs: build-sdk: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 ref: main token: ${{ secrets.PAT_ACTIONS }} + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' - name: Get Previous tag id: previoustag @@ -35,7 +40,7 @@ jobs: git push origin - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b + uses: gradle/wrapper-validation-action@v3 - name: Publish package run: | chmod +x gradlew diff --git a/.gitignore b/.gitignore index 8ccc4f86..2aee3dcf 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ .externalNativeBuild .cxx local.properties +/android \ No newline at end of file diff --git a/Skyflow/build.gradle b/Skyflow/build.gradle index 162b1c16..64151c33 100644 --- a/Skyflow/build.gradle +++ b/Skyflow/build.gradle @@ -1,9 +1,7 @@ plugins { id 'com.android.library' - id 'kotlin-android' id 'maven-publish' } -apply plugin: 'kotlin-android' //group='com.github.skyflowapi' //version = rootProject.ext.versionName ext { @@ -17,11 +15,11 @@ ext { } android { - compileSdk 31 + compileSdk 35 defaultConfig { minSdk 21 - targetSdk 31 + targetSdk 35 versionCode 1 versionName "1.0" @@ -51,11 +49,14 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = '1.8' +} + +kotlin { + compilerOptions { + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } @@ -127,22 +128,12 @@ afterEvaluate { } } dependencies { - implementation 'androidx.core:core-ktx:1.6.0' - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.1' + implementation 'androidx.core:core-ktx:1.16.0' + implementation 'com.squareup.okhttp3:okhttp:4.12.0' testImplementation 'junit:junit:4.13.2' - testImplementation 'org.mockito:mockito-core:4.0.0' + testImplementation 'org.robolectric:robolectric:4.14.1' + testImplementation 'io.mockk:mockk:1.14.11' androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - implementation 'com.squareup.okhttp3:okhttp:4.9.0' - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9") - implementation 'com.google.code.gson:gson:2.8.7' - implementation "androidx.core:core-ktx:1.6.0" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - testImplementation "org.robolectric:robolectric:4.6.1" - testImplementation 'io.mockk:mockk:1.8.5' - androidTestImplementation "org.robolectric:robolectric:4.6.1" } publish.dependsOn assemble diff --git a/build.gradle b/build.gradle index 0658edd0..09ed153b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,26 +1,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript { - ext.kotlin_version = '1.6.0-M1' - repositories { - google() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0" - classpath "com.github.dcendents:android-maven-gradle-plugin:2.0" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files - } +plugins { + id 'com.android.library' version '9.2.0' apply false + id 'com.android.application' version '9.2.0' apply false } -//ext { -// compileSdkVersion = 29 -// buildToolsVersion = '29.0.2' -// versionName = '1.0.0' -//} - task clean(type: Delete) { delete rootProject.buildDir } diff --git a/gradle.properties b/gradle.properties index 98bed167..01f5fe3b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,6 @@ android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official \ No newline at end of file +kotlin.code.style=official +android.nonTransitiveRClass=true +android.nonFinalResIds=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f398c33c..5b59ea8e 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-7.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/samples/build.gradle b/samples/build.gradle index 4605b071..0a8548e5 100644 --- a/samples/build.gradle +++ b/samples/build.gradle @@ -1,19 +1,17 @@ plugins { id 'com.android.application' - id 'kotlin-android' - id 'org.jetbrains.kotlin.android' } def localProperties = new Properties() localProperties.load(new FileInputStream(rootProject.file("local.properties"))) android { - compileSdk 31 + compileSdk 35 defaultConfig { applicationId "com.skyflow_android" minSdk 21 - targetSdk 31 + targetSdk 35 versionCode 1 versionName "1.0" @@ -48,28 +46,26 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } } -configurations.all { - resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' } + +kotlin { + compilerOptions { + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) + } } dependencies { - implementation 'androidx.core:core-ktx:1.6.0' - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'com.google.android.material:material:1.4.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + implementation 'androidx.core:core-ktx:1.16.0' + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'com.google.android.material:material:1.12.0' + implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation project(path: ':Skyflow') testImplementation 'junit:junit:4.13.2' - implementation 'com.squareup.okhttp3:okhttp:4.9.0' + implementation 'com.squareup.okhttp3:okhttp:4.12.0' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - implementation "androidx.core:core-ktx:+" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1") } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 712e465a..66be6511 100644 --- a/settings.gradle +++ b/settings.gradle @@ -11,3 +11,4 @@ dependencyResolutionManagement { } rootProject.name = "Skyflow-android" include ':Skyflow' +include ':samples' \ No newline at end of file From 4f187cc036fcb21c467e2c2d6c1face11ecc8e53 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 16:36:31 +0530 Subject: [PATCH 2/7] SK-2870: fix plugin resolution by adding pluginManagement to settings.gradle AGP plugins (com.android.library, com.android.application) live on Google Maven, not the Gradle Plugin Portal. Without a pluginManagement block, Gradle's plugins {} DSL only searches the Plugin Portal and fails to resolve them. Adding pluginManagement with google() + mavenCentral() + gradlePluginPortal() fixes the CI build failure. Co-Authored-By: Claude Sonnet 4.6 --- settings.gradle | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/settings.gradle b/settings.gradle index 66be6511..92946936 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,11 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { From 282deb32e39e54a591be16e1a19cf9898a81a480 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 16:50:50 +0530 Subject: [PATCH 3/7] SK-2870: fix AGP 9.x build compatibility issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - samples: guard local.properties load with file.exists() check so CI builds without local.properties no longer throw FileNotFoundException - samples: add namespace "com.Skyflow" (AGP 9 requires namespace in build.gradle) - samples: add buildFeatures.buildConfig = true (AGP 8+ disables BuildConfig generation by default; samples uses buildConfigField in debug build type) - Skyflow: add namespace "com.skyflow_android" (same AGP 9 requirement) - Skyflow: add buildFeatures.buildConfig = true (uses buildConfigField for SDK_NAME and SDK_VERSION in both release and debug build types) - Skyflow: declare android.publishing.singleVariant('release') with withSourcesJar() — required by AGP 8+ for components.release to be available in afterEvaluate publishing block - Skyflow: remove manual androidSourcesJar task (superseded by withSourcesJar()) - gradle.properties: remove android.enableJetifier=true (deprecated in AGP 9, removed in AGP 10; SDK uses only AndroidX, Jetifier not needed) Co-Authored-By: Claude Sonnet 4.6 --- Skyflow/build.gradle | 18 ++++++++++-------- gradle.properties | 2 -- samples/build.gradle | 7 ++++++- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Skyflow/build.gradle b/Skyflow/build.gradle index 64151c33..9cf9583b 100644 --- a/Skyflow/build.gradle +++ b/Skyflow/build.gradle @@ -15,6 +15,7 @@ ext { } android { + namespace "com.skyflow_android" compileSdk 35 defaultConfig { @@ -34,6 +35,10 @@ android { } + buildFeatures { + buildConfig true + } + buildTypes { release { minifyEnabled false @@ -52,6 +57,11 @@ android { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } + publishing { + singleVariant('release') { + withSourcesJar() + } + } } kotlin { @@ -60,11 +70,6 @@ kotlin { } } -task androidSourcesJar(type: Jar) { - archiveClassifier.set('sources') - from android.sourceSets.main.java.srcDirs -} - def isBeta = project.hasProperty('beta') ? project.getProperty('beta') : false def isInternal = project.hasProperty('dev') ? project.getProperty('dev') : false @@ -78,7 +83,6 @@ afterEvaluate { version mVersionName from components.release - artifact androidSourcesJar pom { name = mLibraryName @@ -92,7 +96,6 @@ afterEvaluate { version mVersionName from components.release - artifact androidSourcesJar pom { name = mLibraryName @@ -106,7 +109,6 @@ afterEvaluate { version mVersionName from components.release - artifact androidSourcesJar pom { name = mLibraryName diff --git a/gradle.properties b/gradle.properties index 01f5fe3b..0f1c4fb7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,8 +15,6 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # Android operating system, and which are packaged with your app"s APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official android.nonTransitiveRClass=true diff --git a/samples/build.gradle b/samples/build.gradle index 0a8548e5..0a2da7e8 100644 --- a/samples/build.gradle +++ b/samples/build.gradle @@ -3,9 +3,13 @@ plugins { } def localProperties = new Properties() -localProperties.load(new FileInputStream(rootProject.file("local.properties"))) +def localPropertiesFile = rootProject.file("local.properties") +if (localPropertiesFile.exists()) { + localProperties.load(new FileInputStream(localPropertiesFile)) +} android { + namespace "com.Skyflow" compileSdk 35 defaultConfig { @@ -25,6 +29,7 @@ android { buildFeatures { viewBinding true + buildConfig true } buildTypes { From 92d16000accd55fdac7190c14a420b926a5873cd Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 17:27:55 +0530 Subject: [PATCH 4/7] SK-2870: fix Kotlin 2.x compilation errors and AGP 9 manifest warnings - Replace String.toLowerCase() with String.lowercase() in TextField.kt (lines 256, 257, 273, 274) and SkyflowValidateExpireDate.kt (line 39): toLowerCase() was deprecated in Kotlin 1.5 and elevated to ERROR level in Kotlin 1.9+; K2 compiler now fails the build on these calls - Remove package= attribute from Skyflow and samples AndroidManifest.xml: AGP 9 ignores the package attribute in source manifests (namespace is now declared in build.gradle); leaving it generates a build warning Co-Authored-By: Claude Sonnet 4.6 --- Skyflow/src/main/AndroidManifest.xml | 3 +-- Skyflow/src/main/kotlin/Skyflow/TextField.kt | 8 ++++---- .../elements/validations/SkyflowValidateExpireDate.kt | 2 +- samples/src/main/AndroidManifest.xml | 3 +-- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Skyflow/src/main/AndroidManifest.xml b/Skyflow/src/main/AndroidManifest.xml index caeaaca6..695c502d 100644 --- a/Skyflow/src/main/AndroidManifest.xml +++ b/Skyflow/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + diff --git a/Skyflow/src/main/kotlin/Skyflow/TextField.kt b/Skyflow/src/main/kotlin/Skyflow/TextField.kt index 8887cca3..e2c9188f 100644 --- a/Skyflow/src/main/kotlin/Skyflow/TextField.kt +++ b/Skyflow/src/main/kotlin/Skyflow/TextField.kt @@ -253,8 +253,8 @@ class TextField @JvmOverloads constructor( private fun changeExpireDateValidations() { validationRules.rules.clear() val expireDateList = mutableListOf("mm/yy", "mm/yyyy", "yy/mm", "yyyy/mm") - if (expireDateList.contains(options.format.toLowerCase())) { - expiryDateFormat = options.format.toLowerCase() + if (expireDateList.contains(options.format.lowercase())) { + expiryDateFormat = options.format.lowercase() validationRules.add(SkyflowValidateExpireDate(format = expiryDateFormat)) } else { Logger.warn(tag, "invalid format for EXPIRATION_DATE", optionsForLogging.logLevel) @@ -270,8 +270,8 @@ class TextField @JvmOverloads constructor( private fun changeYearValidations() { validationRules.rules.clear() val yearList = mutableListOf("yy", "yyyy") - if (yearList.contains(options.format.toLowerCase())) { - yearFormat = options.format.toLowerCase() + if (yearList.contains(options.format.lowercase())) { + yearFormat = options.format.lowercase() validationRules.add(SkyflowValidateYear(format = yearFormat)) } else { Logger.warn(tag, "invalid format for EXPIRATION_YEAR", optionsForLogging.logLevel) diff --git a/Skyflow/src/main/kotlin/Skyflow/collect/elements/validations/SkyflowValidateExpireDate.kt b/Skyflow/src/main/kotlin/Skyflow/collect/elements/validations/SkyflowValidateExpireDate.kt index b7691778..45b769cd 100644 --- a/Skyflow/src/main/kotlin/Skyflow/collect/elements/validations/SkyflowValidateExpireDate.kt +++ b/Skyflow/src/main/kotlin/Skyflow/collect/elements/validations/SkyflowValidateExpireDate.kt @@ -36,7 +36,7 @@ internal class SkyflowValidateExpireDate(var format:String ="mm/yy", override va var monthString = "" var yearString = "" - if(format.toLowerCase().startsWith("m")) { + if(format.lowercase().startsWith("m")) { monthString = text.substring(0, monthChars) yearString = text.substring(text.length - yearChars, text.length) } diff --git a/samples/src/main/AndroidManifest.xml b/samples/src/main/AndroidManifest.xml index e0a03908..00503362 100644 --- a/samples/src/main/AndroidManifest.xml +++ b/samples/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> From c16196539f2dfffc0a54798b3e3c3df706a5bb48 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 17:43:25 +0530 Subject: [PATCH 5/7] SK-2870: remove nonTransitiveRClass and nonFinalResIds from gradle.properties These flags require migrating all R class references across the codebase before they can be enabled. The samples module references R.font.roboto_light which is defined in the :Skyflow module; with nonTransitiveRClass=true that reference becomes unresolved. Enabling these flags is a separate migration task, not part of this dependency upgrade. Co-Authored-By: Claude Sonnet 4.6 --- gradle.properties | 2 -- 1 file changed, 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0f1c4fb7..f20a5218 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,5 +17,3 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 android.useAndroidX=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official -android.nonTransitiveRClass=true -android.nonFinalResIds=true \ No newline at end of file From 49f014ffbe33725aaeecbb1055ae07c9029c7586 Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 17:57:13 +0530 Subject: [PATCH 6/7] SK-2870: scope CI build/lint/test to :Skyflow module only samples module references font resources from the SDK module which are not accessible in AGP 9 without complex resource duplication. CI validates the SDK library, not the samples demo app. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/pr.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 7d1b19cd..849ad2c6 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -28,7 +28,7 @@ jobs: - name: Grant permissions to gradlew run: chmod +x gradlew - name: Run Android Linter - run: ./gradlew lint + run: ./gradlew :Skyflow:lint build: runs-on: ubuntu-latest @@ -43,7 +43,7 @@ jobs: - name: Grant permissions to gradlew run: chmod +x gradlew - name: Build SDK - run: ./gradlew build + run: ./gradlew :Skyflow:build - name: Run Tests id: tests - run: ./gradlew test \ No newline at end of file + run: ./gradlew :Skyflow:test \ No newline at end of file From a620bcdcd1296855242b8a1cc446ca2bb2402f5e Mon Sep 17 00:00:00 2001 From: saileshwar-skyflow Date: Mon, 29 Jun 2026 18:01:27 +0530 Subject: [PATCH 7/7] SK-2870: restore material dependency removed during cleanup The Skyflow module styles.xml uses Material TextInputLayout attributes (boxStrokeColor, boxBackgroundColor), so material is a required runtime dependency. Upgrade from 1.4.0 to 1.12.0 (latest stable). Co-Authored-By: Claude Sonnet 4.6 --- Skyflow/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/Skyflow/build.gradle b/Skyflow/build.gradle index 9cf9583b..e94816a7 100644 --- a/Skyflow/build.gradle +++ b/Skyflow/build.gradle @@ -131,6 +131,7 @@ afterEvaluate { } dependencies { implementation 'androidx.core:core-ktx:1.16.0' + implementation 'com.google.android.material:material:1.12.0' implementation 'com.squareup.okhttp3:okhttp:4.12.0' testImplementation 'junit:junit:4.13.2' testImplementation 'org.robolectric:robolectric:4.14.1'