diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 432244d16f2c..10b40b934747 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -5,6 +5,8 @@
+
+
+
+ android:stopWithTask="false"
+ android:foregroundServiceType="systemExempted"
+ tools:ignore="ForegroundServicePermission">
diff --git a/android/buildSrc/src/main/kotlin/Versions.kt b/android/buildSrc/src/main/kotlin/Versions.kt
index 4ceb4f787f52..06d5392f2f1c 100644
--- a/android/buildSrc/src/main/kotlin/Versions.kt
+++ b/android/buildSrc/src/main/kotlin/Versions.kt
@@ -14,10 +14,10 @@ object Versions {
const val billingClient = "6.0.1"
object Android {
- const val compileSdkVersion = 33
+ const val compileSdkVersion = 34
const val material = "1.9.0"
const val minSdkVersion = 26
- const val targetSdkVersion = 33
+ const val targetSdkVersion = 34
const val volley = "1.2.1"
}
@@ -51,7 +51,7 @@ object Versions {
// The androidAapt plugin version must be in sync with the android plugin version.
// Required for Gradle metadata verification to work properly, see:
// https://github.com/gradle/gradle/issues/19228
- const val android = "8.1.0"
+ const val android = "8.1.4"
const val androidAapt = "$android-10154469"
const val playPublisher = "3.8.4"
const val dependencyCheck = "8.3.1"
diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml
index 074e8a71a28e..6fc79e4bd9cb 100644
--- a/android/gradle/verification-metadata.xml
+++ b/android/gradle/verification-metadata.xml
@@ -850,14 +850,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -1458,13 +1458,13 @@
-
-
+
+
-
-
+
+
@@ -1478,125 +1478,125 @@
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
@@ -1604,36 +1604,36 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
@@ -1657,193 +1657,193 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
@@ -3408,11 +3408,6 @@
-
-
-
-
-
@@ -3506,11 +3501,6 @@
-
-
-
-
-
@@ -3581,11 +3571,6 @@
-
-
-
-
-
diff --git a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt
index c7b8992292f2..024522e94a64 100644
--- a/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt
+++ b/android/test/common/src/main/kotlin/net/mullvad/mullvadvpn/test/common/rule/CaptureScreenshotOnFailedTestRule.kt
@@ -69,7 +69,7 @@ class CaptureScreenshotOnFailedTestRule(private val testTag: String) : TestWatch
if (uri != null) {
contentResolver.openOutputStream(uri).use {
try {
- this.compress(Bitmap.CompressFormat.JPEG, 50, it)
+ this.compress(Bitmap.CompressFormat.JPEG, 50, it!!)
} catch (e: IOException) {
Log.e(testTag, "Unable to store screenshot: ${e.message}")
}