Merge "Fix aapt2 feature split package name generation" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
936b515714
@@ -196,9 +196,9 @@ cc_test_host {
|
||||
],
|
||||
defaults: ["aapt2_defaults"],
|
||||
data: [
|
||||
"integration-tests/CompileTest/**/*",
|
||||
"integration-tests/CommandTests/**/*",
|
||||
"integration-tests/ConvertTest/**/*"
|
||||
"integration-tests/CompileTest/**/*",
|
||||
"integration-tests/CommandTests/**/*",
|
||||
"integration-tests/ConvertTest/**/*",
|
||||
],
|
||||
}
|
||||
|
||||
@@ -232,6 +232,9 @@ genrule {
|
||||
"cp $(in) $(genDir)/protos && " +
|
||||
"$(location :soong_zip) -o $(out) -C $(genDir)/protos -D $(genDir)/protos",
|
||||
dist: {
|
||||
targets: ["sdk_repo", "aapt2_artifacts"],
|
||||
targets: [
|
||||
"sdk_repo",
|
||||
"aapt2_artifacts",
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1764,7 +1764,7 @@ class Linker {
|
||||
// anything else being generated, which includes the Java classes.
|
||||
// If required, the package name is modifed before flattening, and then modified back
|
||||
// to its original name.
|
||||
std::optional<ResourceTablePackageView> package_to_rewrite;
|
||||
ResourceTablePackage* package_to_rewrite = nullptr;
|
||||
// Pre-O, the platform treats negative resource IDs [those with a package ID of 0x80
|
||||
// or higher] as invalid. In order to work around this limitation, we allow the use
|
||||
// of traditionally reserved resource IDs [those between 0x02 and 0x7E]. Allow the
|
||||
@@ -1773,16 +1773,13 @@ class Linker {
|
||||
context_->GetPackageId() != kAppPackageId &&
|
||||
context_->GetPackageId() != kFrameworkPackageId)
|
||||
|| (!options_.allow_reserved_package_id && context_->GetPackageId() > kAppPackageId);
|
||||
if (isSplitPackage &&
|
||||
included_feature_base_ == make_value(context_->GetCompilationPackage())) {
|
||||
if (isSplitPackage && included_feature_base_ == context_->GetCompilationPackage()) {
|
||||
// The base APK is included, and this is a feature split. If the base package is
|
||||
// the same as this package, then we are building an old style Android Instant Apps feature
|
||||
// split and must apply this workaround to avoid requiring namespaces support.
|
||||
auto table_view = table->GetPartitionedView();
|
||||
if (!table_view.packages.empty() &&
|
||||
table_view.packages.back().name == context_->GetCompilationPackage()) {
|
||||
package_to_rewrite = std::move(table_view.packages.back());
|
||||
CHECK_EQ(1u, table->packages.size()) << "can't change name of package when > 1 package";
|
||||
if (!table->packages.empty() &&
|
||||
table->packages.back()->name == context_->GetCompilationPackage()) {
|
||||
package_to_rewrite = table->packages.back().get();
|
||||
std::string new_package_name =
|
||||
StringPrintf("%s.%s", package_to_rewrite->name.c_str(),
|
||||
app_info_.split_name.value_or_default("feature").c_str());
|
||||
@@ -1798,12 +1795,15 @@ class Linker {
|
||||
|
||||
bool success = FlattenTable(table, options_.output_format, writer);
|
||||
|
||||
if (package_to_rewrite.has_value()) {
|
||||
if (package_to_rewrite != nullptr) {
|
||||
// Change the name back.
|
||||
package_to_rewrite->name = context_->GetCompilationPackage();
|
||||
if (package_to_rewrite->id) {
|
||||
table->included_packages_.erase(package_to_rewrite->id.value());
|
||||
}
|
||||
|
||||
// TableFlattener creates an `included_packages_` mapping entry for each package with a
|
||||
// non-standard package id (not 0x01 or 0x7f). Since this is a feature split and not a shared
|
||||
// library, do not include a mapping from the feature package name to the feature package id
|
||||
// in the feature's dynamic reference table.
|
||||
table->included_packages_.erase(context_->GetPackageId());
|
||||
}
|
||||
|
||||
if (!success) {
|
||||
|
||||
Reference in New Issue
Block a user