Submodule src/base contains modified content diff --git a/src/base/tools/aapt2/ResourceTable.cpp b/src/base/tools/aapt2/ResourceTable.cpp index 8ab1493c6ab3..3a855f0f6866 100644 --- a/src/base/tools/aapt2/ResourceTable.cpp +++ b/src/base/tools/aapt2/ResourceTable.cpp @@ -460,9 +460,7 @@ bool ResourceTable::AddResource(NewResource&& res, IDiagnostics* diag) { const bool validate = validation_ == Validation::kEnabled; const Source source = res.value ? res.value->GetSource() : Source{}; if (validate && !res.allow_mangled && !IsValidResourceEntryName(res.name.entry)) { - diag->Error(DiagMessage(source) - << "resource '" << res.name << "' has invalid entry name '" << res.name.entry); - return false; + return true; } if (res.id.has_value() && !res.id->first.is_valid()) { diff --git a/src/base/tools/aapt2/ResourceUtils.cpp b/src/base/tools/aapt2/ResourceUtils.cpp index e0e80ac02dea..f74d7f106220 100644 --- a/src/base/tools/aapt2/ResourceUtils.cpp +++ b/src/base/tools/aapt2/ResourceUtils.cpp @@ -222,7 +222,7 @@ bool ParseAttributeReference(const StringPiece& str, ResourceNameRef* out_ref) { } if (!type.empty() && type != "attr") { - return false; + // Apktool: Don't die out if private resource. } if (entry.empty()) { diff --git a/src/base/tools/aapt2/Resources.proto b/src/base/tools/aapt2/Resources.proto index 95b794964068..3cdadfd637e3 100644 --- a/src/base/tools/aapt2/Resources.proto +++ b/src/base/tools/aapt2/Resources.proto @@ -16,7 +16,7 @@ syntax = "proto3"; -import "frameworks/base/tools/aapt2/Configuration.proto"; +import "Configuration.proto"; package aapt.pb; @@ -636,4 +636,4 @@ message StyleString { message UntranslatableSection { uint64 start_index = 1; uint64 end_index = 2; -} \ No newline at end of file +} diff --git a/src/base/tools/aapt2/ResourcesInternal.proto b/src/base/tools/aapt2/ResourcesInternal.proto index b0ed3da33368..97aa5af7724f 100644 --- a/src/base/tools/aapt2/ResourcesInternal.proto +++ b/src/base/tools/aapt2/ResourcesInternal.proto @@ -16,8 +16,8 @@ syntax = "proto3"; -import "frameworks/base/tools/aapt2/Configuration.proto"; -import "frameworks/base/tools/aapt2/Resources.proto"; +import "Configuration.proto"; +import "Resources.proto"; package aapt.pb.internal; diff --git a/src/base/tools/aapt2/cmd/Link.cpp b/src/base/tools/aapt2/cmd/Link.cpp index e4d0f3b6bd23..aa43ee07bfac 100644 --- a/src/base/tools/aapt2/cmd/Link.cpp +++ b/src/base/tools/aapt2/cmd/Link.cpp @@ -2326,9 +2326,9 @@ int LinkCommand::Action(const std::vector& args) { if (package_id_int > std::numeric_limits::max() || package_id_int == kFrameworkPackageId || (!options_.allow_reserved_package_id && package_id_int < kAppPackageId)) { - context.GetDiagnostics()->Error( + context.GetDiagnostics()->Warn( DiagMessage() << StringPrintf( - "invalid package ID 0x%02x. Must be in the range 0x7f-0xff.", package_id_int)); + "invalid package ID 0x%02x. Must be in the range 0x7f-0xff. Ignoring...", package_id_int)); return 1; } context.SetPackageId(static_cast(package_id_int)); @@ -2410,6 +2410,23 @@ int LinkCommand::Action(const std::vector& args) { ".mpg", ".mpeg", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".wma", ".wmv", ".webm", ".mkv"}); + // Populate no compress extensions specified in the extensions file. + if (options_.extensions_to_not_compress_path) { + std::ifstream extensionsFile(options_.extensions_to_not_compress_path.value()); + + if (extensionsFile.fail()) { + context.GetDiagnostics()->Error( + DiagMessage() << "could not open extensions file " + << options_.extensions_to_not_compress_path.value() + << " for reading"); + return 1; + } + + for (std::string line; getline(extensionsFile, line);) { + options_.extensions_to_not_compress.insert(line); + } + } + // Turn off auto versioning for static-libs. if (context.GetPackageType() == PackageType::kStaticLib) { options_.no_auto_version = true; diff --git a/src/base/tools/aapt2/cmd/Link.h b/src/base/tools/aapt2/cmd/Link.h index 768b4b2c7bfd..6dd220515674 100644 --- a/src/base/tools/aapt2/cmd/Link.h +++ b/src/base/tools/aapt2/cmd/Link.h @@ -71,6 +71,7 @@ struct LinkOptions { bool do_not_compress_anything = false; std::unordered_set extensions_to_not_compress; Maybe regex_to_not_compress; + Maybe extensions_to_not_compress_path; // Static lib options. bool no_static_lib_packages = false; @@ -272,6 +273,8 @@ class LinkCommand : public Command { &options_.manifest_fixer_options.rename_overlay_target_package); AddOptionalFlagList("-0", "File suffix not to compress.", &options_.extensions_to_not_compress); + AddOptionalFlag("-e", "File containing list of extensions not to compress.", + &options_.extensions_to_not_compress_path); AddOptionalSwitch("--no-compress", "Do not compress any resources.", &options_.do_not_compress_anything); AddOptionalSwitch("--keep-raw-values", "Preserve raw attribute values in xml files.", diff --git a/src/base/tools/aapt2/java/JavaClassGenerator.cpp b/src/base/tools/aapt2/java/JavaClassGenerator.cpp index de6524dc7027..0a968c11a13b 100644 --- a/src/base/tools/aapt2/java/JavaClassGenerator.cpp +++ b/src/base/tools/aapt2/java/JavaClassGenerator.cpp @@ -58,6 +58,8 @@ static const std::set sJavaIdentifiers = { "true", "false", "null"}; static bool IsValidSymbol(const StringPiece& symbol) { + // Apktool: Everything is a valid symbol + return true; return sJavaIdentifiers.find(symbol) == sJavaIdentifiers.end(); } diff --git a/src/base/tools/aapt2/link/PrivateAttributeMover.cpp b/src/base/tools/aapt2/link/PrivateAttributeMover.cpp index 675b02a7e161..fb2b11da5ee4 100644 --- a/src/base/tools/aapt2/link/PrivateAttributeMover.cpp +++ b/src/base/tools/aapt2/link/PrivateAttributeMover.cpp @@ -81,7 +81,6 @@ bool PrivateAttributeMover::Consume(IAaptContext* context, ResourceTable* table) } ResourceTableType* priv_attr_type = package->FindOrCreateType(ResourceType::kAttrPrivate); - CHECK(priv_attr_type->entries.empty()); priv_attr_type->entries = std::move(private_attr_entries); } return true; diff --git a/src/base/tools/aapt2/util/Util.cpp b/src/base/tools/aapt2/util/Util.cpp index d7a8e6fe6ada..74457add2e6b 100644 --- a/src/base/tools/aapt2/util/Util.cpp +++ b/src/base/tools/aapt2/util/Util.cpp @@ -23,7 +23,6 @@ #include "android-base/stringprintf.h" #include "androidfw/StringPiece.h" -#include "build/version.h" #include "text/Unicode.h" #include "text/Utf8Iterator.h" @@ -231,10 +230,7 @@ std::string GetToolFingerprint() { // Update minor version whenever a feature or flag is added. static const char* const sMinorVersion = "19"; - // The build id of aapt2 binary. - static const std::string sBuildId = android::build::GetBuildNumber(); - - return android::base::StringPrintf("%s.%s-%s", sMajorVersion, sMinorVersion, sBuildId.c_str()); + return android::base::StringPrintf("%s.%s", sMajorVersion, sMinorVersion); } static size_t ConsumeDigits(const char* start, const char* end) {