Merge "Add workaround for handling versionMajor with string type" into main
diff --git a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
index 8ba556d..7254203 100644
--- a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
+++ b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
@@ -44,6 +44,7 @@
 
 import com.android.internal.pm.pkg.component.flags.Flags;
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.XmlUtils;
 
 import libcore.io.IoUtils;
 import libcore.util.HexEncoding;
@@ -543,8 +544,13 @@
                             }
                             String usesSdkLibName = parser.getAttributeValue(
                                     ANDROID_RES_NAMESPACE, "name");
-                            long usesSdkLibVersionMajor = parser.getAttributeIntValue(
-                                    ANDROID_RES_NAMESPACE, "versionMajor", -1);
+                            // TODO(b/379219371): Due to a bug in bundletool, some apps can use
+                            //  versionMajor as string. Until it is resolved, we are adding a
+                            //  workaround here.
+                            String usesSdkLibVersionMajorString = parser.getAttributeValue(
+                                    ANDROID_RES_NAMESPACE, "versionMajor");
+                            long usesSdkLibVersionMajor = XmlUtils.convertValueToInt(
+                                    usesSdkLibVersionMajorString, -1);
                             String usesSdkCertDigest = parser.getAttributeValue(
                                      ANDROID_RES_NAMESPACE, "certDigest");