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

Commit 7a39cc95 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[pm] check versionMajor on sdk lib package update" into main

parents 3dabeaba 4f203da1
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -1399,9 +1399,31 @@ final class InstallPackageHelper {
                                "Package " + pkgName + " is a persistent app. "
                                        + "Persistent apps are not updateable.");
                    }
                    // When updating an sdk library, make sure that the versionMajor is
                    // changed if the targetSdkVersion and minSdkVersion have changed
                    if (parsedPackage.isSdkLibrary() && ps.getPkg() != null
                            && ps.getPkg().isSdkLibrary()) {
                        final int oldMinSdk = ps.getPkg().getMinSdkVersion();
                        final int newMinSdk = parsedPackage.getMinSdkVersion();
                        if (oldTargetSdk != newTargetSdk || oldMinSdk != newMinSdk) {
                            final int oldVersionMajor = ps.getPkg().getSdkLibVersionMajor();
                            final int newVersionMajor = parsedPackage.getSdkLibVersionMajor();
                            if (oldVersionMajor == newVersionMajor) {
                                throw new PrepareFailure(
                                        PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE,
                                        "Failure updating " + pkgName + " as it updates"
                                                + " an sdk library <"
                                                + parsedPackage.getSdkLibraryName() + ">"
                                                + " without changing the versionMajor, but the"
                                                + " targetSdkVersion or minSdkVersion has changed."
                                );
                            }
                        }
                    }
                }

            }

            PackageSetting signatureCheckPs = ps;

            // SDK libs can have other major versions with different package names.