diff --git a/android/app/src/main/java/org/chromium/base/ObserverList.java b/android/app/src/main/java/org/chromium/base/ObserverList.java
index 16ae0d08b..fa6bc36ba 100644
--- a/android/app/src/main/java/org/chromium/base/ObserverList.java
+++ b/android/app/src/main/java/org/chromium/base/ObserverList.java
@@ -12,8 +12,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
-import javax.annotation.concurrent.NotThreadSafe;
-
/**
* A container for a list of observers.
*
@@ -31,7 +29,6 @@ import javax.annotation.concurrent.NotThreadSafe;
*
* @param The type of observers that this list should hold.
*/
-@NotThreadSafe
public class ObserverList implements Iterable {
/** Extended iterator interface that provides rewind functionality. */
public interface RewindableIterator extends Iterator {
diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml
index 28e4418ab..9613d2668 100644
--- a/android/gradle/libs.versions.toml
+++ b/android/gradle/libs.versions.toml
@@ -1,6 +1,6 @@
[versions]
-androidGradlePlugin = "8.9.3"
-androidxCarApp = "1.7.0-rc01"
+androidGradlePlugin = "8.10.1"
+androidxCarApp = "1.7.0"
[libraries]
android-tools = { module = "com.android.tools.build:gradle", version.ref = "androidGradlePlugin" }
@@ -18,10 +18,10 @@ androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayo
androidx-fragment = { module = "androidx.fragment:fragment", version = "1.8.8" }
androidx-preference = { module = "androidx.preference:preference", version = "1.2.1" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version = "1.4.0" }
-androidx-work-runtime = { module = "androidx.work:work-runtime", version = "2.10.1" }
-androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version = "2.9.1" }
+androidx-work-runtime = { module = "androidx.work:work-runtime", version = "2.10.2" }
+androidx-lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version = "2.9.2" }
android-material = { module = "com.google.android.material:material", version = "1.12.0" }
-google-guava = { module = "com.google.guava:guava", version = "33.3.1-android" }
+google-guava = { module = "com.google.guava:guava", version = "33.4.8-android" }
devnullorthrow-mpandroidchart = { module = "com.github.devnullorthrow:MPAndroidChart", version = "3.2.0-alpha" }
jcip-annotations = { module = "net.jcip:jcip-annotations", version = "1.0" }
androidx-test-junit = { module = "androidx.test.ext:junit", version = "1.2.1" }
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
index 9bbc975c7..1b33c55ba 100644
Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index ccf4a0811..925106986 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,8 +1,8 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionSha256Sum=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78
+distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531
diff --git a/android/gradlew b/android/gradlew
index faf93008b..23d15a936 100755
--- a/android/gradlew
+++ b/android/gradlew
@@ -114,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -213,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
diff --git a/android/gradlew.bat b/android/gradlew.bat
index 9d21a2183..db3a6ac20 100644
--- a/android/gradlew.bat
+++ b/android/gradlew.bat
@@ -70,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell