/* * 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 and // 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 element. message Application { string label = 1; string icon = 2; string banner = 3; bool test_only = 4; bool game = 5; bool debuggable = 6; map locale_labels = 8; map 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 // 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 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 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 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; } }