Merge "Replace direct cgroup access with task profiles"
diff --git a/apexd/apex_constants.h b/apexd/apex_constants.h
index 2c3ea92..e8995ee 100644
--- a/apexd/apex_constants.h
+++ b/apexd/apex_constants.h
@@ -39,6 +39,8 @@
static constexpr const char* kStagedSessionsDir = "/data/app-staging";
static constexpr const char* kApexDataSubDir = "apexdata";
+// TODO(b/161542925) reject any apex with name equal to kApexSharedLibsSubDir
+static constexpr const char* kApexSharedLibsSubDir = "sharedlibs";
static constexpr const char* kApexSnapshotSubDir = "apexrollback";
static constexpr const char* kPreRestoreSuffix = "-prerestore";
diff --git a/apexd/apexd.cpp b/apexd/apexd.cpp
index afd4eb6..e12428b 100644
--- a/apexd/apexd.cpp
+++ b/apexd/apexd.cpp
@@ -1022,6 +1022,59 @@
return revertActiveSessions("");
}
+Result<void> activateSharedLibsPackage(const std::string& mountPoint) {
+ for (const auto& libPath : {"lib", "lib64"}) {
+ std::string apexLibPath = mountPoint + "/" + libPath;
+ if (!std::filesystem::exists(apexLibPath)) {
+ continue;
+ }
+
+ for (const auto& lib_entry :
+ std::filesystem::directory_iterator(apexLibPath)) {
+ if (!lib_entry.is_directory()) {
+ continue;
+ }
+
+ const auto library_name = lib_entry.path().filename();
+ const std::string library_symlink_dir =
+ StringPrintf("%s/%s/%s/%s", kApexRoot, kApexSharedLibsSubDir, libPath,
+ library_name.c_str());
+
+ if (!std::filesystem::exists(library_symlink_dir)) {
+ std::error_code error_code;
+ std::filesystem::create_directory(library_symlink_dir, error_code);
+ if (error_code) {
+ return Error() << "Failed to create directory " << library_symlink_dir
+ << ": " << error_code.message();
+ }
+ }
+
+ for (const auto& lib_items :
+ std::filesystem::directory_iterator(lib_entry.path().string())) {
+ const auto hash_value = lib_items.path().filename();
+ const std::string library_symlink_hash = StringPrintf(
+ "%s/%s", library_symlink_dir.c_str(), hash_value.c_str());
+
+ if (std::filesystem::exists(library_symlink_hash)) {
+ // TODO(b/161542925) : Handle symlink from different sharedlibs APEX
+ // with same hash value
+ continue;
+ }
+ std::error_code error_code;
+ std::filesystem::create_directory_symlink(
+ lib_items.path(), library_symlink_hash, error_code);
+ if (error_code) {
+ return Error() << "Failed to create symlink from " << lib_items.path()
+ << " to " << library_symlink_hash
+ << error_code.message();
+ }
+ }
+ }
+ }
+
+ return {};
+}
+
Result<void> activatePackageImpl(const ApexFile& apex_file) {
const ApexManifest& manifest = apex_file.GetManifest();
@@ -1029,7 +1082,6 @@
// version. Also detect whether this is the highest version.
// We roll this into a single check.
bool is_newest_version = true;
- bool found_other_version = false;
bool version_found_mounted = false;
{
uint64_t new_version = manifest.version();
@@ -1040,7 +1092,6 @@
if (!otherApex.ok()) {
return;
}
- found_other_version = true;
if (static_cast<uint64_t>(otherApex->GetManifest().version()) ==
new_version) {
version_found_mounted = true;
@@ -1051,7 +1102,12 @@
is_newest_version = false;
}
});
- if (version_found_active) {
+ // If the package provides shared libraries to other APEXs, we need to
+ // activate all versions available (i.e. preloaded on /system/apex and
+ // available on /data/apex/active). The reason is that there might be some
+ // APEXs loaded from /system/apex that reference the libraries contained on
+ // the preloaded version of the apex providing shared libraries.
+ if (version_found_active && !manifest.providesharedapexlibs()) {
LOG(DEBUG) << "Package " << manifest.name() << " with version "
<< manifest.version() << " already active";
return {};
@@ -1067,19 +1123,38 @@
}
}
- bool mounted_latest = false;
- if (is_newest_version) {
- const Result<void>& update_st = apexd_private::BindMount(
- apexd_private::GetActiveMountPoint(manifest), mountPoint);
- mounted_latest = update_st.has_value();
- if (!update_st.ok()) {
- return Error() << "Failed to update package " << manifest.name()
- << " to version " << manifest.version() << " : "
- << update_st.error();
+ // For packages providing shared libraries, avoid creating a bindmount since
+ // there is no use for the /apex/<package_name> directory. However, mark the
+ // highest version as latest so that the latest version of the package can be
+ // properly reported to PackageManager.
+ if (manifest.providesharedapexlibs()) {
+ if (is_newest_version) {
+ gMountedApexes.SetLatest(manifest.name(), apex_file.GetPath());
+ }
+ } else {
+ bool mounted_latest = false;
+ // Bind mount the latest version to /apex/<package_name>, unless the
+ // package provides shared libraries to other APEXs.
+ if (is_newest_version) {
+ const Result<void>& update_st = apexd_private::BindMount(
+ apexd_private::GetActiveMountPoint(manifest), mountPoint);
+ mounted_latest = update_st.has_value();
+ if (!update_st.ok()) {
+ return Error() << "Failed to update package " << manifest.name()
+ << " to version " << manifest.version() << " : "
+ << update_st.error();
+ }
+ }
+ if (mounted_latest) {
+ gMountedApexes.SetLatest(manifest.name(), apex_file.GetPath());
}
}
- if (mounted_latest) {
- gMountedApexes.SetLatest(manifest.name(), apex_file.GetPath());
+
+ if (manifest.providesharedapexlibs()) {
+ const auto& handleSharedLibsApex = activateSharedLibsPackage(mountPoint);
+ if (!handleSharedLibsApex.ok()) {
+ return handleSharedLibsApex;
+ }
}
LOG(DEBUG) << "Successfully activated " << apex_file.GetPath()
@@ -1297,19 +1372,46 @@
}
Result<void> ActivateApexPackages(const std::vector<ApexFile>& apexes) {
+ // Creates /apex/sharedlibs/lib{,64}.
+ std::string sharedLibsSubDir =
+ StringPrintf("%s/%s", kApexRoot, kApexSharedLibsSubDir);
+ if (!std::filesystem::exists(sharedLibsSubDir)) {
+ std::error_code error_code;
+ std::filesystem::create_directory(sharedLibsSubDir, error_code);
+ if (error_code) {
+ return Error() << "Failed to create directory " << sharedLibsSubDir
+ << ": " << error_code.message();
+ }
+ }
+ for (const auto& libPath : {"lib", "lib64"}) {
+ std::string apexLibPath =
+ StringPrintf("%s/%s", sharedLibsSubDir.c_str(), libPath);
+ if (!std::filesystem::exists(apexLibPath)) {
+ std::error_code error_code;
+ std::filesystem::create_directory(apexLibPath, error_code);
+ if (error_code) {
+ return Error() << "Failed to create directory " << apexLibPath << ": "
+ << error_code.message();
+ }
+ }
+ }
+
const auto& packages_with_code = GetActivePackagesMap();
size_t failed_cnt = 0;
size_t skipped_cnt = 0;
size_t activated_cnt = 0;
for (const auto& apex : apexes) {
- uint64_t new_version = static_cast<uint64_t>(apex.GetManifest().version());
- const auto& it = packages_with_code.find(apex.GetManifest().name());
- if (it != packages_with_code.end() && it->second >= new_version) {
- LOG(INFO) << "Skipping activation of " << apex.GetPath()
- << " same package with higher version " << it->second
- << " is already active";
- skipped_cnt++;
- continue;
+ if (!apex.GetManifest().providesharedapexlibs()) {
+ uint64_t new_version =
+ static_cast<uint64_t>(apex.GetManifest().version());
+ const auto& it = packages_with_code.find(apex.GetManifest().name());
+ if (it != packages_with_code.end() && it->second >= new_version) {
+ LOG(INFO) << "Skipping activation of " << apex.GetPath()
+ << " same package with higher version " << it->second
+ << " is already active";
+ skipped_cnt++;
+ continue;
+ }
}
if (auto res = activatePackageImpl(apex); !res.ok()) {
@@ -2246,6 +2348,13 @@
gMountedApexes.ForallMountedApexes([&](const std::string& package,
const MountedApexData& data,
bool latest) {
+ Result<ApexFile> apex = ApexFile::Open(data.full_path);
+ if (!apex.ok()) {
+ return;
+ }
+ if (apex->GetManifest().providesharedapexlibs()) {
+ return;
+ }
if (!latest) {
danglings.insert({package, data});
}
diff --git a/proto/apex_manifest.proto b/proto/apex_manifest.proto
index 54a63e7..004b53d 100644
--- a/proto/apex_manifest.proto
+++ b/proto/apex_manifest.proto
@@ -59,5 +59,11 @@
// List of libs required that are located in a shared libraries APEX.
// Format of the content is 'library:hash'.
// Example) libc++.so:83d8f50...
+ // TODO(b/161542925) rename to requireSharedApexLibs for consistency.
repeated string sharedApexLibs = 10;
+
+ // Whether this APEX provides libraries to be shared with other APEXs. This
+ // causes libraries contained in the APEX to be made available under
+ // /apex/sharedlibs .
+ bool provideSharedApexLibs = 11;
}
diff --git a/tests/Android.bp b/tests/Android.bp
index cf2e119..c1b67bc 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -182,6 +182,7 @@
":com.android.apex.test.bar_stripped.v2.libvY_prebuilt",
":com.android.apex.test.bar.v1.libvX_prebuilt",
":com.android.apex.test.bar.v2.libvY_prebuilt",
+ ":com.android.apex.test.baz_stripped.v1.libvX_prebuilt",
":com.android.apex.test.foo_stripped.v1.libvX_prebuilt",
":com.android.apex.test.foo_stripped.v2.libvY_prebuilt",
":com.android.apex.test.foo.v1.libvX_prebuilt",
diff --git a/tests/src/com/android/tests/apex/SharedLibsApexTest.java b/tests/src/com/android/tests/apex/SharedLibsApexTest.java
index 130573d..362b385 100644
--- a/tests/src/com/android/tests/apex/SharedLibsApexTest.java
+++ b/tests/src/com/android/tests/apex/SharedLibsApexTest.java
@@ -47,6 +47,7 @@
enum ApexName {
FOO,
BAR,
+ BAZ,
SHAREDLIBS
}
@@ -80,6 +81,9 @@
case BAR:
ret.append("bar");
break;
+ case BAZ:
+ ret.append("baz");
+ break;
case SHAREDLIBS:
ret.append("sharedlibs_generated");
break;
@@ -167,6 +171,11 @@
assumeTrue("Device does not support updating APEX", mHostUtils.isApexUpdateSupported());
assumeTrue("Device requires root", getDevice().isAdbRoot());
+ // Pre-installed on /system:
+ // package bar version 1 using library version X
+ // package foo version 1 using library version X
+ // package sharedlibs version 1 exporting library version X
+
for (String apex : new String[]{
getTestApex(ApexName.BAR, ApexType.STRIPPED, ApexVersion.ONE, SharedLibsVersion.X),
getTestApex(ApexName.FOO, ApexType.STRIPPED, ApexVersion.ONE, SharedLibsVersion.X),
@@ -186,6 +195,11 @@
"/apex/com.android.apex.test.bar/bin/bar_test");
assertThat(runAsResult).isEqualTo("BAR_VERSION_1 SHARED_LIB_VERSION_X");
+ // Updated packages (installed on /data/apex/active):
+ // package bar version 2 using library version Y
+ // package foo version 2 using library version Y
+ // package sharedlibs version 2 exporting library version Y
+
mPreparer.stageMultiplePackages(
new String[]{
getTestApex(ApexName.BAR, ApexType.STRIPPED, ApexVersion.TWO, SharedLibsVersion.Y),
@@ -205,5 +219,34 @@
runAsResult = getDevice().executeShellCommand(
"/apex/com.android.apex.test.bar/bin/bar_test");
assertThat(runAsResult).isEqualTo("BAR_VERSION_2 SHARED_LIB_VERSION_Y");
+
+ // Assume that an OTA now adds a package baz on /system needing libraries installed on
+ // /system:
+ //
+ // Pre-installed:
+ // (inactive) package bar version 1 using library version X
+ // package baz version 1 using library version X
+ // (inactive) package foo version 1 using library version X
+ // package sharedlibs version 1 exporting library version X
+ //
+ // Updated packages (installed on /data/apex/active):
+ // package bar version 2 using library version Y
+ // package foo version 2 using library version Y
+ // package sharedlibs version 2 exporting library version Y
+
+ String baz_apex =
+ getTestApex(ApexName.BAZ, ApexType.STRIPPED, ApexVersion.ONE, SharedLibsVersion.X);
+ mPreparer.pushResourceFile(baz_apex, "/system/apex/" + baz_apex);
+ mPreparer.reboot();
+
+ runAsResult = getDevice().executeShellCommand(
+ "/apex/com.android.apex.test.foo/bin/foo_test");
+ assertThat(runAsResult).isEqualTo("FOO_VERSION_2 SHARED_LIB_VERSION_Y");
+ runAsResult = getDevice().executeShellCommand(
+ "/apex/com.android.apex.test.bar/bin/bar_test");
+ assertThat(runAsResult).isEqualTo("BAR_VERSION_2 SHARED_LIB_VERSION_Y");
+ runAsResult = getDevice().executeShellCommand(
+ "/apex/com.android.apex.test.baz/bin/baz_test");
+ assertThat(runAsResult).isEqualTo("BAZ_VERSION_1 SHARED_LIB_VERSION_X");
}
}
diff --git a/tests/testdata/sharedlibs/build/Android.bp b/tests/testdata/sharedlibs/build/Android.bp
index 7132696..e228831 100644
--- a/tests/testdata/sharedlibs/build/Android.bp
+++ b/tests/testdata/sharedlibs/build/Android.bp
@@ -49,6 +49,7 @@
],
apex_available: [
"com.android.apex.test.bar",
+ "com.android.apex.test.baz",
"com.android.apex.test.foo",
"com.android.apex.test.sharedlibs_stub",
],
diff --git a/tests/testdata/sharedlibs/build/build_artifacts.sh b/tests/testdata/sharedlibs/build/build_artifacts.sh
index c80456a..a584da7 100755
--- a/tests/testdata/sharedlibs/build/build_artifacts.sh
+++ b/tests/testdata/sharedlibs/build/build_artifacts.sh
@@ -6,6 +6,7 @@
com.android.apex.test.bar_stripped.v2.libvY.apex
com.android.apex.test.bar.v1.libvX.apex
com.android.apex.test.bar.v2.libvY.apex
+ com.android.apex.test.baz_stripped.v1.libvX.apex
com.android.apex.test.foo_stripped.v1.libvX.apex
com.android.apex.test.foo_stripped.v2.libvY.apex
com.android.apex.test.foo.v1.libvX.apex
@@ -23,6 +24,7 @@
# "genrule" type build targets to build, and directory they are built from.
GENRULE_TARGETS=(
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.bar:com.android.apex.test.bar_stripped
+ system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.baz:com.android.apex.test.baz_stripped
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.foo:com.android.apex.test.foo_stripped
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.sharedlibs:com.android.apex.test.sharedlibs_generated
)
@@ -76,6 +78,7 @@
apexfingerprint="VERSION_${apexversion}"
sed -i "s/#define FINGERPRINT .*/#define FINGERPRINT \"${apexfingerprint}\"/g" \
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.bar/bar_test.cc \
+ system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.baz/baz_test.cc \
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.foo/foo_test.cc
for d in "${manifestdirs[@]}"; do
@@ -178,6 +181,7 @@
sed -i "s/#define FINGERPRINT .*/#define FINGERPRINT \"VERSION_XXX\"/g" \
system/apex/tests/testdata/sharedlibs/build/sharedlibstest.cpp \
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.bar/bar_test.cc \
+system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.baz/baz_test.cc \
system/apex/tests/testdata/sharedlibs/build/com.android.apex.test.foo/foo_test.cc
for d in "${manifestdirs[@]}"; do
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/Android.bp b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/Android.bp
new file mode 100644
index 0000000..c1a0ade
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/Android.bp
@@ -0,0 +1,71 @@
+// Copyright (C) 2020 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.
+apex_key {
+ name: "com.android.apex.test.baz.key",
+ public_key: "com.android.apex.test.baz.avbpubkey",
+ private_key: "com.android.apex.test.baz.pem",
+}
+
+android_app_certificate {
+ name: "com.android.apex.test.baz.certificate",
+ certificate: "com.android.apex.test.baz",
+}
+
+apex {
+ name: "com.android.apex.test.baz",
+ manifest: "manifest.json",
+ file_contexts: ":apex.test-file_contexts",
+ key: "com.android.apex.test.baz.key",
+ installable: false,
+ binaries: [ "baz_test" ],
+}
+
+cc_binary {
+ name: "baz_test",
+ srcs: ["baz_test.cc"],
+ shared_libs: [
+ "libsharedlibtest",
+ ],
+ apex_available: [ "com.android.apex.test.baz" ],
+}
+
+genrule {
+ name: "com.android.apex.test.baz_stripped",
+ out: ["com.android.apex.test.baz_stripped.apex"],
+ dist: {
+ targets: ["sharedlibs_test_genfile"],
+ },
+ srcs: [
+ ":com.android.apex.test.baz",
+ "com.android.apex.test.baz.avbpubkey",
+ "com.android.apex.test.baz.pem",
+ "com.android.apex.test.baz.pk8",
+ "com.android.apex.test.baz.x509.pem",
+ ],
+ tools: [
+ "apexer",
+ "debugfs_static",
+ "shared_libs_repack",
+ "signapk",
+ ],
+ cmd: "$(location shared_libs_repack) " +
+ " --mode strip" +
+ " --key $(location com.android.apex.test.baz.pem)" +
+ " --input $(location :com.android.apex.test.baz)" +
+ " --output $(genDir)/com.android.apex.test.baz_stripped.apex" +
+ " --pk8key $(location com.android.apex.test.baz.pk8)" +
+ " --pubkey $(location com.android.apex.test.baz.avbpubkey)" +
+ " --x509key $(location com.android.apex.test.baz.x509.pem)" +
+ " --tmpdir $(genDir)",
+}
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/AndroidManifest.xml b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/AndroidManifest.xml
new file mode 100644
index 0000000..d03d323
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/AndroidManifest.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.apex.test.baz">
+ <!-- APEX does not have classes.dex -->
+ <application android:hasCode="false" />
+</manifest>
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/baz_test.cc b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/baz_test.cc
new file mode 100644
index 0000000..ea5b341
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/baz_test.cc
@@ -0,0 +1,13 @@
+#include <iostream>
+#include <string>
+
+#include "sharedlibstest.h"
+
+// This parameter gets modified by the build_artifacts.sh script.
+#define FINGERPRINT "VERSION_XXX"
+
+int main() {
+ std::cout << "BAZ_" << FINGERPRINT << " "
+ << sharedlibstest::getSharedLibsTestFingerprint();
+ return 0;
+}
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.avbpubkey b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.avbpubkey
new file mode 100644
index 0000000..ef865d7
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.avbpubkey
Binary files differ
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.pem b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.pem
new file mode 100644
index 0000000..ee8b8a6
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.pem
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+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
+-----END RSA PRIVATE KEY-----
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.pk8 b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.pk8
new file mode 100644
index 0000000..37948c1
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.pk8
Binary files differ
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.x509.pem b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.x509.pem
new file mode 100644
index 0000000..d41d86c
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/com.android.apex.test.baz.x509.pem
@@ -0,0 +1,34 @@
+-----BEGIN CERTIFICATE-----
+MIIF1zCCA78CFAgqiNJewYXPYz+41LOIDLe9lXnzMA0GCSqGSIb3DQEBCwUAMIGm
+MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91
+bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDEi
+MCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTEiMCAGA1UEAwwZY29t
+LmFuZHJvaWQuYXBleC50ZXN0LmJhejAgFw0yMDExMTAwOTIzNTJaGA80NzU4MTAw
+NzA5MjM1MlowgaYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw
+FAYDVQQHDA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQL
+DAdBbmRyb2lkMSIwIAYJKoZIhvcNAQkBFhNhbmRyb2lkQGFuZHJvaWQuY29tMSIw
+IAYDVQQDDBljb20uYW5kcm9pZC5hcGV4LnRlc3QuYmF6MIICIjANBgkqhkiG9w0B
+AQEFAAOCAg8AMIICCgKCAgEAtm4cczWBEzR+kzRPHsBh61ihAQNtWN2mKLhZZKRS
+YrNZ59+M53menjsc1Bs5fYvKTMGj2u2a/yvq0QiSAlgVMY+1aZ40FN22tBTmy4yr
+6iTMi9Q+uUbQJlHLWSy8n3oFuxEHAP96ZPDJyqPHSJpKeSPKIgwyw3I+nXb/fmB4
+HvBmjHbFnwvKqHFyoEm5p/wGZn2vMtxZqlignNtUZr2zYTJW9YCuL80L/o1jdAFk
+5sHH1tBEcp1ZTXRgKm2XFfp7fqfOWkS9XL3VUF0LVWMgyv0u2fr7n8TPZb8iz5PA
+naCUN9hCoPrj4vg29eVYy2IoeSrLOAUiK986mZDToKbhxuLSHVV+IRNnqIQV0+mu
+rR8OCqDlWbD+fU29cacAjGFt72unLAIEE49GHZFS2pTZ0cDXX1bBUrBVTMlcnCjn
+YiU7XtPaJGelBkJEu/ErjHE9TrsQGKkzMwd2ySTOsk3K4OtWl+E9i50TW8Vu7gR+
+Qr4lZvY90OmXw+k02pkCo5g1GU8uXoTPjd0JQsmiEk01dMIPyWxXBYiuiRUxu3mc
+vYJJGKZSMX3VKKYmtFN9lTuf/OyjztHjRQPit9sWVcYgKuy0kw1LQSJxtyNQIeFm
+ipZVzh8Wo2TMm8argWMPHxyIfjEiVbNhXirC4My0Z02agyyB4Edxg2jkiKQBss3y
+/IECAwEAATANBgkqhkiG9w0BAQsFAAOCAgEArOMz9Hn03yy2ano628v0wXMFixVA
+/XzSpb8GWi4GzJxV96c9t6QQPVdo/XS0uBuEa2Uc0/W5icU9+iKzBvQHM3MI1jI6
+/oj8/mGAzvyvIA0pdKP1XOvugsgi2UDNr5QNgZ1UPIpVkzeBQpLgTiWL70Pl/znE
+b7Q1nKEFeNWxBaMk6u6n6gNh6sMLv1doSCi0FM1cnWHv/0qxPizGjTHKmGs4TbMZ
+zWnBoH8XSMxruAEbucl1E7vYXgYthOW0I+SCFpyP53e9VdoNNYWMeNKCm3EoIY86
+XWLArBBQcCCrsLas45670ouQ/H9Yn498MwFinuWcsfROghXQwhn7fPaDQ2oVlftj
+4LQS2vD20mJV15wa/1n/VDzRAxIZwPdtbJX6JZO8E7Oc0+WSehwhaU+x7k9GYyBv
+tiEGS297qZC0/WvoE3VtRHZjOzphxt6PLelCEoqhdZy+q0uGxj8TmPRXo9xtmBLH
+6GPgZe3dR2SJ4uMqBjt6/6/Rki3du3btAn2O4b0Zf6h3wftqK6INbsJ7fRpIgLaU
+GvCZiCUZaxkNcCO94RnZJrTTVO1rJ1ZBkcqyMHvrSRhPCAyH2zVtHcNDCiR06GNA
++7P5SuyntvmnZKteKc2HdTnm42ewIXyDIwTs1crc8/luevw81s+SJqWumSGTxpfU
+IAM423xlNZfBXZA=
+-----END CERTIFICATE-----
diff --git a/tests/testdata/sharedlibs/build/com.android.apex.test.baz/manifest.json b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/manifest.json
new file mode 100644
index 0000000..1c57f3a
--- /dev/null
+++ b/tests/testdata/sharedlibs/build/com.android.apex.test.baz/manifest.json
@@ -0,0 +1,4 @@
+{
+ "name": "com.android.apex.test.baz",
+ "version": 1
+}
diff --git a/tests/testdata/sharedlibs/build/shared_libs_repack.py b/tests/testdata/sharedlibs/build/shared_libs_repack.py
index c82c131..04e59b5 100644
--- a/tests/testdata/sharedlibs/build/shared_libs_repack.py
+++ b/tests/testdata/sharedlibs/build/shared_libs_repack.py
@@ -279,8 +279,7 @@
basename = os.path.basename(lib_path_hash[0])
pb.sharedApexLibs.append(basename + ':' + lib_path_hash[1])
# Replace existing library with symlink
- symlink_dst = os.path.join('/', 'apex',
- 'com.android.apex.test.sharedlibs',
+ symlink_dst = os.path.join('/', 'apex', 'sharedlibs',
libpath, basename, lib_path_hash[1],
basename)
os.remove(lib_path_hash[0])
@@ -297,6 +296,15 @@
f.write(pb.SerializeToString())
if args.mode == 'sharedlibs':
+ # Sharedlibs mode. Mark in the APEX manifest that this package contains
+ # shared libraries.
+ pb = apex_manifest_pb2.ApexManifest()
+ with open(container_files['apex_manifest.pb'], 'rb') as f:
+ pb.ParseFromString(f.read())
+ pb.provideSharedApexLibs = True
+ with open(container_files['apex_manifest.pb'], 'wb') as f:
+ f.write(pb.SerializeToString())
+
pb = apex_build_info_pb2.ApexBuildInfo()
with open(container_files['apex_build_info.pb'], 'rb') as f:
pb.ParseFromString(f.read())
diff --git a/tests/testdata/sharedlibs/prebuilts/Android.bp b/tests/testdata/sharedlibs/prebuilts/Android.bp
index 1198612..74feae2 100644
--- a/tests/testdata/sharedlibs/prebuilts/Android.bp
+++ b/tests/testdata/sharedlibs/prebuilts/Android.bp
@@ -97,6 +97,26 @@
}
prebuilt_apex {
+ name: "com.android.apex.test.baz_stripped.v1.libvX_prebuilt",
+ arch: {
+ arm: {
+ src: "arm/com.android.apex.test.baz_stripped.v1.libvX.apex",
+ },
+ arm64: {
+ src: "arm64/com.android.apex.test.baz_stripped.v1.libvX.apex",
+ },
+ x86: {
+ src: "x86/com.android.apex.test.baz_stripped.v1.libvX.apex",
+ },
+ x86_64: {
+ src: "x86_64/com.android.apex.test.baz_stripped.v1.libvX.apex",
+ },
+ },
+ filename: "com.android.apex.test.baz_stripped.v1.libvX.apex",
+ installable: false,
+}
+
+prebuilt_apex {
name: "com.android.apex.test.foo_stripped.v1.libvX_prebuilt",
arch: {
arm: {
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v1.libvX.apex
index adab471..8981631 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v2.libvY.apex
index 5c48753..307ef3e 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.bar_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.baz_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.baz_stripped.v1.libvX.apex
new file mode 100644
index 0000000..ffc9686
--- /dev/null
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.baz_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v1.libvX.apex
index 4c6210f..7b8bef5 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v2.libvY.apex
index ff244aa..c393124 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.foo_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
index adec131..89ae2e0 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
index a48fb18..4fcf41e 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v1.libvX.apex
index 9885273..9265b1f 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v2.libvY.apex
index bd33cf8..c8e2b69 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.bar_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.baz_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.baz_stripped.v1.libvX.apex
new file mode 100644
index 0000000..e126f11
--- /dev/null
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.baz_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v1.libvX.apex
index e9f2e05..b27c967 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v2.libvY.apex
index 412b96c..8b80868 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.foo_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
index 8e18b2e..24ea2d1 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
index 1642eba..3f8bcf1 100644
--- a/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/arm64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v1.libvX.apex
index 2761630..4b899e2 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v2.libvY.apex
index 05d5978..32bcbe9 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.bar_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.baz_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.baz_stripped.v1.libvX.apex
new file mode 100644
index 0000000..ed7e479
--- /dev/null
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.baz_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v1.libvX.apex
index 13d02fc..c68a39f 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v2.libvY.apex
index e4cfe90..c8c1a27 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.foo_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
index 00ad1e8..edceab4 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
index 8e24bd1..4fbc2a5 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v1.libvX.apex
index 3e85e58..233b93b 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v2.libvY.apex
index 2d910dc..a8d957a 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.bar_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.baz_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.baz_stripped.v1.libvX.apex
new file mode 100644
index 0000000..21f6a02
--- /dev/null
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.baz_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v1.libvX.apex
index 2d171be..66c3549 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v2.libvY.apex
index 241b578..59195c1 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.foo_stripped.v2.libvY.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
index ddf3490..2f60274 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v1.libvX.apex
Binary files differ
diff --git a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
index 4a61956..dccb630 100644
--- a/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
+++ b/tests/testdata/sharedlibs/prebuilts/x86_64/com.android.apex.test.sharedlibs_generated.v2.libvY.apex
Binary files differ