Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0009623 authored by Donald Chai's avatar Donald Chai Committed by felkachang
Browse files

Define a unified protobuf message for "aapt2 optimize" metadata.

This helps solve three problems:

* obfuscation maps are now documented.
* obfuscation maps will not require hand-rolled parsers.
* no additional plumbing will be required for future
  optimizations---plumbing individual mapping files in Bazel for
  ProGuard, aapt2, etc. has been a pain.

Bug: 153201806
Test: make aapt2
Change-Id: Ie3829834527e8875d768ae28242d3aeca28c6db2
parent 5a014c40
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ cc_library_host_static {
        "ApkInfo.proto",
        "Configuration.proto",
        "Resources.proto",
        "ResourceMetadata.proto",
        "ResourcesInternal.proto",
        "ValueTransformer.cpp",
    ],
@@ -218,6 +219,7 @@ genrule {
    srcs: [
        "Configuration.proto",
        "ResourcesInternal.proto",
        "ResourceMetadata.proto",
        "Resources.proto",
    ],
    out: ["aapt2-protos.zip"],
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 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.
 */

syntax = "proto3";

package aapt.pb;

option java_package = "com.android.aapt";
option java_multiple_files = true;

message ResourceMappings {
  ShortenedPathsMap shortened_paths = 1;
  CollapsedNamesMap collapsed_names = 2;
}

// Metadata relating to "aapt2 optimize --shorten-resource-paths"
message ShortenedPathsMap {
  // Maps shorted paths (e.g. "res/foo.xml") to their original names (e.g.
  // "res/xml/file_with_long_name.xml").
  message ResourcePathMapping {
    string shortened_path = 1;
    string original_path = 2;
  }
  repeated ResourcePathMapping resource_paths = 1;
}

// Metadata relating to "aapt2 optimize --collapse-resource-names"
message CollapsedNamesMap {
  // Maps resource IDs (e.g. 0x7f123456) to their original names (e.g.
  // "package:type/entry").
  message ResourceNameMapping {
    uint32 id = 1;
    string name = 2;
  }
  repeated ResourceNameMapping resource_names = 1;
}