1b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski/* 2b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * Copyright (C) 2017 The Android Open Source Project 3b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * 4b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * you may not use this file except in compliance with the License. 6b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * You may obtain a copy of the License at 7b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * 8b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * 10b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * Unless required by applicable law or agreed to in writing, software 11b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * See the License for the specific language governing permissions and 14b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski * limitations under the License. 15b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski */ 16b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 17b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinskisyntax = "proto3"; 18b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 19b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinskipackage aapt.pb; 20b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 21b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinskioption java_package = "com.android.aapt"; 22b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinskioption optimize_for = LITE_RUNTIME; 23b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 24b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski// A description of the requirements a device must have in order for a 25b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski// resource to be matched and selected. 26b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinskimessage Configuration { 27b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum LayoutDirection { 28b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski LAYOUT_DIRECTION_UNSET = 0; 29b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski LAYOUT_DIRECTION_LTR = 1; 30b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski LAYOUT_DIRECTION_RTL = 2; 31b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 32b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 33b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum ScreenLayoutSize { 34b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_SIZE_UNSET = 0; 35b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_SIZE_SMALL = 1; 36b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_SIZE_NORMAL = 2; 37b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_SIZE_LARGE = 3; 38b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_SIZE_XLARGE = 4; 39b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 40b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 41b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum ScreenLayoutLong { 42b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_LONG_UNSET = 0; 43b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_LONG_LONG = 1; 44b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_LAYOUT_LONG_NOTLONG = 2; 45b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 46b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 47b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum ScreenRound { 48b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_ROUND_UNSET = 0; 49b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_ROUND_ROUND = 1; 50b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski SCREEN_ROUND_NOTROUND = 2; 51b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 52b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 53b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum WideColorGamut { 54b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski WIDE_COLOR_GAMUT_UNSET = 0; 55b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski WIDE_COLOR_GAMUT_WIDECG = 1; 56b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski WIDE_COLOR_GAMUT_NOWIDECG = 2; 57b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 58b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 59b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum Hdr { 60b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski HDR_UNSET = 0; 61b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski HDR_HIGHDR = 1; 62b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski HDR_LOWDR = 2; 63b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 64b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 65b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum Orientation { 66b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ORIENTATION_UNSET = 0; 67b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ORIENTATION_PORT = 1; 68b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ORIENTATION_LAND = 2; 69b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ORIENTATION_SQUARE = 3; 70b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 71b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 72b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum UiModeType { 73b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_UNSET = 0; 74b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_NORMAL = 1; 75b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_DESK = 2; 76b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_CAR = 3; 77b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_TELEVISION = 4; 78b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_APPLIANCE = 5; 79b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_WATCH = 6; 80b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_TYPE_VRHEADSET = 7; 81b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 82b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 83b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum UiModeNight { 84b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_NIGHT_UNSET = 0; 85b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_NIGHT_NIGHT = 1; 86b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UI_MODE_NIGHT_NOTNIGHT = 2; 87b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 88b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 89b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum Touchscreen { 90b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski TOUCHSCREEN_UNSET = 0; 91b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski TOUCHSCREEN_NOTOUCH = 1; 92b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski TOUCHSCREEN_STYLUS = 2; 93b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski TOUCHSCREEN_FINGER = 3; 94b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 95b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 96b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum KeysHidden { 97b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYS_HIDDEN_UNSET = 0; 98b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYS_HIDDEN_KEYSEXPOSED = 1; 99b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYS_HIDDEN_KEYSHIDDEN = 2; 100b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYS_HIDDEN_KEYSSOFT = 3; 101b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 102b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 103b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum Keyboard { 104b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYBOARD_UNSET = 0; 105b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYBOARD_NOKEYS = 1; 106b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYBOARD_QWERTY = 2; 107b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KEYBOARD_TWELVEKEY = 3; 108b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 109b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 110b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum NavHidden { 111b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAV_HIDDEN_UNSET = 0; 112b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAV_HIDDEN_NAVEXPOSED = 1; 113b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAV_HIDDEN_NAVHIDDEN = 2; 114b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 115b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 116b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski enum Navigation { 117b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAVIGATION_UNSET = 0; 118b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAVIGATION_NONAV = 1; 119b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAVIGATION_DPAD = 2; 120b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAVIGATION_TRACKBALL = 3; 121b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NAVIGATION_WHEEL = 4; 122b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski } 123b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 124b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // 125b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Axis/dimensions that are understood by the runtime. 126b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // 127b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 128b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Mobile country code. 129b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 mcc = 1; 130b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 131b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Mobile network code. 132b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 mnc = 2; 133b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 134b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // BCP-47 locale tag. 135b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski string locale = 3; 136b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 137b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Left-to-right, right-to-left... 138b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski LayoutDirection layout_direction = 4; 139b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 140b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Screen width in pixels. Prefer screen_width_dp. 141b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 screen_width = 5; 142b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 143b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Screen height in pixels. Prefer screen_height_dp. 144b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 screen_height = 6; 145b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 146b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Screen width in density independent pixels (dp). 147b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 screen_width_dp = 7; 148b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 149b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Screen height in density independent pixels (dp). 150b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 screen_height_dp = 8; 151b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 152b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // The smallest screen dimension, regardless of orientation, in dp. 153b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 smallest_screen_width_dp = 9; 154b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 155b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the device screen is classified as small, normal, large, xlarge. 156b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ScreenLayoutSize screen_layout_size = 10; 157b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 158b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the device screen is long. 159b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ScreenLayoutLong screen_layout_long = 11; 160b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 161b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the screen is round (Android Wear). 162b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski ScreenRound screen_round = 12; 163b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 164b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the screen supports wide color gamut. 165b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski WideColorGamut wide_color_gamut = 13; 166b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 167b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the screen has high dynamic range. 168b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski Hdr hdr = 14; 169b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 170b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Which orientation the device is in (portrait, landscape). 171b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski Orientation orientation = 15; 172b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 173b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Which type of UI mode the device is in (television, car, etc.). 174b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UiModeType ui_mode_type = 16; 175b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 176b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the device is in night mode. 177b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski UiModeNight ui_mode_night = 17; 178b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 179b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // The device's screen density in dots-per-inch (dpi). 180b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 density = 18; 181b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 182b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether a touchscreen exists, supports a stylus, or finger. 183b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski Touchscreen touchscreen = 19; 184b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 185b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the keyboard hardware keys are currently hidden, exposed, or 186b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // if the keyboard is a software keyboard. 187b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski KeysHidden keys_hidden = 20; 188b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 189b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // The type of keyboard present (none, QWERTY, 12-key). 190b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski Keyboard keyboard = 21; 191b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 192b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Whether the navigation is exposed or hidden. 193b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski NavHidden nav_hidden = 22; 194b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 195b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // The type of navigation present on the device 196b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // (trackball, wheel, dpad, etc.). 197b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski Navigation navigation = 23; 198b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 199b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // The minimum SDK version of the device. 200b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski uint32 sdk_version = 24; 201b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 202b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // 203b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // Build-time only dimensions. 204b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski // 205b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski 206b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski string product = 25; 207b58c3ef023acf3851e4a0557d04d65d52835d2dfAdam Lesinski} 208