Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
60b0971
workmanager + firebase
hermannakos Sep 26, 2025
79d0f29
Remove DocumentScanner module
hermannakos Sep 26, 2025
52457e3
ksp
hermannakos Sep 29, 2025
1e62820
apollo + google services
hermannakos Sep 29, 2025
8f324ef
hilt
hermannakos Sep 29, 2025
177fbd5
lifecycle + fragment
hermannakos Sep 29, 2025
e961483
glide
hermannakos Sep 29, 2025
f29f96b
retrofit + okhttp + kotlin + ksp
hermannakos Sep 29, 2025
160c400
room
hermannakos Sep 29, 2025
9513687
navigation
hermannakos Sep 29, 2025
28d3ec5
media3
hermannakos Sep 29, 2025
cca5da6
datastore
hermannakos Sep 29, 2025
a425d2e
lottie
hermannakos Sep 29, 2025
004b9a1
agp
hermannakos Sep 29, 2025
61a67f2
compose + misc
hermannakos Sep 29, 2025
b7e31b0
submodule fix
hermannakos Sep 30, 2025
3eccc4c
proguard
hermannakos Sep 30, 2025
b63315d
fix hilt
hermannakos Sep 30, 2025
2891adc
update tests
hermannakos Sep 30, 2025
2806ff4
fix test
hermannakos Sep 30, 2025
04375ed
fix parent tests
hermannakos Oct 1, 2025
eeaca06
test fix
hermannakos Oct 1, 2025
dd2bd27
Merge branch 'master' into MBL-19081-dependency-update
hermannakos Oct 1, 2025
0bbbee9
fix build
hermannakos Oct 1, 2025
5dbba1f
Merge branch 'master' into MBL-19081-dependency-update
hermannakos Oct 7, 2025
d326269
update pspdfkit
hermannakos Oct 8, 2025
d27b3bc
fix student build
hermannakos Oct 9, 2025
45bca24
fix license
hermannakos Oct 9, 2025
24b6ff1
fix dashboard notifications
hermannakos Oct 13, 2025
43b2e15
Merge branch 'master' into MBL-19081-dependency-update
hermannakos Oct 14, 2025
da6e00a
Increase heap size to 6g to fix R8 OOM error
hermannakos Oct 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions apps/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ buildscript {
classpath Plugins.FIREBASE_CRASHLYTICS
if (project.coverageEnabled) { classpath Plugins.JACOCO_ANDROID }
classpath Plugins.HILT
classpath Plugins.KSP
}
}

Expand All @@ -50,10 +51,40 @@ allprojects {
username pspdfMavenUser
password pspdfMavenPass
}
url 'https://customers.pspdfkit.com/maven/'
url 'https://my.nutrient.io/maven'
}
maven { url "https://maven.google.com/" }
}

plugins.withType(com.android.build.gradle.BasePlugin) {
android {
packaging {
resources {
pickFirsts += [
'META-INF/INDEX.LIST',
'META-INF/io.netty.versions.properties'
]
merges += [
'META-INF/LICENSE*',
'META-INF/NOTICE*',
'META-INF/DEPENDENCIES*'
]
excludes += [
'META-INF/DEPENDENCIES',
'META-INF/LICENSE',
'META-INF/LICENSE.txt',
'META-INF/LICENSE.md',
'META-INF/NOTICE',
'META-INF/NOTICE.txt',
'META-INF/NOTICE.md',
'META-INF/maven/**',
'META-INF/*.kotlin_module',
'META-INF/services/javax.annotation.processing.Processor'
]
}
}
}
}
}

task assembleAllApps() {
Expand All @@ -72,4 +103,3 @@ configurations.all{
}
}
}

64 changes: 32 additions & 32 deletions apps/buildSrc/src/main/java/GlobalDependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ object Versions {

/* Build/tooling */
const val ANDROID_GRADLE_TOOLS = "8.6.1"
const val BUILD_TOOLS = "34.0.0"
const val BUILD_TOOLS = "35.0.0"

/* Testing */
const val JUNIT = "4.13.2"
Expand All @@ -18,31 +18,31 @@ object Versions {
/* Kotlin */
const val KOTLIN = "2.0.21"
const val KOTLIN_COROUTINES = "1.9.0"
const val KSP = "2.0.21-1.0.27"

/* Google, Play Services */
const val GOOGLE_SERVICES = "4.4.2"
const val GOOGLE_SERVICES = "4.4.3"

/* Others */
const val APOLLO = "4.1.1"
const val PSPDFKIT = "2024.3.1"
const val APOLLO = "4.3.3"
const val NUTRIENT = "10.7.0"
const val PHOTO_VIEW = "2.3.0"
const val MOBIUS = "1.2.1"
const val HILT = "2.52"
const val HILT_ANDROIDX = "1.2.0"
const val LIFECYCLE = "2.8.6"
const val FRAGMENT = "1.8.4"
const val WORK_MANAGER = "2.9.1"
const val WORK_TEST = "2.9.1"
const val GLIDE_VERSION = "4.16.0"
const val HILT = "2.57.2"
const val HILT_ANDROIDX = "1.3.0"
const val LIFECYCLE = "2.9.4"
const val FRAGMENT = "1.8.9"
const val WORK_MANAGER = "2.10.5"
const val GLIDE_VERSION = "5.0.5"
const val RETROFIT = "2.11.0"
const val OKHTTP = "4.12.0"
const val ROOM = "2.6.1"
const val HAMCREST = "2.2"
const val NAVIGATION = "2.8.3"
const val MEDIA3 = "1.6.1"
const val DATASTORE = "1.1.1"
const val LOTTIE = "6.5.2"
const val ENCRYPTED_SHARED_PREFERENCES = "1.0.0"
const val ROOM = "2.7.0"
const val HAMCREST = "3.0"
const val NAVIGATION = "2.9.5"
const val MEDIA3 = "1.8.0"
const val DATASTORE = "1.1.7"
const val LOTTIE = "6.6.6"
const val ENCRYPTED_SHARED_PREFERENCES = "1.1.0"
const val JAVA_JWT = "4.5.0"
const val GLANCE = "1.1.1"
const val LIVEDATA = "1.9.0"
Expand All @@ -65,28 +65,27 @@ object Libs {
const val ANDROIDX_APPCOMPAT = "androidx.appcompat:appcompat:1.7.0"
const val ANDROIDX_BROWSER = "androidx.browser:browser:1.8.0"
const val ANDROIDX_CARDVIEW = "androidx.cardview:cardview:1.0.0"
const val ANDROIDX_CONSTRAINT_LAYOUT = "androidx.constraintlayout:constraintlayout:2.1.4"
const val ANDROIDX_CONSTRAINT_LAYOUT = "androidx.constraintlayout:constraintlayout:2.2.0"
const val ANDROIDX_EXIF = "androidx.exifinterface:exifinterface:1.3.7"
const val ANDROIDX_FRAGMENT = "androidx.fragment:fragment:${Versions.FRAGMENT}"
const val ANDROIDX_FRAGMENT_KTX = "androidx.fragment:fragment-ktx:${Versions.FRAGMENT}"
const val ANDROIDX_PALETTE = "androidx.palette:palette:1.0.0"
const val ANDROIDX_PERCENT = "androidx.percentlayout:percentlayout:1.0.0"
const val ANDROIDX_RECYCLERVIEW = "androidx.recyclerview:recyclerview:1.3.2"
const val ANDROIDX_RECYCLERVIEW = "androidx.recyclerview:recyclerview:1.4.0"
const val ANDROIDX_VECTOR = "androidx.vectordrawable:vectordrawable:1.2.0"
const val ANDROIDX_SWIPE_REFRESH_LAYOUT = "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
const val ANDROIDX_CORE_TESTING = "androidx.arch.core:core-testing:2.2.0"
const val ANDROIDX_WORK_MANAGER = "androidx.work:work-runtime:${Versions.WORK_MANAGER}"
const val ANDROIDX_WORK_MANAGER_KTX = "androidx.work:work-runtime-ktx:${Versions.WORK_MANAGER}"
const val ANDROIDX_WORK_TEST = "androidx.work:work-testing:${Versions.WORK_TEST}"
const val ANDROIDX_WEBKIT = "androidx.webkit:webkit:1.9.0"
const val ANDROIDX_DATABINDING_COMPILER = "androidx.databinding:databinding-compiler:${Versions.ANDROID_GRADLE_TOOLS}" // This is bundled with the gradle plugin so we use the same version
const val ANDROIDX_COMPOSE_ACTIVITY = "androidx.activity:activity-compose:1.9.0"
const val ANDROIDX_WORK_TEST = "androidx.work:work-testing:${Versions.WORK_MANAGER}"
const val ANDROIDX_WEBKIT = "androidx.webkit:webkit:1.12.0"
const val ANDROIDX_COMPOSE_ACTIVITY = "androidx.activity:activity-compose:1.10.0"
const val DATASTORE = "androidx.datastore:datastore-preferences:${Versions.DATASTORE}"
const val ENCRYPTED_SHARED_PREFERENCES = "androidx.security:security-crypto:${Versions.ENCRYPTED_SHARED_PREFERENCES}"
const val JAVA_JWT = "com.auth0:java-jwt:${Versions.JAVA_JWT}"

/* Firebase */
const val FIREBASE_BOM = "com.google.firebase:firebase-bom:33.4.0"
const val FIREBASE_BOM = "com.google.firebase:firebase-bom:34.3.0"
const val FIREBASE_CRASHLYTICS = "com.google.firebase:firebase-crashlytics"
const val FIREBASE_MESSAGING = "com.google.firebase:firebase-messaging"
const val FIREBASE_CONFIG = "com.google.firebase:firebase-config"
Expand All @@ -95,7 +94,7 @@ object Libs {
/* Google Dependencies */
const val PLAY_IN_APP_UPDATES = "com.google.android.play:app-update:2.1.0"
const val FLEXBOX_LAYOUT = "com.google.android.flexbox:flexbox:3.0.0"
const val MATERIAL_DESIGN = "com.google.android.material:material:1.12.0"
const val MATERIAL_DESIGN = "com.google.android.material:material:1.13.0"

/* Mobius */
const val MOBIUS_CORE = "com.spotify.mobius:mobius-core:${Versions.MOBIUS}"
Expand Down Expand Up @@ -133,7 +132,7 @@ object Libs {
const val COMPOSE_VIEW_MODEL = "androidx.lifecycle:lifecycle-viewmodel-compose:${Versions.LIFECYCLE}"
const val COMPOSE_NAVIGATION = "androidx.navigation:navigation-compose:2.8.9"
/* Media and content handling */
const val PSPDFKIT = "com.pspdfkit:pspdfkit:${Versions.PSPDFKIT}"
const val NUTRIENT = "io.nutrient:nutrient:${Versions.NUTRIENT}"
const val MEDIA3 = "androidx.media3:media3-exoplayer:${Versions.MEDIA3}"
const val MEDIA3_UI = "androidx.media3:media3-ui:${Versions.MEDIA3}"
const val MEDIA3_HLS = "androidx.media3:media3-exoplayer-hls:${Versions.MEDIA3}"
Expand Down Expand Up @@ -171,7 +170,7 @@ object Libs {
const val APACHE_COMMONS_TEXT = "org.apache.commons:commons-text:1.12.0"
const val CAMERA_VIEW = "com.otaliastudios:cameraview:2.7.2"

const val PENDO = "sdk.pendo.io:pendoIO:3.6+"
const val PENDO = "sdk.pendo.io:pendoIO:3.7.+"

const val ROOM = "androidx.room:room-runtime:${Versions.ROOM}"
const val ROOM_COMPILER = "androidx.room:room-compiler:${Versions.ROOM}"
Expand All @@ -183,19 +182,19 @@ object Libs {
const val RRULE = "org.scala-saddle:google-rfc-2445:20110304"

// Compose
const val COMPOSE_BOM = "androidx.compose:compose-bom:2024.09.02"
const val COMPOSE_BOM = "androidx.compose:compose-bom:2025.09.01"
const val COMPOSE_MATERIAL = "androidx.compose.material:material"
const val COMPOSE_MATERIAL_ICONS = "androidx.compose.material:material-icons-core"
const val COMPOSE_PREVIEW = "androidx.compose.ui:ui-tooling-preview"
const val COMPOSE_TOOLING = "androidx.compose.ui:ui-tooling"
const val COMPOSE_UI = "androidx.compose.ui:ui-android"
const val COMPOSE_UI_TEST = "androidx.compose.ui:ui-test-junit4"
const val COMPOSE_UI_TEST_MANIFEST = "androidx.compose.ui:ui-test-manifest"
const val COMPOSE_MATERIAL_3 = "androidx.compose.material3:material3:1.4.0-alpha12"
const val COMPOSE_MATERIAL_3 = "androidx.compose.material3:material3:1.4.0"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to specify this version? I think it's included in the BOM. I guess we specified it previously because we had to use the alpha version.

const val COMPOSE_ADAPTIVE = "androidx.compose.material3.adaptive:adaptive"
const val COMPOSE_MATERIAL3_WINDOW_SIZE = "androidx.compose.material3:material3-window-size-class"
const val COMPOSE_NAVIGATION_HILT = "androidx.hilt:hilt-navigation-compose:1.2.0"
const val COMPOSE_FRAGMENT = "androidx.fragment:fragment-compose:1.8.6"
const val COMPOSE_NAVIGATION_HILT = "androidx.hilt:hilt-navigation-compose:1.3.0"
const val COMPOSE_FRAGMENT = "androidx.fragment:fragment-compose:1.8.9"

// Glance
const val GLANCE = "androidx.glance:glance:${Versions.GLANCE}"
Expand All @@ -220,4 +219,5 @@ object Plugins {
const val GOOGLE_SERVICES = "com.google.gms:google-services:${Versions.GOOGLE_SERVICES}"
const val JACOCO_ANDROID = "com.dicedmelon.gradle:jacoco-android:${Versions.JACOCO_ANDROID}"
const val HILT = "com.google.dagger:hilt-android-gradle-plugin:${Versions.HILT}"
const val KSP = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:${Versions.KSP}"
}
2 changes: 1 addition & 1 deletion apps/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ android.enableJetifier=true
android.nonFinalResIds=false
android.nonTransitiveRClass=false
android.useAndroidX=true
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
35 changes: 22 additions & 13 deletions apps/parent/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ plugins {
id 'com.android.application'
id 'com.google.gms.google-services'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'kotlin-kapt' // Keep kapt for Data Binding
id 'com.google.devtools.ksp'
id 'com.google.firebase.crashlytics'
id 'dagger.hilt.android.plugin'
id 'org.jetbrains.kotlin.plugin.compose'
Expand Down Expand Up @@ -51,15 +52,23 @@ android {
PrivateData.merge(project, "parent")
}

packagingOptions {
exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/rxjava.properties'
exclude 'LICENSE.txt'
packaging {
resources {
pickFirsts += [
'META-INF/INDEX.LIST',
'META-INF/io.netty.versions.properties'
]
excludes += [
'META-INF/DEPENDENCIES',
'META-INF/LICENSE',
'META-INF/LICENSE.txt',
'META-INF/NOTICE',
'META-INF/NOTICE.txt',
'META-INF/maven/com.google.guava/guava/pom.properties',
'META-INF/maven/com.google.guava/guava/pom.xml',
'META-INF/rxjava.properties'
]
}
}


Expand Down Expand Up @@ -194,14 +203,14 @@ dependencies {

/* DI */
implementation Libs.HILT
kapt Libs.HILT_COMPILER
ksp Libs.HILT_COMPILER
implementation Libs.HILT_ANDROIDX_WORK
kapt Libs.HILT_ANDROIDX_COMPILER
ksp Libs.HILT_ANDROIDX_COMPILER
androidTestImplementation Libs.HILT_TESTING

/* ROOM */
implementation Libs.ROOM
kapt Libs.ROOM_COMPILER
ksp Libs.ROOM_COMPILER
implementation Libs.ROOM_COROUTINES

/* Navigation */
Expand Down
17 changes: 16 additions & 1 deletion apps/parent/proguard-rules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -254,4 +254,19 @@
-dontwarn java.beans.SimpleBeanInfo

-keep class androidx.navigation.** { *; }
-keep interface androidx.navigation.** { *; }
-keep interface androidx.navigation.** { *; }

# Netty and BlockHound integration
-dontwarn reactor.blockhound.integration.BlockHoundIntegration
-dontwarn io.netty.util.internal.Hidden$NettyBlockHoundIntegration
-keep class reactor.blockhound.integration.** { *; }
-keep class io.netty.util.internal.Hidden$NettyBlockHoundIntegration { *; }

# Additional Netty keep rules for R8
-dontwarn io.netty.**
-keep class io.netty.** { *; }
-keepclassmembers class io.netty.** { *; }

# BlockHound related classes
-dontwarn reactor.blockhound.**
-keep class reactor.blockhound.** { *; }
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package com.instructure.parentapp.ui.espresso

import androidx.work.DefaultWorkerFactory
import androidx.work.WorkerFactory
import com.instructure.pandautils.features.reminder.AlarmScheduler
import com.instructure.parentapp.util.BaseAppManager
Expand All @@ -26,7 +27,7 @@ open class TestAppManager : BaseAppManager() {
private var workerFactory: WorkerFactory? = null

override fun getWorkManagerFactory(): WorkerFactory {
return workerFactory ?: WorkerFactory.getDefaultWorkerFactory()
return workerFactory ?: DefaultWorkerFactory
}

override fun getScheduler(): AlarmScheduler? {
Expand Down
4 changes: 1 addition & 3 deletions apps/settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pluginManagement {
}
}
dependencies {
classpath("com.android.tools:r8:8.2.47")
classpath("com.android.tools:r8:8.13.6")
}
}
}
Expand All @@ -29,7 +29,6 @@ include ':pandautils'
include ':rceditor'
include ':recyclerview'
include ':pandares'
include ':DocumentScanner'
include ':horizon'

project(':annotations').projectDir = new File(rootProject.projectDir, '/../libs/annotations')
Expand All @@ -43,5 +42,4 @@ project(':pandautils').projectDir = new File(rootProject.projectDir, '/../libs/p
project(':rceditor').projectDir = new File(rootProject.projectDir, '/../libs/rceditor')
project(':recyclerview').projectDir = new File(rootProject.projectDir, '/../libs/recyclerview')
project(':pandares').projectDir = new File(rootProject.projectDir, '/../libs/pandares')
project(':DocumentScanner').projectDir = new File(rootProject.projectDir, '/../libs/DocumentScanner')
project(':horizon').projectDir = new File(rootProject.projectDir, '/../libs/horizon')
Loading
Loading