blob: b5ff71fa59353b6092dde3ce09f81c7d9e9ddd97 [file] [log] [blame]
/*
* 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";
import "frameworks/base/tools/aapt2/Resources.proto";
package aapt.pb;
option java_package = "com.android.aapt";
// Top level message representing data extracted from the APK for 'apkinfo'
// command.
message ApkInfo {
message XmlFile {
string path = 1;
XmlNode root = 2;
}
Badging badging = 1;
ResourceTable resource_table = 2;
repeated XmlFile xml_files = 3;
}
// Data extracted from the manifest of the APK.
message Badging {
PackageInfo package = 1;
Application application = 2;
UsesSdk uses_sdk = 3;
// Previously: UsesConfiguration uses_configuration = 4;
reserved 4;
SupportsScreen supports_screen = 5;
SupportsInput supports_input = 6;
LaunchableActivity launchable_activity = 7;
LeanbackLaunchableActivity leanback_launchable_activity = 8;
StaticLibrary static_library = 9;
SdkLibrary sdk_library = 10;
Overlay overlay = 11;
PackageVerifier package_verifier = 12;
CompatibleScreens compatible_screens = 13;
Architectures architectures = 14;
SupportsGlTexture supports_gl_texture = 15;
Components components = 16;
repeated string locales = 17;
repeated int32 densities = 18;
repeated UsesPackage uses_packages = 51;
repeated UsesConfiguration uses_configurations = 52;
repeated FeatureGroup feature_groups = 53;
repeated UsesPermission uses_permissions = 54;
repeated Permission permissions = 55;
repeated UsesLibrary uses_libraries = 56;
repeated UsesStaticLibrary uses_static_libraries = 57;
repeated UsesSdkLibrary uses_sdk_libraries = 58;
repeated UsesNativeLibrary uses_native_libraries = 59;
repeated Metadata metadata = 62;
repeated Property properties = 63;
}
// Information extracted about package from <manifest> and
// <original-package> tags.
message PackageInfo {
enum InstallLocation {
DEFAULT_INSTALL_LOCATION = 0;
AUTO = 1;
INTERNAL_ONLY = 2;
PREFER_EXTERNAL = 3;
}
string package = 1;
int32 version_code = 2;
string version_name = 3;
string split = 4;
string platform_version_name = 5;
string platform_version_code = 6;
int32 compile_sdk_version = 7;
string compile_sdk_version_codename = 8;
InstallLocation install_location = 9;
string original_package = 10;
}
// Information extracted from <application> element.
message Application {
string label = 1;
string icon = 2;
string banner = 3;
bool test_only = 4;
bool game = 5;
bool debuggable = 6;
map<string, string> locale_labels = 8;
map<int32, string> density_icons = 9;
}
// Components defined in the APK.
message Components {
bool main = 1;
bool other_activities = 2;
bool other_receivers = 3;
bool other_services = 4;
repeated string provided_components = 5;
}
// Application's min and target SDKs.
message UsesSdk {
oneof min_sdk {
int32 min_sdk_version = 2;
string min_sdk_version_name = 3;
}
int32 max_sdk_version = 4;
oneof target_sdk {
int32 target_sdk_version = 5;
string target_sdk_version_name = 6;
}
}
message UsesConfiguration {
int32 req_touch_screen = 1;
int32 req_keyboard_type = 2;
int32 req_hard_keyboard = 3;
int32 req_navigation = 4;
int32 req_five_way_nav = 5;
}
// Screens supported by this application.
message SupportsScreen {
enum ScreenType {
UNSPECIFIED_SCREEN_TYPE = 0;
SMALL = 1;
NORMAL = 2;
LARGE = 3;
XLARGE = 4;
}
repeated ScreenType screens = 1;
bool supports_any_densities = 2;
int32 requires_smallest_width_dp = 3;
int32 compatible_width_limit_dp = 4;
int32 largest_width_limit_dp = 5;
}
// Inputs supported by this application.
message SupportsInput {
repeated string inputs = 1;
}
// Information about used features which is extracted from <uses-permission>
// elements or implied from permissions.
message Feature {
message ImpliedData {
bool from_sdk_23_permission = 1;
repeated string reasons = 2;
}
string name = 1;
bool required = 2;
int32 version = 3;
ImpliedData implied_data = 4;
}
message FeatureGroup {
string label = 1;
int32 open_gles_version = 2;
repeated Feature features = 3;
}
// Information about permission requested by the application.
message UsesPermission {
message PermissionFlags {
bool never_for_location = 1;
}
string name = 1;
int32 max_sdk_version = 2;
bool required = 3;
bool implied = 4;
bool sdk23_and_above = 5;
repeated string required_features = 6;
repeated string required_not_features = 7;
PermissionFlags permission_flags = 8;
}
// Permission defined by the application.
message Permission {
string name = 1;
}
// Data extracted about launchable activity. Launchable activity is an entry
// point on phone and tablet devices.
message LaunchableActivity {
string name = 1;
string icon = 2;
string label = 3;
}
// Data extracted about leanback launchable activity. Leanback launchable
// activity is an entry point on TV devices.
message LeanbackLaunchableActivity {
string name = 1;
string icon = 2;
string label = 3;
string banner = 4;
}
// Library used by the application.
message UsesLibrary {
string name = 1;
bool required = 2;
}
// Static library this APK declares.
message StaticLibrary {
string name = 1;
int32 version = 2;
int32 version_major = 3;
}
// Static library used by the application.
message UsesStaticLibrary {
string name = 1;
int32 version = 2;
int32 version_major = 3;
repeated string certificates = 4;
}
// SDK library this APK declares.
message SdkLibrary {
string name = 1;
int32 version_major = 2;
}
// SDK library used by the application.
message UsesSdkLibrary {
string name = 1;
int32 version_major = 2;
repeated string certificates = 3;
}
// Native library used by the application.
message UsesNativeLibrary {
string name = 1;
bool required = 2;
}
// Information extracted from <meta-data> elements defined across
// AndroidManifest.xml.
message Metadata {
string name = 1;
oneof value {
string value_string = 2;
int32 value_int = 3;
}
oneof resource {
string resource_string = 4;
int32 resource_int = 5;
}
}
// Information about overlay that is declared in the APK.
message Overlay {
string target_package = 1;
int32 priority = 2;
bool static = 3;
string required_property_name = 4;
string required_property_value = 5;
}
// Data extracted from <package-verifier> element.
message PackageVerifier {
string name = 1;
string public_key = 2;
}
// External packages used by the application
message UsesPackage {
string name = 1;
string package_type = 2;
int32 version = 3;
int32 version_major = 4;
repeated string certificates = 5;
}
// Open GL textures format supported by the current application.
message SupportsGlTexture {
repeated string name = 1;
}
// Screens compatible with the application.
message CompatibleScreens {
message Screen {
int32 size = 1;
int32 density = 2;
}
repeated Screen screens = 1;
}
// Architectures supported by the application.
message Architectures {
repeated string architectures = 1;
repeated string alt_architectures = 2;
}
// Information extracted from <property> elements defined across
// AndroidManifest.xml.
message Property {
string name = 1;
oneof value {
string value_string = 2;
int32 value_int = 3;
}
oneof resource {
string resource_string = 4;
int32 resource_int = 5;
}
}