diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/aapt/SdkConstants.h | 1 | ||||
-rw-r--r-- | tools/aapt2/SdkConstants.cpp | 2 | ||||
-rw-r--r-- | tools/aapt2/SdkConstants.h | 1 | ||||
-rw-r--r-- | tools/aapt2/cmd/Link.h | 4 | ||||
-rw-r--r-- | tools/aapt2/dump/DumpManifest.cpp | 5 | ||||
-rw-r--r-- | tools/aapt2/link/ManifestFixer.cpp | 22 | ||||
-rw-r--r-- | tools/aapt2/link/ManifestFixer.h | 4 | ||||
-rw-r--r-- | tools/aapt2/link/ManifestFixer_test.cpp | 26 | ||||
-rw-r--r-- | tools/protologtool/Android.bp | 2 | ||||
-rw-r--r-- | tools/stats_log_api_gen/Collation.cpp | 7 | ||||
-rw-r--r-- | tools/stats_log_api_gen/Collation.h | 1 | ||||
-rw-r--r-- | tools/stats_log_api_gen/atoms_info_writer.cpp | 104 | ||||
-rw-r--r-- | tools/stats_log_api_gen/atoms_info_writer.h | 2 | ||||
-rw-r--r-- | tools/stats_log_api_gen/java_writer.cpp | 8 | ||||
-rw-r--r-- | tools/stats_log_api_gen/main.cpp | 2 |
15 files changed, 70 insertions, 121 deletions
diff --git a/tools/aapt/SdkConstants.h b/tools/aapt/SdkConstants.h index 27ffcdf52168..04fbbe1f1069 100644 --- a/tools/aapt/SdkConstants.h +++ b/tools/aapt/SdkConstants.h @@ -45,6 +45,7 @@ enum { SDK_O_MR1 = 27, SDK_P = 28, SDK_Q = 29, + SDK_R = 30, }; #endif // H_AAPT_SDK_CONSTANTS diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp index b4b6ff1daaaa..f9faed84f5f0 100644 --- a/tools/aapt2/SdkConstants.cpp +++ b/tools/aapt2/SdkConstants.cpp @@ -57,6 +57,8 @@ static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = { {0x0568, SDK_O}, {0x056d, SDK_O_MR1}, {0x0586, SDK_P}, + {0x0606, SDK_Q}, + {0x0617, SDK_R}, }; static bool less_entry_id(const std::pair<uint16_t, ApiVersion>& p, uint16_t entryId) { diff --git a/tools/aapt2/SdkConstants.h b/tools/aapt2/SdkConstants.h index a00d978565ad..aa9aa12d2cee 100644 --- a/tools/aapt2/SdkConstants.h +++ b/tools/aapt2/SdkConstants.h @@ -55,6 +55,7 @@ enum : ApiVersion { SDK_O_MR1 = 27, SDK_P = 28, SDK_Q = 29, + SDK_R = 30, }; ApiVersion FindAttributeSdkLevel(const ResourceId& id); diff --git a/tools/aapt2/cmd/Link.h b/tools/aapt2/cmd/Link.h index e7be43459e16..852b1244cd6e 100644 --- a/tools/aapt2/cmd/Link.h +++ b/tools/aapt2/cmd/Link.h @@ -263,6 +263,10 @@ class LinkCommand : public Command { "Changes the name of the target package for instrumentation. Most useful\n" "when used in conjunction with --rename-manifest-package.", &options_.manifest_fixer_options.rename_instrumentation_target_package); + AddOptionalFlag("--rename-overlay-target-package", + "Changes the name of the target package for overlay. Most useful\n" + "when used in conjunction with --rename-manifest-package.", + &options_.manifest_fixer_options.rename_overlay_target_package); AddOptionalFlagList("-0", "File suffix not to compress.", &options_.extensions_to_not_compress); AddOptionalSwitch("--no-compress", "Do not compress any resources.", diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp index e7a82034c77a..4a6bfd031284 100644 --- a/tools/aapt2/dump/DumpManifest.cpp +++ b/tools/aapt2/dump/DumpManifest.cpp @@ -91,6 +91,7 @@ enum { }; const std::string& kAndroidNamespace = "http://schemas.android.com/apk/res/android"; +constexpr int kCurrentDevelopmentVersion = 10000; /** Retrieves the attribute of the element with the specified attribute resource id. */ static xml::Attribute* FindAttribute(xml::Element *el, uint32_t resd_id) { @@ -325,7 +326,7 @@ class ManifestExtractor { ConfigDescription config; config.orientation = android::ResTable_config::ORIENTATION_PORT; config.density = android::ResTable_config::DENSITY_MEDIUM; - config.sdkVersion = 10000; // Very high. + config.sdkVersion = kCurrentDevelopmentVersion; // Very high. config.screenWidthDp = 320; config.screenHeightDp = 480; config.smallestScreenWidthDp = 320; @@ -622,6 +623,8 @@ class UsesSdkBadging : public ManifestExtractor::Element { } if (target_sdk) { extractor()->RaiseTargetSdk(*target_sdk); + } else if (target_sdk_name) { + extractor()->RaiseTargetSdk(kCurrentDevelopmentVersion); } } diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp index bcfce663db00..c813a446b8db 100644 --- a/tools/aapt2/link/ManifestFixer.cpp +++ b/tools/aapt2/link/ManifestFixer.cpp @@ -263,6 +263,16 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, } } + if (options_.rename_overlay_target_package) { + if (!util::IsJavaPackageName(options_.rename_overlay_target_package.value())) { + diag->Error(DiagMessage() + << "invalid overlay target package override '" + << options_.rename_overlay_target_package.value() + << "'"); + return false; + } + } + // Common <intent-filter> actions. xml::XmlNodeAction intent_filter_action; intent_filter_action["action"].Action(RequiredNameIsNotEmpty); @@ -373,7 +383,17 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor, manifest_action["attribution"]; manifest_action["attribution"]["inherit-from"]; manifest_action["original-package"]; - manifest_action["overlay"]; + manifest_action["overlay"].Action([&](xml::Element* el) -> bool { + if (!options_.rename_overlay_target_package) { + return true; + } + + if (xml::Attribute* attr = + el->FindAttribute(xml::kSchemaAndroid, "targetPackage")) { + attr->value = options_.rename_overlay_target_package.value(); + } + return true; + }); manifest_action["protected-broadcast"]; manifest_action["adopt-permissions"]; manifest_action["uses-permission"]; diff --git a/tools/aapt2/link/ManifestFixer.h b/tools/aapt2/link/ManifestFixer.h index 3ef57d0d0e42..ec4367b450fb 100644 --- a/tools/aapt2/link/ManifestFixer.h +++ b/tools/aapt2/link/ManifestFixer.h @@ -44,6 +44,10 @@ struct ManifestFixerOptions { // <instrumentation>. Maybe<std::string> rename_instrumentation_target_package; + // The Android package to use instead of the one defined in 'android:targetPackage' in + // <overlay>. + Maybe<std::string> rename_overlay_target_package; + // The version name to set if 'android:versionName' is not defined in <manifest> or if // replace_version is set. Maybe<std::string> version_name_default; diff --git a/tools/aapt2/link/ManifestFixer_test.cpp b/tools/aapt2/link/ManifestFixer_test.cpp index 3af06f53d4f3..0791805e2506 100644 --- a/tools/aapt2/link/ManifestFixer_test.cpp +++ b/tools/aapt2/link/ManifestFixer_test.cpp @@ -325,6 +325,32 @@ TEST_F(ManifestFixerTest, EXPECT_THAT(attr->value, StrEq("com.android")); } +TEST_F(ManifestFixerTest, + RenameManifestOverlayPackageAndFullyQualifyTarget) { + ManifestFixerOptions options; + options.rename_overlay_target_package = std::string("com.android"); + + std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF( + <manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="android"> + <overlay android:targetName="Customization" android:targetPackage="android" /> + </manifest>)EOF", + options); + ASSERT_THAT(doc, NotNull()); + + xml::Element* manifest_el = doc->root.get(); + ASSERT_THAT(manifest_el, NotNull()); + + xml::Element* overlay_el = + manifest_el->FindChild({}, "overlay"); + ASSERT_THAT(overlay_el, NotNull()); + + xml::Attribute* attr = + overlay_el->FindAttribute(xml::kSchemaAndroid, "targetPackage"); + ASSERT_THAT(attr, NotNull()); + EXPECT_THAT(attr->value, StrEq("com.android")); +} + TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) { ManifestFixerOptions options; options.version_name_default = std::string("Beta"); diff --git a/tools/protologtool/Android.bp b/tools/protologtool/Android.bp index d1a86c245dec..ce551bd0cc10 100644 --- a/tools/protologtool/Android.bp +++ b/tools/protologtool/Android.bp @@ -6,7 +6,7 @@ java_library_host { static_libs: [ "protolog-common", "javaparser", - "protolog-proto", + "platformprotos", "jsonlib", ], } diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp index 526876f5ec26..958e94efcf9c 100644 --- a/tools/stats_log_api_gen/Collation.cpp +++ b/tools/stats_log_api_gen/Collation.cpp @@ -478,7 +478,6 @@ static void populateFieldNumberToAtomDeclSet(const shared_ptr<AtomDecl>& atomDec int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* atoms) { int errorCount = 0; - int maxPushedAtomId = 2; for (int i = 0; i < descriptor->field_count(); i++) { const FieldDescriptor* atomField = descriptor->field(i); @@ -563,14 +562,8 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* atoms->non_chained_decls.insert(nonChainedAtomDecl); } - - if (atomDecl->code < PULL_ATOM_START_ID && atomDecl->code > maxPushedAtomId) { - maxPushedAtomId = atomDecl->code; - } } - atoms->maxPushedAtomId = maxPushedAtomId; - if (dbg) { printf("signatures = [\n"); for (SignatureInfoMap::const_iterator it = atoms->signatureInfoMap.begin(); diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h index b513463ec98f..043f8b1e74d8 100644 --- a/tools/stats_log_api_gen/Collation.h +++ b/tools/stats_log_api_gen/Collation.h @@ -191,7 +191,6 @@ struct Atoms { AtomDeclSet decls; AtomDeclSet non_chained_decls; SignatureInfoMap nonChainedSignatureInfoMap; - int maxPushedAtomId; }; /** diff --git a/tools/stats_log_api_gen/atoms_info_writer.cpp b/tools/stats_log_api_gen/atoms_info_writer.cpp index 5fe94987aa65..292cb21bac30 100644 --- a/tools/stats_log_api_gen/atoms_info_writer.cpp +++ b/tools/stats_log_api_gen/atoms_info_writer.cpp @@ -25,68 +25,13 @@ namespace android { namespace stats_log_api_gen { -static void write_atoms_info_header_body(FILE* out, const Atoms& atoms) { - fprintf(out, "static int UNSET_VALUE = INT_MAX;\n"); - fprintf(out, "static int FIRST_UID_IN_CHAIN = 0;\n"); - - fprintf(out, "struct StateAtomFieldOptions {\n"); - fprintf(out, " std::vector<int> primaryFields;\n"); - fprintf(out, " int exclusiveField;\n"); - fprintf(out, " int defaultState = UNSET_VALUE;\n"); - fprintf(out, " int resetState = UNSET_VALUE;\n"); - fprintf(out, " bool nested;\n"); - fprintf(out, "};\n"); - fprintf(out, "\n"); - +static void write_atoms_info_header_body(FILE* out) { fprintf(out, "struct AtomsInfo {\n"); - fprintf(out, - " const static std::set<int> " - "kTruncatingTimestampAtomBlackList;\n"); - fprintf(out, " const static std::set<int> kAtomsWithAttributionChain;\n"); - fprintf(out, - " const static std::map<int, StateAtomFieldOptions> " - "kStateAtomsFieldOptions;\n"); fprintf(out, " const static std::set<int> kWhitelistedAtoms;\n"); fprintf(out, "};\n"); - fprintf(out, "const static int kMaxPushedAtomId = %d;\n\n", atoms.maxPushedAtomId); } static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { - std::set<string> kTruncatingAtomNames = {"mobile_radio_power_state_changed", - "audio_state_changed", - "call_state_changed", - "phone_signal_strength_changed", - "mobile_bytes_transfer_by_fg_bg", - "mobile_bytes_transfer"}; - fprintf(out, - "const std::set<int> " - "AtomsInfo::kTruncatingTimestampAtomBlackList = {\n"); - for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); - atomIt++) { - if (kTruncatingAtomNames.find((*atomIt)->name) != kTruncatingAtomNames.end()) { - const string constant = make_constant_name((*atomIt)->name); - fprintf(out, " %d, // %s\n", (*atomIt)->code, constant.c_str()); - } - } - - fprintf(out, "};\n"); - fprintf(out, "\n"); - - fprintf(out, "const std::set<int> AtomsInfo::kAtomsWithAttributionChain = {\n"); - for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); - atomIt++) { - for (vector<AtomField>::const_iterator field = (*atomIt)->fields.begin(); - field != (*atomIt)->fields.end(); field++) { - if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) { - const string constant = make_constant_name((*atomIt)->name); - fprintf(out, " %d, // %s\n", (*atomIt)->code, constant.c_str()); - break; - } - } - } - - fprintf(out, "};\n"); - fprintf(out, "\n"); fprintf(out, "const std::set<int> AtomsInfo::kWhitelistedAtoms = {\n"); for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); @@ -100,52 +45,9 @@ static void write_atoms_info_cpp_body(FILE* out, const Atoms& atoms) { fprintf(out, "};\n"); fprintf(out, "\n"); - fprintf(out, - "static std::map<int, StateAtomFieldOptions> " - "getStateAtomFieldOptions() {\n"); - fprintf(out, " std::map<int, StateAtomFieldOptions> options;\n"); - fprintf(out, " StateAtomFieldOptions* opt;\n"); - for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end(); - atomIt++) { - if ((*atomIt)->primaryFields.size() == 0 && (*atomIt)->exclusiveField == 0) { - continue; - } - fprintf(out, - "\n // Adding primary and exclusive fields for atom " - "(%d)%s\n", - (*atomIt)->code, (*atomIt)->name.c_str()); - fprintf(out, " opt = &(options[%d /* %s */]);\n", (*atomIt)->code, - make_constant_name((*atomIt)->name).c_str()); - fprintf(out, " opt->primaryFields.reserve(%lu);\n", (*atomIt)->primaryFields.size()); - for (const auto& field : (*atomIt)->primaryFields) { - fprintf(out, " opt->primaryFields.push_back(%d);\n", field); - } - - fprintf(out, " opt->exclusiveField = %d;\n", (*atomIt)->exclusiveField); - if ((*atomIt)->defaultState != INT_MAX) { - fprintf(out, " opt->defaultState = %d;\n", (*atomIt)->defaultState); - } else { - fprintf(out, " opt->defaultState = UNSET_VALUE;\n"); - } - - if ((*atomIt)->triggerStateReset != INT_MAX) { - fprintf(out, " opt->resetState = %d;\n", (*atomIt)->triggerStateReset); - } else { - fprintf(out, " opt->resetState = UNSET_VALUE;\n"); - } - fprintf(out, " opt->nested = %d;\n", (*atomIt)->nested); - } - - fprintf(out, " return options;\n"); - fprintf(out, "}\n"); - - fprintf(out, - "const std::map<int, StateAtomFieldOptions> " - "AtomsInfo::kStateAtomsFieldOptions = " - "getStateAtomFieldOptions();\n"); } -int write_atoms_info_header(FILE* out, const Atoms& atoms, const string& namespaceStr) { +int write_atoms_info_header(FILE* out, const string& namespaceStr) { // Print prelude fprintf(out, "// This file is autogenerated\n"); fprintf(out, "\n"); @@ -158,7 +60,7 @@ int write_atoms_info_header(FILE* out, const Atoms& atoms, const string& namespa write_namespace(out, namespaceStr); - write_atoms_info_header_body(out, atoms); + write_atoms_info_header_body(out); fprintf(out, "\n"); write_closing_namespace(out, namespaceStr); diff --git a/tools/stats_log_api_gen/atoms_info_writer.h b/tools/stats_log_api_gen/atoms_info_writer.h index ffe9e439d7ff..09a4303eaee6 100644 --- a/tools/stats_log_api_gen/atoms_info_writer.h +++ b/tools/stats_log_api_gen/atoms_info_writer.h @@ -29,7 +29,7 @@ using namespace std; int write_atoms_info_cpp(FILE* out, const Atoms& atoms, const string& namespaceStr, const string& importHeader); -int write_atoms_info_header(FILE* out, const Atoms& atoms, const string& namespaceStr); +int write_atoms_info_header(FILE* out, const string& namespaceStr); } // namespace stats_log_api_gen } // namespace android diff --git a/tools/stats_log_api_gen/java_writer.cpp b/tools/stats_log_api_gen/java_writer.cpp index 556cf5e12d01..f4c937c3f599 100644 --- a/tools/stats_log_api_gen/java_writer.cpp +++ b/tools/stats_log_api_gen/java_writer.cpp @@ -124,13 +124,7 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa // Print method body. string indent(""); if (supportQ) { - // TODO(b/146235828): Use just SDK_INT check once it is incremented from - // Q. - fprintf(out, " if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q\n"); - fprintf(out, - " || (Build.VERSION.SDK_INT == " - "Build.VERSION_CODES.Q\n"); - fprintf(out, " && Build.VERSION.PREVIEW_SDK_INT > 0)) {\n"); + fprintf(out, " if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {\n"); indent = " "; } diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp index fda57369d7bf..136933b8cfb2 100644 --- a/tools/stats_log_api_gen/main.cpp +++ b/tools/stats_log_api_gen/main.cpp @@ -229,7 +229,7 @@ static int run(int argc, char const* const* argv) { fprintf(stderr, "Unable to open file for write: %s\n", atomsInfoHeaderFilename.c_str()); return 1; } - errorCount = android::stats_log_api_gen::write_atoms_info_header(out, atoms, cppNamespace); + errorCount = android::stats_log_api_gen::write_atoms_info_header(out, cppNamespace); fclose(out); } |