Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3fcca779 authored by Samiul Islam's avatar Samiul Islam
Browse files

Add workaround for handling versionMajor with string type

A bug in bundletool sets versionMajor as string instead of int. Until
it's fixed, we need to workaround it.

Bug: 379219371
Test: manully installed an apk that has versionMajor set to string
FLAG: android.content.pm.sdk_dependency_installer
Change-Id: Ie2a9809b49b4c7cd9136d610e98e6bd15a660ce6
parent 019d8152
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import android.util.Slog;

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 @@ public class ApkLiteParseUtils {
                            }
                            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");