diff options
author | 2024-04-15 13:49:48 +0000 | |
---|---|---|
committer | 2025-04-01 20:40:30 -0700 | |
commit | a89cb70d5d1b51e47f249a9b6d0709ffa81f1b95 (patch) | |
tree | e684f0a801cbf19b531d7e17f408c89300224394 /services | |
parent | 140ff5c85a1ed8108934f73531b7e869ae93c29c (diff) |
add wear-sdk bootclasspath jars
This change updates packages to remove the unused uses-library
Bug: b/331485125
Test: manual build/boot
Flag: NONE exempt wear only config change
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:0fb53884f33f81a3771cbb430af097b0f222572a)
Merged-In: Ifd6944f91d147900f800c495549fb518d1ee143d
Change-Id: Ifd6944f91d147900f800c495549fb518d1ee143d
Diffstat (limited to 'services')
3 files changed, 138 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java b/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java index fe9cd0eec4a6..b61b9d182c99 100644 --- a/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java +++ b/services/core/java/com/android/server/pm/parsing/library/PackageBackwardCompatibility.java @@ -46,6 +46,9 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater { static { final List<PackageSharedLibraryUpdater> packageUpdaters = new ArrayList<>(); + // Remove wear-sdk, it is added to boot classpath since Android Baklava. + packageUpdaters.add(new WearSdkUpdater()); + // Remove android.net.ipsec.ike library, it is added to boot classpath since Android S. packageUpdaters.add(new AndroidNetIpSecIkeUpdater()); diff --git a/services/core/java/com/android/server/pm/parsing/library/WearSdkUpdater.java b/services/core/java/com/android/server/pm/parsing/library/WearSdkUpdater.java new file mode 100644 index 000000000000..43ab3d1c7ae5 --- /dev/null +++ b/services/core/java/com/android/server/pm/parsing/library/WearSdkUpdater.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.server.pm.parsing.library; + +import com.android.internal.pm.parsing.pkg.ParsedPackage; +import com.android.internal.util.ArrayUtils; + +import java.util.List; + +public class WearSdkUpdater extends PackageSharedLibraryUpdater { + + private static final String LIBRARY_NAME = "wear-sdk"; + + /** + * Update the package's shared libraries. + * + * @param parsedPackage the package to update. + */ + @Override + public void updatePackage(ParsedPackage parsedPackage, boolean isSystemApp, + boolean isUpdatedSystemApp) { + + List<String> usesLibraries = parsedPackage.getUsesLibraries(); + List<String> usesOptionalLibraries = parsedPackage.getUsesOptionalLibraries(); + + if (ArrayUtils.contains(usesLibraries, LIBRARY_NAME) + || ArrayUtils.contains(usesOptionalLibraries, LIBRARY_NAME)) { + removeLibrary(parsedPackage, LIBRARY_NAME); + } + } +} diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/parsing/library/WearSdkUpdaterTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/parsing/library/WearSdkUpdaterTest.java new file mode 100644 index 000000000000..b9d22e24a667 --- /dev/null +++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/parsing/library/WearSdkUpdaterTest.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.pm.parsing.library; + +import android.os.Build; +import android.platform.test.annotations.Presubmit; + +import androidx.test.filters.SmallTest; + +import com.android.internal.pm.parsing.pkg.PackageImpl; +import com.android.internal.pm.parsing.pkg.ParsedPackage; +import com.android.server.pm.pkg.AndroidPackage; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * Test for {@link WearSdkUpdater} + */ +@Presubmit +@SmallTest +@RunWith(JUnit4.class) +public class WearSdkUpdaterTest extends PackageSharedLibraryUpdaterTest { + + @Test + public void otherUsesLibraries() { + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.BAKLAVA) + .addUsesLibrary("other") + .addUsesOptionalLibrary("optional") + .addUsesLibrary("wear-sdk") + .hideAsParsed()); + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.BAKLAVA) + .addUsesLibrary("other") + .addUsesOptionalLibrary("optional") + .hideAsParsed()) + .hideAsFinal(); + checkBackwardsCompatibility(before, after, false); + } + + @Test + public void in_usesLibraries() { + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) + .addUsesLibrary("wear-sdk") + .hideAsParsed()); + + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) + .hideAsParsed()) + .hideAsFinal(); + + checkBackwardsCompatibility(before, after, false); + } + + @Test + public void in_usesOptionalLibraries() { + ParsedPackage before = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) + .addUsesOptionalLibrary("wear-sdk") + .hideAsParsed()); + + AndroidPackage after = ((ParsedPackage) PackageImpl.forTesting(PACKAGE_NAME) + .setTargetSdkVersion(Build.VERSION_CODES.CUR_DEVELOPMENT) + .hideAsParsed()) + .hideAsFinal(); + + checkBackwardsCompatibility(before, after, false); + } + + private void checkBackwardsCompatibility(ParsedPackage before, AndroidPackage after, + boolean isSystemApp) { + checkBackwardsCompatibility(before, after, isSystemApp, WearSdkUpdater::new); + } +} |