Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android 15 updates #742

Merged
merged 4 commits into from
Sep 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Binary file modified app/libs/android.jar
Binary file not shown.
Binary file modified app/libs/libcore.jar
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ import kotlin.random.Random
@Suppress("DEPRECATION")
@RunWith(AndroidJUnit4::class)
@Config(
sdk = [34], // TODO: Drop once robolectric supports 35
application = TestApp::class
)
class MetadataManagerTest {
Expand Down Expand Up @@ -342,7 +343,7 @@ class MetadataManagerTest {

@Test
fun `test onPackageBackedUp()`() {
packageInfo.applicationInfo.flags = FLAG_SYSTEM
packageInfo.applicationInfo!!.flags = FLAG_SYSTEM
val updatedMetadata = initialMetadata.copy(
time = time,
packageMetadataMap = PackageMetadataMap() // otherwise this isn't copied, but referenced
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import org.robolectric.annotation.Config

@RunWith(AndroidJUnit4::class)
@Config(
sdk = [34], // TODO: Drop once robolectric supports 35
application = TestApp::class
)
internal class DocumentFileTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import kotlin.random.Random

@RunWith(AndroidJUnit4::class)
@Config(
sdk = [34], // TODO: Drop once robolectric supports 35
application = TestApp::class
)
internal class WebDavStoragePluginTest : TransportTest() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,16 @@ import org.junit.jupiter.api.Assertions.assertNull
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Assertions.fail
import org.junit.runner.RunWith
import org.robolectric.annotation.Config
import java.io.ByteArrayInputStream
import java.io.IOException
import kotlin.random.Random

@RunWith(AndroidJUnit4::class)
@OptIn(ExperimentalCoroutinesApi::class)
@Config(
sdk = [34] // TODO: Drop once robolectric supports 35
)
internal class AppSelectionManagerTest : TransportTest() {

private val storagePluginManager: StoragePluginManager = mockk()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,12 +118,12 @@ internal class ApkBackupRestoreTest : TransportTest() {
fun `test backup and restore with a split`(@TempDir tmpDir: Path) = runBlocking {
val apkBytes = byteArrayOf(0x04, 0x05, 0x06)
val tmpFile = File(tmpDir.toAbsolutePath().toString())
packageInfo.applicationInfo.sourceDir = File(tmpFile, "test.apk").apply {
packageInfo.applicationInfo!!.sourceDir = File(tmpFile, "test.apk").apply {
assertTrue(createNewFile())
writeBytes(apkBytes)
}.absolutePath
packageInfo.splitNames = arrayOf(splitName)
packageInfo.applicationInfo.splitSourceDirs = arrayOf(File(tmpFile, "split.apk").apply {
packageInfo.applicationInfo!!.splitSourceDirs = arrayOf(File(tmpFile, "split.apk").apply {
assertTrue(createNewFile())
writeBytes(splitBytes)
}.absolutePath)
Expand Down Expand Up @@ -167,7 +167,7 @@ internal class ApkBackupRestoreTest : TransportTest() {
coEvery { storagePlugin.getInputStream(token, name) } returns inputStream
every { pm.getPackageArchiveInfo(capture(apkPath), any<Int>()) } returns packageInfo
every { applicationInfo.loadIcon(pm) } returns icon
every { pm.getApplicationLabel(packageInfo.applicationInfo) } returns appName
every { pm.getApplicationLabel(packageInfo.applicationInfo!!) } returns appName
every {
splitCompatChecker.isCompatible(metadata.deviceName, listOf(splitName))
} returns true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ internal class ApkRestoreTest : TransportTest() {
} returns apkInputStream
every { pm.getPackageArchiveInfo(any(), any<Int>()) } returns packageInfo
every { applicationInfo.loadIcon(pm) } returns icon
every { pm.getApplicationLabel(packageInfo.applicationInfo) } returns appName
every { pm.getApplicationLabel(packageInfo.applicationInfo!!) } returns appName
coEvery {
apkInstaller.install(match { it.size == 1 }, packageName, installerName, any())
} returns installResult
Expand Down Expand Up @@ -706,7 +706,7 @@ internal class ApkRestoreTest : TransportTest() {
coEvery { storagePlugin.getInputStream(token, name) } returns apkInputStream
every { pm.getPackageArchiveInfo(any(), any<Int>()) } returns packageInfo
every { applicationInfo.loadIcon(pm) } returns icon
every { pm.getApplicationLabel(packageInfo.applicationInfo) } returns appName
every { pm.getApplicationLabel(packageInfo.applicationInfo!!) } returns appName
}

private suspend fun TurbineTestContext<InstallResult>.assertQueuedFailFinished() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import kotlin.random.Random

@RunWith(AndroidJUnit4::class)
@Config(
sdk = [34], // TODO: Drop once robolectric supports 35
application = TestApp::class
)
internal class DeviceInfoTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ internal class ApkBackupTest : BackupTest() {

@Test
fun `does not back up test-only apps`() = runBlocking {
packageInfo.applicationInfo.flags = FLAG_TEST_ONLY
packageInfo.applicationInfo!!.flags = FLAG_TEST_ONLY

every { settingsManager.isBackupEnabled(any()) } returns true
every { settingsManager.backupApks() } returns true
Expand All @@ -91,7 +91,7 @@ internal class ApkBackupTest : BackupTest() {

@Test
fun `does not back up system apps`() = runBlocking {
packageInfo.applicationInfo.flags = FLAG_SYSTEM
packageInfo.applicationInfo!!.flags = FLAG_SYSTEM

every { settingsManager.isBackupEnabled(any()) } returns true
every { settingsManager.backupApks() } returns true
Expand All @@ -100,7 +100,7 @@ internal class ApkBackupTest : BackupTest() {

@Test
fun `does not back up the same version`() = runBlocking {
packageInfo.applicationInfo.flags = FLAG_UPDATED_SYSTEM_APP
packageInfo.applicationInfo!!.flags = FLAG_UPDATED_SYSTEM_APP
val packageMetadata = packageMetadata.copy(
version = packageInfo.longVersionCode
)
Expand All @@ -112,7 +112,7 @@ internal class ApkBackupTest : BackupTest() {

@Test
fun `does back up the same version when signatures changes`() {
packageInfo.applicationInfo.sourceDir = "/tmp/doesNotExist"
packageInfo.applicationInfo!!.sourceDir = "/tmp/doesNotExist"

expectChecks()

Expand Down Expand Up @@ -140,7 +140,7 @@ internal class ApkBackupTest : BackupTest() {
fun `test successful APK backup`(@TempDir tmpDir: Path) = runBlocking {
val apkBytes = byteArrayOf(0x04, 0x05, 0x06)
val tmpFile = File(tmpDir.toAbsolutePath().toString())
packageInfo.applicationInfo.sourceDir = File(tmpFile, "test.apk").apply {
packageInfo.applicationInfo!!.sourceDir = File(tmpFile, "test.apk").apply {
assertTrue(createNewFile())
writeBytes(apkBytes)
}.absolutePath
Expand Down Expand Up @@ -174,7 +174,7 @@ internal class ApkBackupTest : BackupTest() {
// create base APK
val apkBytes = byteArrayOf(0x04, 0x05, 0x06) // not random because of hash
val tmpFile = File(tmpDir.toAbsolutePath().toString())
packageInfo.applicationInfo.sourceDir = File(tmpFile, "test.apk").apply {
packageInfo.applicationInfo!!.sourceDir = File(tmpFile, "test.apk").apply {
assertTrue(createNewFile())
writeBytes(apkBytes)
}.absolutePath
Expand All @@ -187,7 +187,7 @@ internal class ApkBackupTest : BackupTest() {
val split1Sha256 = "ZqZ1cVH47lXbEncWx-Pc4L6AdLZOIO2lQuXB5GypxB4"
val split2Bytes = byteArrayOf(0x01, 0x02, 0x03)
val split2Sha256 = "A5BYxvLAy0ksUzsKTRTvd8wPeKvMztUofYShogEc-4E"
packageInfo.applicationInfo.splitSourceDirs = arrayOf(
packageInfo.applicationInfo!!.splitSourceDirs = arrayOf(
File(tmpFile, "test-$split1Name.apk").apply {
assertTrue(createNewFile())
writeBytes(split1Bytes)
Expand Down
Binary file modified contactsbackup/libs/com.android.vcard.jar
Binary file not shown.
51 changes: 26 additions & 25 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@

[versions]
# Gradle plugin versions
androidGradlePlugin = "8.5.1"
androidGradlePlugin = "8.6.0"
protobufPlugin = "0.9.4"
ktlint = "11.5.0"

# Android SDK versions
compileSdk = "34"
compileSdk = "35"
minSdk = "34"
targetSdk = "34"
targetSdk = "35"

# Test versions
junit4 = "4.13.2"
Expand All @@ -31,47 +31,48 @@ espresso = "3.4.0"
# 1.8.10 Android 14
# 1.9.0 Android 14 (QPR2)
# 1.9.22 Android 14 (QPR3)
# Check: https://android.googlesource.com/platform/external/kotlinc/+/refs/tags/android-14.0.0_r53/build.txt
kotlin = { strictly = "1.9.22" }
ksp = "1.9.22-1.0.17" # Keep in match with kotlin version
# 1.9.23 Android 15
# Check: https://android.googlesource.com/platform/external/kotlinc/+/refs/tags/android-15.0.0_r1/build.txt
kotlin = { strictly = "1.9.23" }
ksp = "1.9.23-1.0.20" # Keep in match with kotlin version
dokka = "1.9.20" # Dokka has no releases after 1.9.20

# Lint versions
lint-rules = { strictly = "0.1.0" }

# Google versions
# https://android.googlesource.com/platform/external/protobuf/+/refs/tags/android-14.0.0_r53/java/pom.xml#7
# https://android.googlesource.com/platform/external/protobuf/+/refs/tags/android-15.0.0_r1/java/pom.xml#7
protobuf = { strictly = "3.21.12" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-14.0.0_r53/current/extras/material-design-x/Android.bp#15
material = { strictly = "1.7.0-alpha03" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/tags/android-15.0.0_r1/current/extras/material-design-x/Android.bp#7
material = { strictly = "1.11.0" }
# careful with upgrading tink, so old backups continue to be decryptable
# https://github.com/tink-crypto/tink-java/releases
tink = { strictly = "1.10.0" }

# Coroutines versions
# https://android.googlesource.com/platform/external/kotlinx.coroutines/+/refs/tags/android-14.0.0_r53/CHANGES.md
# https://android.googlesource.com/platform/external/kotlinx.coroutines/+/refs/tags/android-15.0.0_r1/CHANGES.md
coroutines = { strictly = "1.7.3" } # AOSP has 1.7.2 but several libs require 1.7.3

# AndroidX versions
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/room/room-ktx?autodive=0
room = { strictly = "2.7.0-alpha01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/core/core-ktx?autodive=0
androidx-core = { strictly = "1.13.0-beta01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/fragment/fragment-ktx?autodive=0
androidx-fragment = { strictly = "1.7.0-beta01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/activity/activity-ktx?autodive=0
androidx-activity = { strictly = "1.9.0-alpha03" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/room/room-ktx?autodive=0
room = { strictly = "2.7.0-alpha03" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/core/core-ktx?autodive=0
androidx-core = { strictly = "1.14.0-alpha01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/fragment/fragment-ktx?autodive=0
androidx-fragment = { strictly = "1.8.0-rc01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/activity/activity-ktx?autodive=0
androidx-activity = { strictly = "1.9.2" } # 1.10.0-alpha01 in AOSP but has compile SDK version issues
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r29/current/androidx/m2repository/androidx/preference/preference?autodive=0
androidx-preference = { strictly = "1.2.0-alpha01" } # 1.3.0-alpha01 in AOSP but isn't released
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/lifecycle/lifecycle-viewmodel-ktx?autodive=0
androidx-lifecycle-viewmodel-ktx = { strictly = "2.8.0-alpha02" }
androidx-lifecycle-livedata-ktx = { strictly = "2.8.0-alpha02" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/constraintlayout/constraintlayout?autodive=0
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/lifecycle/lifecycle-viewmodel-ktx?autodive=0
androidx-lifecycle-viewmodel-ktx = { strictly = "2.9.0-alpha01" }
androidx-lifecycle-livedata-ktx = { strictly = "2.9.0-alpha01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/constraintlayout/constraintlayout?autodive=0
androidx-constraintlayout = { strictly = "2.2.0-alpha13" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/documentfile/documentfile?autodive=0
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/documentfile/documentfile?autodive=0
androidx-documentfile = { strictly = "1.1.0-alpha01" } # 1.1.0-alpha02 in AOSP but isn't released
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-14.0.0_r53/current/androidx/m2repository/androidx/work/work-runtime-ktx?autodive=0
androidx-work-runtime = { strictly = "2.10.0-alpha01" }
# https://android.googlesource.com/platform/prebuilts/sdk/+/android-15.0.0_r1/current/androidx/m2repository/androidx/work/work-runtime-ktx?autodive=0
androidx-work-runtime = { strictly = "2.10.0-alpha02" }

[libraries]
# Kotlin standard dependencies
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
6 changes: 3 additions & 3 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#Thu May 30 09:49:42 IST 2024
#Mon Sep 09 11:23:59 IST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=d725d707bfabd4dfdc958c624003b3c80accc03f7037b5122c4b1d0ef15cecab
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionSha256Sum=5b9c5eb3f9fc2c94abaea57d90bd78747ca117ddbbf96c859d3741181a12bf2a
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Loading