2014-11-14 14:48:12 -08:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2015 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.
|
|
|
|
*/
|
|
|
|
|
2015-06-03 14:54:23 -07:00
|
|
|
#include "SdkConstants.h"
|
|
|
|
|
|
|
|
#include <algorithm>
|
2014-11-14 14:48:12 -08:00
|
|
|
#include <string>
|
|
|
|
#include <unordered_map>
|
2015-06-03 14:54:23 -07:00
|
|
|
#include <vector>
|
2014-11-14 14:48:12 -08:00
|
|
|
|
|
|
|
namespace aapt {
|
|
|
|
|
2016-07-08 15:00:32 -07:00
|
|
|
static const char* sDevelopmentSdkCodeName = "O";
|
2016-06-28 14:40:32 -07:00
|
|
|
static int sDevelopmentSdkLevel = 26;
|
|
|
|
|
2015-06-03 14:54:23 -07:00
|
|
|
static const std::vector<std::pair<uint16_t, size_t>> sAttrIdMap = {
|
|
|
|
{ 0x021c, 1 },
|
|
|
|
{ 0x021d, 2 },
|
|
|
|
{ 0x0269, SDK_CUPCAKE },
|
|
|
|
{ 0x028d, SDK_DONUT },
|
|
|
|
{ 0x02ad, SDK_ECLAIR },
|
|
|
|
{ 0x02b3, SDK_ECLAIR_0_1 },
|
|
|
|
{ 0x02b5, SDK_ECLAIR_MR1 },
|
|
|
|
{ 0x02bd, SDK_FROYO },
|
|
|
|
{ 0x02cb, SDK_GINGERBREAD },
|
|
|
|
{ 0x0361, SDK_HONEYCOMB },
|
2015-08-14 14:26:04 -07:00
|
|
|
{ 0x0363, SDK_HONEYCOMB_MR1 },
|
|
|
|
{ 0x0366, SDK_HONEYCOMB_MR2 },
|
|
|
|
{ 0x03a6, SDK_ICE_CREAM_SANDWICH },
|
2015-06-03 14:54:23 -07:00
|
|
|
{ 0x03ae, SDK_JELLY_BEAN },
|
|
|
|
{ 0x03cc, SDK_JELLY_BEAN_MR1 },
|
|
|
|
{ 0x03da, SDK_JELLY_BEAN_MR2 },
|
|
|
|
{ 0x03f1, SDK_KITKAT },
|
|
|
|
{ 0x03f6, SDK_KITKAT_WATCH },
|
|
|
|
{ 0x04ce, SDK_LOLLIPOP },
|
|
|
|
};
|
|
|
|
|
|
|
|
static bool lessEntryId(const std::pair<uint16_t, size_t>& p, uint16_t entryId) {
|
|
|
|
return p.first < entryId;
|
|
|
|
}
|
|
|
|
|
2016-08-10 14:15:30 -07:00
|
|
|
size_t findAttributeSdkLevel(const ResourceId& id) {
|
2015-06-03 14:54:23 -07:00
|
|
|
if (id.packageId() != 0x01 && id.typeId() != 0x01) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
auto iter = std::lower_bound(sAttrIdMap.begin(), sAttrIdMap.end(), id.entryId(), lessEntryId);
|
|
|
|
if (iter == sAttrIdMap.end()) {
|
|
|
|
return SDK_LOLLIPOP_MR1;
|
|
|
|
}
|
|
|
|
return iter->second;
|
|
|
|
}
|
|
|
|
|
2016-07-08 15:00:32 -07:00
|
|
|
static const std::unordered_map<std::string, size_t> sAttrMap = {
|
|
|
|
{ "marqueeRepeatLimit", 2 },
|
|
|
|
{ "windowNoDisplay", 3 },
|
|
|
|
{ "backgroundDimEnabled", 3 },
|
|
|
|
{ "inputType", 3 },
|
|
|
|
{ "isDefault", 3 },
|
|
|
|
{ "windowDisablePreview", 3 },
|
|
|
|
{ "privateImeOptions", 3 },
|
|
|
|
{ "editorExtras", 3 },
|
|
|
|
{ "settingsActivity", 3 },
|
|
|
|
{ "fastScrollEnabled", 3 },
|
|
|
|
{ "reqTouchScreen", 3 },
|
|
|
|
{ "reqKeyboardType", 3 },
|
|
|
|
{ "reqHardKeyboard", 3 },
|
|
|
|
{ "reqNavigation", 3 },
|
|
|
|
{ "windowSoftInputMode", 3 },
|
|
|
|
{ "imeFullscreenBackground", 3 },
|
|
|
|
{ "noHistory", 3 },
|
|
|
|
{ "headerDividersEnabled", 3 },
|
|
|
|
{ "footerDividersEnabled", 3 },
|
|
|
|
{ "candidatesTextStyleSpans", 3 },
|
|
|
|
{ "smoothScrollbar", 3 },
|
|
|
|
{ "reqFiveWayNav", 3 },
|
|
|
|
{ "keyBackground", 3 },
|
|
|
|
{ "keyTextSize", 3 },
|
|
|
|
{ "labelTextSize", 3 },
|
|
|
|
{ "keyTextColor", 3 },
|
|
|
|
{ "keyPreviewLayout", 3 },
|
|
|
|
{ "keyPreviewOffset", 3 },
|
|
|
|
{ "keyPreviewHeight", 3 },
|
|
|
|
{ "verticalCorrection", 3 },
|
|
|
|
{ "popupLayout", 3 },
|
|
|
|
{ "state_long_pressable", 3 },
|
|
|
|
{ "keyWidth", 3 },
|
|
|
|
{ "keyHeight", 3 },
|
|
|
|
{ "horizontalGap", 3 },
|
|
|
|
{ "verticalGap", 3 },
|
|
|
|
{ "rowEdgeFlags", 3 },
|
|
|
|
{ "codes", 3 },
|
|
|
|
{ "popupKeyboard", 3 },
|
|
|
|
{ "popupCharacters", 3 },
|
|
|
|
{ "keyEdgeFlags", 3 },
|
|
|
|
{ "isModifier", 3 },
|
|
|
|
{ "isSticky", 3 },
|
|
|
|
{ "isRepeatable", 3 },
|
|
|
|
{ "iconPreview", 3 },
|
|
|
|
{ "keyOutputText", 3 },
|
|
|
|
{ "keyLabel", 3 },
|
|
|
|
{ "keyIcon", 3 },
|
|
|
|
{ "keyboardMode", 3 },
|
|
|
|
{ "isScrollContainer", 3 },
|
|
|
|
{ "fillEnabled", 3 },
|
|
|
|
{ "updatePeriodMillis", 3 },
|
|
|
|
{ "initialLayout", 3 },
|
|
|
|
{ "voiceSearchMode", 3 },
|
|
|
|
{ "voiceLanguageModel", 3 },
|
|
|
|
{ "voicePromptText", 3 },
|
|
|
|
{ "voiceLanguage", 3 },
|
|
|
|
{ "voiceMaxResults", 3 },
|
|
|
|
{ "bottomOffset", 3 },
|
|
|
|
{ "topOffset", 3 },
|
|
|
|
{ "allowSingleTap", 3 },
|
|
|
|
{ "handle", 3 },
|
|
|
|
{ "content", 3 },
|
|
|
|
{ "animateOnClick", 3 },
|
|
|
|
{ "configure", 3 },
|
|
|
|
{ "hapticFeedbackEnabled", 3 },
|
|
|
|
{ "innerRadius", 3 },
|
|
|
|
{ "thickness", 3 },
|
|
|
|
{ "sharedUserLabel", 3 },
|
|
|
|
{ "dropDownWidth", 3 },
|
|
|
|
{ "dropDownAnchor", 3 },
|
|
|
|
{ "imeOptions", 3 },
|
|
|
|
{ "imeActionLabel", 3 },
|
|
|
|
{ "imeActionId", 3 },
|
|
|
|
{ "imeExtractEnterAnimation", 3 },
|
|
|
|
{ "imeExtractExitAnimation", 3 },
|
|
|
|
{ "tension", 4 },
|
|
|
|
{ "extraTension", 4 },
|
|
|
|
{ "anyDensity", 4 },
|
|
|
|
{ "searchSuggestThreshold", 4 },
|
|
|
|
{ "includeInGlobalSearch", 4 },
|
|
|
|
{ "onClick", 4 },
|
|
|
|
{ "targetSdkVersion", 4 },
|
|
|
|
{ "maxSdkVersion", 4 },
|
|
|
|
{ "testOnly", 4 },
|
|
|
|
{ "contentDescription", 4 },
|
|
|
|
{ "gestureStrokeWidth", 4 },
|
|
|
|
{ "gestureColor", 4 },
|
|
|
|
{ "uncertainGestureColor", 4 },
|
|
|
|
{ "fadeOffset", 4 },
|
|
|
|
{ "fadeDuration", 4 },
|
|
|
|
{ "gestureStrokeType", 4 },
|
|
|
|
{ "gestureStrokeLengthThreshold", 4 },
|
|
|
|
{ "gestureStrokeSquarenessThreshold", 4 },
|
|
|
|
{ "gestureStrokeAngleThreshold", 4 },
|
|
|
|
{ "eventsInterceptionEnabled", 4 },
|
|
|
|
{ "fadeEnabled", 4 },
|
|
|
|
{ "backupAgent", 4 },
|
|
|
|
{ "allowBackup", 4 },
|
|
|
|
{ "glEsVersion", 4 },
|
|
|
|
{ "queryAfterZeroResults", 4 },
|
|
|
|
{ "dropDownHeight", 4 },
|
|
|
|
{ "smallScreens", 4 },
|
|
|
|
{ "normalScreens", 4 },
|
|
|
|
{ "largeScreens", 4 },
|
|
|
|
{ "progressBarStyleInverse", 4 },
|
|
|
|
{ "progressBarStyleSmallInverse", 4 },
|
|
|
|
{ "progressBarStyleLargeInverse", 4 },
|
|
|
|
{ "searchSettingsDescription", 4 },
|
|
|
|
{ "textColorPrimaryInverseDisableOnly", 4 },
|
|
|
|
{ "autoUrlDetect", 4 },
|
|
|
|
{ "resizeable", 4 },
|
|
|
|
{ "required", 5 },
|
|
|
|
{ "accountType", 5 },
|
|
|
|
{ "contentAuthority", 5 },
|
|
|
|
{ "userVisible", 5 },
|
|
|
|
{ "windowShowWallpaper", 5 },
|
|
|
|
{ "wallpaperOpenEnterAnimation", 5 },
|
|
|
|
{ "wallpaperOpenExitAnimation", 5 },
|
|
|
|
{ "wallpaperCloseEnterAnimation", 5 },
|
|
|
|
{ "wallpaperCloseExitAnimation", 5 },
|
|
|
|
{ "wallpaperIntraOpenEnterAnimation", 5 },
|
|
|
|
{ "wallpaperIntraOpenExitAnimation", 5 },
|
|
|
|
{ "wallpaperIntraCloseEnterAnimation", 5 },
|
|
|
|
{ "wallpaperIntraCloseExitAnimation", 5 },
|
|
|
|
{ "supportsUploading", 5 },
|
|
|
|
{ "killAfterRestore", 5 },
|
|
|
|
{ "restoreNeedsApplication", 5 },
|
|
|
|
{ "smallIcon", 5 },
|
|
|
|
{ "accountPreferences", 5 },
|
|
|
|
{ "textAppearanceSearchResultSubtitle", 5 },
|
|
|
|
{ "textAppearanceSearchResultTitle", 5 },
|
|
|
|
{ "summaryColumn", 5 },
|
|
|
|
{ "detailColumn", 5 },
|
|
|
|
{ "detailSocialSummary", 5 },
|
|
|
|
{ "thumbnail", 5 },
|
|
|
|
{ "detachWallpaper", 5 },
|
|
|
|
{ "finishOnCloseSystemDialogs", 5 },
|
|
|
|
{ "scrollbarFadeDuration", 5 },
|
|
|
|
{ "scrollbarDefaultDelayBeforeFade", 5 },
|
|
|
|
{ "fadeScrollbars", 5 },
|
|
|
|
{ "colorBackgroundCacheHint", 5 },
|
|
|
|
{ "dropDownHorizontalOffset", 5 },
|
|
|
|
{ "dropDownVerticalOffset", 5 },
|
|
|
|
{ "quickContactBadgeStyleWindowSmall", 6 },
|
|
|
|
{ "quickContactBadgeStyleWindowMedium", 6 },
|
|
|
|
{ "quickContactBadgeStyleWindowLarge", 6 },
|
|
|
|
{ "quickContactBadgeStyleSmallWindowSmall", 6 },
|
|
|
|
{ "quickContactBadgeStyleSmallWindowMedium", 6 },
|
|
|
|
{ "quickContactBadgeStyleSmallWindowLarge", 6 },
|
|
|
|
{ "author", 7 },
|
|
|
|
{ "autoStart", 7 },
|
|
|
|
{ "expandableListViewWhiteStyle", 8 },
|
|
|
|
{ "installLocation", 8 },
|
|
|
|
{ "vmSafeMode", 8 },
|
|
|
|
{ "webTextViewStyle", 8 },
|
|
|
|
{ "restoreAnyVersion", 8 },
|
|
|
|
{ "tabStripLeft", 8 },
|
|
|
|
{ "tabStripRight", 8 },
|
|
|
|
{ "tabStripEnabled", 8 },
|
|
|
|
{ "logo", 9 },
|
|
|
|
{ "xlargeScreens", 9 },
|
|
|
|
{ "immersive", 9 },
|
|
|
|
{ "overScrollMode", 9 },
|
|
|
|
{ "overScrollHeader", 9 },
|
|
|
|
{ "overScrollFooter", 9 },
|
|
|
|
{ "filterTouchesWhenObscured", 9 },
|
|
|
|
{ "textSelectHandleLeft", 9 },
|
|
|
|
{ "textSelectHandleRight", 9 },
|
|
|
|
{ "textSelectHandle", 9 },
|
|
|
|
{ "textSelectHandleWindowStyle", 9 },
|
|
|
|
{ "popupAnimationStyle", 9 },
|
|
|
|
{ "screenSize", 9 },
|
|
|
|
{ "screenDensity", 9 },
|
|
|
|
{ "allContactsName", 11 },
|
|
|
|
{ "windowActionBar", 11 },
|
|
|
|
{ "actionBarStyle", 11 },
|
|
|
|
{ "navigationMode", 11 },
|
|
|
|
{ "displayOptions", 11 },
|
|
|
|
{ "subtitle", 11 },
|
|
|
|
{ "customNavigationLayout", 11 },
|
|
|
|
{ "hardwareAccelerated", 11 },
|
|
|
|
{ "measureWithLargestChild", 11 },
|
|
|
|
{ "animateFirstView", 11 },
|
|
|
|
{ "dropDownSpinnerStyle", 11 },
|
|
|
|
{ "actionDropDownStyle", 11 },
|
|
|
|
{ "actionButtonStyle", 11 },
|
|
|
|
{ "showAsAction", 11 },
|
|
|
|
{ "previewImage", 11 },
|
|
|
|
{ "actionModeBackground", 11 },
|
|
|
|
{ "actionModeCloseDrawable", 11 },
|
|
|
|
{ "windowActionModeOverlay", 11 },
|
|
|
|
{ "valueFrom", 11 },
|
|
|
|
{ "valueTo", 11 },
|
|
|
|
{ "valueType", 11 },
|
|
|
|
{ "propertyName", 11 },
|
|
|
|
{ "ordering", 11 },
|
|
|
|
{ "fragment", 11 },
|
|
|
|
{ "windowActionBarOverlay", 11 },
|
|
|
|
{ "fragmentOpenEnterAnimation", 11 },
|
|
|
|
{ "fragmentOpenExitAnimation", 11 },
|
|
|
|
{ "fragmentCloseEnterAnimation", 11 },
|
|
|
|
{ "fragmentCloseExitAnimation", 11 },
|
|
|
|
{ "fragmentFadeEnterAnimation", 11 },
|
|
|
|
{ "fragmentFadeExitAnimation", 11 },
|
|
|
|
{ "actionBarSize", 11 },
|
|
|
|
{ "imeSubtypeLocale", 11 },
|
|
|
|
{ "imeSubtypeMode", 11 },
|
|
|
|
{ "imeSubtypeExtraValue", 11 },
|
|
|
|
{ "splitMotionEvents", 11 },
|
|
|
|
{ "listChoiceBackgroundIndicator", 11 },
|
|
|
|
{ "spinnerMode", 11 },
|
|
|
|
{ "animateLayoutChanges", 11 },
|
|
|
|
{ "actionBarTabStyle", 11 },
|
|
|
|
{ "actionBarTabBarStyle", 11 },
|
|
|
|
{ "actionBarTabTextStyle", 11 },
|
|
|
|
{ "actionOverflowButtonStyle", 11 },
|
|
|
|
{ "actionModeCloseButtonStyle", 11 },
|
|
|
|
{ "titleTextStyle", 11 },
|
|
|
|
{ "subtitleTextStyle", 11 },
|
|
|
|
{ "iconifiedByDefault", 11 },
|
|
|
|
{ "actionLayout", 11 },
|
|
|
|
{ "actionViewClass", 11 },
|
|
|
|
{ "activatedBackgroundIndicator", 11 },
|
|
|
|
{ "state_activated", 11 },
|
|
|
|
{ "listPopupWindowStyle", 11 },
|
|
|
|
{ "popupMenuStyle", 11 },
|
|
|
|
{ "textAppearanceLargePopupMen", 11 },
|
|
|
|
{ "textAppearanceSmallPopupMen", 11 },
|
|
|
|
{ "breadCrumbTitle", 11 },
|
|
|
|
{ "breadCrumbShortTitle", 11 },
|
|
|
|
{ "listDividerAlertDialog", 11 },
|
|
|
|
{ "textColorAlertDialogListItem", 11 },
|
|
|
|
{ "loopViews", 11 },
|
|
|
|
{ "dialogTheme", 11 },
|
|
|
|
{ "alertDialogTheme", 11 },
|
|
|
|
{ "dividerVertical", 11 },
|
|
|
|
{ "homeAsUpIndicator", 11 },
|
|
|
|
{ "enterFadeDuration", 11 },
|
|
|
|
{ "exitFadeDuration", 11 },
|
|
|
|
{ "selectableItemBackground", 11 },
|
|
|
|
{ "autoAdvanceViewId", 11 },
|
|
|
|
{ "useIntrinsicSizeAsMinimum", 11 },
|
|
|
|
{ "actionModeCutDrawable", 11 },
|
|
|
|
{ "actionModeCopyDrawable", 11 },
|
|
|
|
{ "actionModePasteDrawable", 11 },
|
|
|
|
{ "textEditPasteWindowLayout", 11 },
|
|
|
|
{ "textEditNoPasteWindowLayout", 11 },
|
|
|
|
{ "textIsSelectable", 11 },
|
|
|
|
{ "windowEnableSplitTouch", 11 },
|
|
|
|
{ "indeterminateProgressStyle", 11 },
|
|
|
|
{ "progressBarPadding", 11 },
|
|
|
|
{ "animationResolution", 11 },
|
|
|
|
{ "state_accelerated", 11 },
|
|
|
|
{ "baseline", 11 },
|
|
|
|
{ "homeLayout", 11 },
|
|
|
|
{ "opacity", 11 },
|
|
|
|
{ "alpha", 11 },
|
|
|
|
{ "transformPivotX", 11 },
|
|
|
|
{ "transformPivotY", 11 },
|
|
|
|
{ "translationX", 11 },
|
|
|
|
{ "translationY", 11 },
|
|
|
|
{ "scaleX", 11 },
|
|
|
|
{ "scaleY", 11 },
|
|
|
|
{ "rotation", 11 },
|
|
|
|
{ "rotationX", 11 },
|
|
|
|
{ "rotationY", 11 },
|
|
|
|
{ "showDividers", 11 },
|
|
|
|
{ "dividerPadding", 11 },
|
|
|
|
{ "borderlessButtonStyle", 11 },
|
|
|
|
{ "dividerHorizontal", 11 },
|
|
|
|
{ "itemPadding", 11 },
|
|
|
|
{ "buttonBarStyle", 11 },
|
|
|
|
{ "buttonBarButtonStyle", 11 },
|
|
|
|
{ "segmentedButtonStyle", 11 },
|
|
|
|
{ "staticWallpaperPreview", 11 },
|
|
|
|
{ "allowParallelSyncs", 11 },
|
|
|
|
{ "isAlwaysSyncable", 11 },
|
|
|
|
{ "verticalScrollbarPosition", 11 },
|
|
|
|
{ "fastScrollAlwaysVisible", 11 },
|
|
|
|
{ "fastScrollThumbDrawable", 11 },
|
|
|
|
{ "fastScrollPreviewBackgroundLeft", 11 },
|
|
|
|
{ "fastScrollPreviewBackgroundRight", 11 },
|
|
|
|
{ "fastScrollTrackDrawable", 11 },
|
|
|
|
{ "fastScrollOverlayPosition", 11 },
|
|
|
|
{ "customTokens", 11 },
|
|
|
|
{ "nextFocusForward", 11 },
|
|
|
|
{ "firstDayOfWeek", 11 },
|
|
|
|
{ "showWeekNumber", 11 },
|
|
|
|
{ "minDate", 11 },
|
|
|
|
{ "maxDate", 11 },
|
|
|
|
{ "shownWeekCount", 11 },
|
|
|
|
{ "selectedWeekBackgroundColor", 11 },
|
|
|
|
{ "focusedMonthDateColor", 11 },
|
|
|
|
{ "unfocusedMonthDateColor", 11 },
|
|
|
|
{ "weekNumberColor", 11 },
|
|
|
|
{ "weekSeparatorLineColor", 11 },
|
|
|
|
{ "selectedDateVerticalBar", 11 },
|
|
|
|
{ "weekDayTextAppearance", 11 },
|
|
|
|
{ "dateTextAppearance", 11 },
|
|
|
|
{ "solidColor", 11 },
|
|
|
|
{ "spinnersShown", 11 },
|
|
|
|
{ "calendarViewShown", 11 },
|
|
|
|
{ "state_multiline", 11 },
|
|
|
|
{ "detailsElementBackground", 11 },
|
|
|
|
{ "textColorHighlightInverse", 11 },
|
|
|
|
{ "textColorLinkInverse", 11 },
|
|
|
|
{ "editTextColor", 11 },
|
|
|
|
{ "editTextBackground", 11 },
|
|
|
|
{ "horizontalScrollViewStyle", 11 },
|
|
|
|
{ "layerType", 11 },
|
|
|
|
{ "alertDialogIcon", 11 },
|
|
|
|
{ "windowMinWidthMajor", 11 },
|
|
|
|
{ "windowMinWidthMinor", 11 },
|
|
|
|
{ "queryHint", 11 },
|
|
|
|
{ "fastScrollTextColor", 11 },
|
|
|
|
{ "largeHeap", 11 },
|
|
|
|
{ "windowCloseOnTouchOutside", 11 },
|
|
|
|
{ "datePickerStyle", 11 },
|
|
|
|
{ "calendarViewStyle", 11 },
|
|
|
|
{ "textEditSidePasteWindowLayout", 11 },
|
|
|
|
{ "textEditSideNoPasteWindowLayout", 11 },
|
|
|
|
{ "actionMenuTextAppearance", 11 },
|
|
|
|
{ "actionMenuTextColor", 11 },
|
|
|
|
{ "textCursorDrawable", 12 },
|
|
|
|
{ "resizeMode", 12 },
|
|
|
|
{ "requiresSmallestWidthDp", 12 },
|
|
|
|
{ "compatibleWidthLimitDp", 12 },
|
|
|
|
{ "largestWidthLimitDp", 12 },
|
|
|
|
{ "state_hovered", 13 },
|
|
|
|
{ "state_drag_can_accept", 13 },
|
|
|
|
{ "state_drag_hovered", 13 },
|
|
|
|
{ "stopWithTask", 13 },
|
|
|
|
{ "switchTextOn", 13 },
|
|
|
|
{ "switchTextOff", 13 },
|
|
|
|
{ "switchPreferenceStyle", 13 },
|
|
|
|
{ "switchTextAppearance", 13 },
|
|
|
|
{ "track", 13 },
|
|
|
|
{ "switchMinWidth", 13 },
|
|
|
|
{ "switchPadding", 13 },
|
|
|
|
{ "thumbTextPadding", 13 },
|
|
|
|
{ "textSuggestionsWindowStyle", 13 },
|
|
|
|
{ "textEditSuggestionItemLayout", 13 },
|
|
|
|
{ "rowCount", 13 },
|
|
|
|
{ "rowOrderPreserved", 13 },
|
|
|
|
{ "columnCount", 13 },
|
|
|
|
{ "columnOrderPreserved", 13 },
|
|
|
|
{ "useDefaultMargins", 13 },
|
|
|
|
{ "alignmentMode", 13 },
|
|
|
|
{ "layout_row", 13 },
|
|
|
|
{ "layout_rowSpan", 13 },
|
|
|
|
{ "layout_columnSpan", 13 },
|
|
|
|
{ "actionModeSelectAllDrawable", 13 },
|
|
|
|
{ "isAuxiliary", 13 },
|
|
|
|
{ "accessibilityEventTypes", 13 },
|
|
|
|
{ "packageNames", 13 },
|
|
|
|
{ "accessibilityFeedbackType", 13 },
|
|
|
|
{ "notificationTimeout", 13 },
|
|
|
|
{ "accessibilityFlags", 13 },
|
|
|
|
{ "canRetrieveWindowContent", 13 },
|
|
|
|
{ "listPreferredItemHeightLarge", 13 },
|
|
|
|
{ "listPreferredItemHeightSmall", 13 },
|
|
|
|
{ "actionBarSplitStyle", 13 },
|
|
|
|
{ "actionProviderClass", 13 },
|
|
|
|
{ "backgroundStacked", 13 },
|
|
|
|
{ "backgroundSplit", 13 },
|
|
|
|
{ "textAllCaps", 13 },
|
|
|
|
{ "colorPressedHighlight", 13 },
|
|
|
|
{ "colorLongPressedHighlight", 13 },
|
|
|
|
{ "colorFocusedHighlight", 13 },
|
|
|
|
{ "colorActivatedHighlight", 13 },
|
|
|
|
{ "colorMultiSelectHighlight", 13 },
|
|
|
|
{ "drawableStart", 13 },
|
|
|
|
{ "drawableEnd", 13 },
|
|
|
|
{ "actionModeStyle", 13 },
|
|
|
|
{ "minResizeWidth", 13 },
|
|
|
|
{ "minResizeHeight", 13 },
|
|
|
|
{ "actionBarWidgetTheme", 13 },
|
|
|
|
{ "uiOptions", 13 },
|
|
|
|
{ "subtypeLocale", 13 },
|
|
|
|
{ "subtypeExtraValue", 13 },
|
|
|
|
{ "actionBarDivider", 13 },
|
|
|
|
{ "actionBarItemBackground", 13 },
|
|
|
|
{ "actionModeSplitBackground", 13 },
|
|
|
|
{ "textAppearanceListItem", 13 },
|
|
|
|
{ "textAppearanceListItemSmall", 13 },
|
|
|
|
{ "targetDescriptions", 13 },
|
|
|
|
{ "directionDescriptions", 13 },
|
|
|
|
{ "overridesImplicitlyEnabledSubtype", 13 },
|
|
|
|
{ "listPreferredItemPaddingLeft", 13 },
|
|
|
|
{ "listPreferredItemPaddingRight", 13 },
|
|
|
|
{ "requiresFadingEdge", 13 },
|
|
|
|
{ "publicKey", 13 },
|
|
|
|
{ "parentActivityName", 16 },
|
|
|
|
{ "isolatedProcess", 16 },
|
|
|
|
{ "importantForAccessibility", 16 },
|
|
|
|
{ "keyboardLayout", 16 },
|
|
|
|
{ "fontFamily", 16 },
|
|
|
|
{ "mediaRouteButtonStyle", 16 },
|
|
|
|
{ "mediaRouteTypes", 16 },
|
|
|
|
{ "supportsRtl", 17 },
|
|
|
|
{ "textDirection", 17 },
|
|
|
|
{ "textAlignment", 17 },
|
|
|
|
{ "layoutDirection", 17 },
|
|
|
|
{ "paddingStart", 17 },
|
|
|
|
{ "paddingEnd", 17 },
|
|
|
|
{ "layout_marginStart", 17 },
|
|
|
|
{ "layout_marginEnd", 17 },
|
|
|
|
{ "layout_toStartOf", 17 },
|
|
|
|
{ "layout_toEndOf", 17 },
|
|
|
|
{ "layout_alignStart", 17 },
|
|
|
|
{ "layout_alignEnd", 17 },
|
|
|
|
{ "layout_alignParentStart", 17 },
|
|
|
|
{ "layout_alignParentEnd", 17 },
|
|
|
|
{ "listPreferredItemPaddingStart", 17 },
|
|
|
|
{ "listPreferredItemPaddingEnd", 17 },
|
|
|
|
{ "singleUser", 17 },
|
|
|
|
{ "presentationTheme", 17 },
|
|
|
|
{ "subtypeId", 17 },
|
|
|
|
{ "initialKeyguardLayout", 17 },
|
|
|
|
{ "widgetCategory", 17 },
|
|
|
|
{ "permissionGroupFlags", 17 },
|
|
|
|
{ "labelFor", 17 },
|
|
|
|
{ "permissionFlags", 17 },
|
|
|
|
{ "checkedTextViewStyle", 17 },
|
|
|
|
{ "showOnLockScreen", 17 },
|
|
|
|
{ "format12Hour", 17 },
|
|
|
|
{ "format24Hour", 17 },
|
|
|
|
{ "timeZone", 17 },
|
|
|
|
{ "mipMap", 18 },
|
|
|
|
{ "mirrorForRtl", 18 },
|
|
|
|
{ "windowOverscan", 18 },
|
|
|
|
{ "requiredForAllUsers", 18 },
|
|
|
|
{ "indicatorStart", 18 },
|
|
|
|
{ "indicatorEnd", 18 },
|
|
|
|
{ "childIndicatorStart", 18 },
|
|
|
|
{ "childIndicatorEnd", 18 },
|
|
|
|
{ "restrictedAccountType", 18 },
|
|
|
|
{ "requiredAccountType", 18 },
|
|
|
|
{ "canRequestTouchExplorationMode", 18 },
|
|
|
|
{ "canRequestEnhancedWebAccessibility", 18 },
|
|
|
|
{ "canRequestFilterKeyEvents", 18 },
|
|
|
|
{ "layoutMode", 18 },
|
|
|
|
{ "keySet", 19 },
|
|
|
|
{ "targetId", 19 },
|
|
|
|
{ "fromScene", 19 },
|
|
|
|
{ "toScene", 19 },
|
|
|
|
{ "transition", 19 },
|
|
|
|
{ "transitionOrdering", 19 },
|
|
|
|
{ "fadingMode", 19 },
|
|
|
|
{ "startDelay", 19 },
|
|
|
|
{ "ssp", 19 },
|
|
|
|
{ "sspPrefix", 19 },
|
|
|
|
{ "sspPattern", 19 },
|
|
|
|
{ "addPrintersActivity", 19 },
|
|
|
|
{ "vendor", 19 },
|
|
|
|
{ "category", 19 },
|
|
|
|
{ "isAsciiCapable", 19 },
|
|
|
|
{ "autoMirrored", 19 },
|
|
|
|
{ "supportsSwitchingToNextInputMethod", 19 },
|
|
|
|
{ "requireDeviceUnlock", 19 },
|
|
|
|
{ "apduServiceBanner", 19 },
|
|
|
|
{ "accessibilityLiveRegion", 19 },
|
|
|
|
{ "windowTranslucentStatus", 19 },
|
|
|
|
{ "windowTranslucentNavigation", 19 },
|
|
|
|
{ "advancedPrintOptionsActivity", 19 },
|
|
|
|
{ "banner", 20 },
|
|
|
|
{ "windowSwipeToDismiss", 20 },
|
|
|
|
{ "isGame", 20 },
|
|
|
|
{ "allowEmbedded", 20 },
|
|
|
|
{ "setupActivity", 20 },
|
|
|
|
{ "fastScrollStyle", 21 },
|
|
|
|
{ "windowContentTransitions", 21 },
|
|
|
|
{ "windowContentTransitionManager", 21 },
|
|
|
|
{ "translationZ", 21 },
|
|
|
|
{ "tintMode", 21 },
|
|
|
|
{ "controlX1", 21 },
|
|
|
|
{ "controlY1", 21 },
|
|
|
|
{ "controlX2", 21 },
|
|
|
|
{ "controlY2", 21 },
|
|
|
|
{ "transitionName", 21 },
|
|
|
|
{ "transitionGroup", 21 },
|
|
|
|
{ "viewportWidth", 21 },
|
|
|
|
{ "viewportHeight", 21 },
|
|
|
|
{ "fillColor", 21 },
|
|
|
|
{ "pathData", 21 },
|
|
|
|
{ "strokeColor", 21 },
|
|
|
|
{ "strokeWidth", 21 },
|
|
|
|
{ "trimPathStart", 21 },
|
|
|
|
{ "trimPathEnd", 21 },
|
|
|
|
{ "trimPathOffset", 21 },
|
|
|
|
{ "strokeLineCap", 21 },
|
|
|
|
{ "strokeLineJoin", 21 },
|
|
|
|
{ "strokeMiterLimit", 21 },
|
|
|
|
{ "colorControlNormal", 21 },
|
|
|
|
{ "colorControlActivated", 21 },
|
|
|
|
{ "colorButtonNormal", 21 },
|
|
|
|
{ "colorControlHighlight", 21 },
|
|
|
|
{ "persistableMode", 21 },
|
|
|
|
{ "titleTextAppearance", 21 },
|
|
|
|
{ "subtitleTextAppearance", 21 },
|
|
|
|
{ "slideEdge", 21 },
|
|
|
|
{ "actionBarTheme", 21 },
|
|
|
|
{ "textAppearanceListItemSecondary", 21 },
|
|
|
|
{ "colorPrimary", 21 },
|
|
|
|
{ "colorPrimaryDark", 21 },
|
|
|
|
{ "colorAccent", 21 },
|
|
|
|
{ "nestedScrollingEnabled", 21 },
|
|
|
|
{ "windowEnterTransition", 21 },
|
|
|
|
{ "windowExitTransition", 21 },
|
|
|
|
{ "windowSharedElementEnterTransition", 21 },
|
|
|
|
{ "windowSharedElementExitTransition", 21 },
|
|
|
|
{ "windowAllowReturnTransitionOverlap", 21 },
|
|
|
|
{ "windowAllowEnterTransitionOverlap", 21 },
|
|
|
|
{ "sessionService", 21 },
|
|
|
|
{ "stackViewStyle", 21 },
|
|
|
|
{ "switchStyle", 21 },
|
|
|
|
{ "elevation", 21 },
|
|
|
|
{ "excludeId", 21 },
|
|
|
|
{ "excludeClass", 21 },
|
|
|
|
{ "hideOnContentScroll", 21 },
|
|
|
|
{ "actionOverflowMenuStyle", 21 },
|
|
|
|
{ "documentLaunchMode", 21 },
|
|
|
|
{ "maxRecents", 21 },
|
|
|
|
{ "autoRemoveFromRecents", 21 },
|
|
|
|
{ "stateListAnimator", 21 },
|
|
|
|
{ "toId", 21 },
|
|
|
|
{ "fromId", 21 },
|
|
|
|
{ "reversible", 21 },
|
|
|
|
{ "splitTrack", 21 },
|
|
|
|
{ "targetName", 21 },
|
|
|
|
{ "excludeName", 21 },
|
|
|
|
{ "matchOrder", 21 },
|
|
|
|
{ "windowDrawsSystemBarBackgrounds", 21 },
|
|
|
|
{ "statusBarColor", 21 },
|
|
|
|
{ "navigationBarColor", 21 },
|
|
|
|
{ "contentInsetStart", 21 },
|
|
|
|
{ "contentInsetEnd", 21 },
|
|
|
|
{ "contentInsetLeft", 21 },
|
|
|
|
{ "contentInsetRight", 21 },
|
|
|
|
{ "paddingMode", 21 },
|
|
|
|
{ "layout_rowWeight", 21 },
|
|
|
|
{ "layout_columnWeight", 21 },
|
|
|
|
{ "translateX", 21 },
|
|
|
|
{ "translateY", 21 },
|
|
|
|
{ "selectableItemBackgroundBorderless", 21 },
|
|
|
|
{ "elegantTextHeight", 21 },
|
|
|
|
{ "searchKeyphraseId", 21 },
|
|
|
|
{ "searchKeyphrase", 21 },
|
|
|
|
{ "searchKeyphraseSupportedLocales", 21 },
|
|
|
|
{ "windowTransitionBackgroundFadeDuration", 21 },
|
|
|
|
{ "overlapAnchor", 21 },
|
|
|
|
{ "progressTint", 21 },
|
|
|
|
{ "progressTintMode", 21 },
|
|
|
|
{ "progressBackgroundTint", 21 },
|
|
|
|
{ "progressBackgroundTintMode", 21 },
|
|
|
|
{ "secondaryProgressTint", 21 },
|
|
|
|
{ "secondaryProgressTintMode", 21 },
|
|
|
|
{ "indeterminateTint", 21 },
|
|
|
|
{ "indeterminateTintMode", 21 },
|
|
|
|
{ "backgroundTint", 21 },
|
|
|
|
{ "backgroundTintMode", 21 },
|
|
|
|
{ "foregroundTint", 21 },
|
|
|
|
{ "foregroundTintMode", 21 },
|
|
|
|
{ "buttonTint", 21 },
|
|
|
|
{ "buttonTintMode", 21 },
|
|
|
|
{ "thumbTint", 21 },
|
|
|
|
{ "thumbTintMode", 21 },
|
|
|
|
{ "fullBackupOnly", 21 },
|
|
|
|
{ "propertyXName", 21 },
|
|
|
|
{ "propertyYName", 21 },
|
|
|
|
{ "relinquishTaskIdentity", 21 },
|
|
|
|
{ "tileModeX", 21 },
|
|
|
|
{ "tileModeY", 21 },
|
|
|
|
{ "actionModeShareDrawable", 21 },
|
|
|
|
{ "actionModeFindDrawable", 21 },
|
|
|
|
{ "actionModeWebSearchDrawable", 21 },
|
|
|
|
{ "transitionVisibilityMode", 21 },
|
|
|
|
{ "minimumHorizontalAngle", 21 },
|
|
|
|
{ "minimumVerticalAngle", 21 },
|
|
|
|
{ "maximumAngle", 21 },
|
|
|
|
{ "searchViewStyle", 21 },
|
|
|
|
{ "closeIcon", 21 },
|
|
|
|
{ "goIcon", 21 },
|
|
|
|
{ "searchIcon", 21 },
|
|
|
|
{ "voiceIcon", 21 },
|
|
|
|
{ "commitIcon", 21 },
|
|
|
|
{ "suggestionRowLayout", 21 },
|
|
|
|
{ "queryBackground", 21 },
|
|
|
|
{ "submitBackground", 21 },
|
|
|
|
{ "buttonBarPositiveButtonStyle", 21 },
|
|
|
|
{ "buttonBarNeutralButtonStyle", 21 },
|
|
|
|
{ "buttonBarNegativeButtonStyle", 21 },
|
|
|
|
{ "popupElevation", 21 },
|
|
|
|
{ "actionBarPopupTheme", 21 },
|
|
|
|
{ "multiArch", 21 },
|
|
|
|
{ "touchscreenBlocksFocus", 21 },
|
|
|
|
{ "windowElevation", 21 },
|
|
|
|
{ "launchTaskBehindTargetAnimation", 21 },
|
|
|
|
{ "launchTaskBehindSourceAnimation", 21 },
|
|
|
|
{ "restrictionType", 21 },
|
|
|
|
{ "dayOfWeekBackground", 21 },
|
|
|
|
{ "dayOfWeekTextAppearance", 21 },
|
|
|
|
{ "headerMonthTextAppearance", 21 },
|
|
|
|
{ "headerDayOfMonthTextAppearance", 21 },
|
|
|
|
{ "headerYearTextAppearance", 21 },
|
|
|
|
{ "yearListItemTextAppearance", 21 },
|
|
|
|
{ "yearListSelectorColor", 21 },
|
|
|
|
{ "calendarTextColor", 21 },
|
|
|
|
{ "recognitionService", 21 },
|
|
|
|
{ "timePickerStyle", 21 },
|
|
|
|
{ "timePickerDialogTheme", 21 },
|
|
|
|
{ "headerTimeTextAppearance", 21 },
|
|
|
|
{ "headerAmPmTextAppearance", 21 },
|
|
|
|
{ "numbersTextColor", 21 },
|
|
|
|
{ "numbersBackgroundColor", 21 },
|
|
|
|
{ "numbersSelectorColor", 21 },
|
|
|
|
{ "amPmTextColor", 21 },
|
|
|
|
{ "amPmBackgroundColor", 21 },
|
|
|
|
{ "searchKeyphraseRecognitionFlags", 21 },
|
|
|
|
{ "checkMarkTint", 21 },
|
|
|
|
{ "checkMarkTintMode", 21 },
|
|
|
|
{ "popupTheme", 21 },
|
|
|
|
{ "toolbarStyle", 21 },
|
|
|
|
{ "windowClipToOutline", 21 },
|
|
|
|
{ "datePickerDialogTheme", 21 },
|
|
|
|
{ "showText", 21 },
|
|
|
|
{ "windowReturnTransition", 21 },
|
|
|
|
{ "windowReenterTransition", 21 },
|
|
|
|
{ "windowSharedElementReturnTransition", 21 },
|
|
|
|
{ "windowSharedElementReenterTransition", 21 },
|
|
|
|
{ "resumeWhilePausing", 21 },
|
|
|
|
{ "datePickerMode", 21 },
|
|
|
|
{ "timePickerMode", 21 },
|
|
|
|
{ "inset", 21 },
|
|
|
|
{ "letterSpacing", 21 },
|
|
|
|
{ "fontFeatureSettings", 21 },
|
|
|
|
{ "outlineProvider", 21 },
|
|
|
|
{ "contentAgeHint", 21 },
|
|
|
|
{ "country", 21 },
|
|
|
|
{ "windowSharedElementsUseOverlay", 21 },
|
|
|
|
{ "reparent", 21 },
|
|
|
|
{ "reparentWithOverlay", 21 },
|
|
|
|
{ "ambientShadowAlpha", 21 },
|
|
|
|
{ "spotShadowAlpha", 21 },
|
|
|
|
{ "navigationIcon", 21 },
|
|
|
|
{ "navigationContentDescription", 21 },
|
|
|
|
{ "fragmentExitTransition", 21 },
|
|
|
|
{ "fragmentEnterTransition", 21 },
|
|
|
|
{ "fragmentSharedElementEnterTransition", 21 },
|
|
|
|
{ "fragmentReturnTransition", 21 },
|
|
|
|
{ "fragmentSharedElementReturnTransition", 21 },
|
|
|
|
{ "fragmentReenterTransition", 21 },
|
|
|
|
{ "fragmentAllowEnterTransitionOverlap", 21 },
|
|
|
|
{ "fragmentAllowReturnTransitionOverlap", 21 },
|
|
|
|
{ "patternPathData", 21 },
|
|
|
|
{ "strokeAlpha", 21 },
|
|
|
|
{ "fillAlpha", 21 },
|
|
|
|
{ "windowActivityTransitions", 21 },
|
|
|
|
{ "colorEdgeEffect", 21 }
|
2014-11-14 14:48:12 -08:00
|
|
|
};
|
|
|
|
|
2015-06-03 14:54:23 -07:00
|
|
|
size_t findAttributeSdkLevel(const ResourceName& name) {
|
2016-07-08 15:00:32 -07:00
|
|
|
if (name.package != "android" && name.type != ResourceType::kAttr) {
|
2015-06-03 14:54:23 -07:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
auto iter = sAttrMap.find(name.entry);
|
2014-11-14 14:48:12 -08:00
|
|
|
if (iter != sAttrMap.end()) {
|
|
|
|
return iter->second;
|
|
|
|
}
|
2015-06-03 14:54:23 -07:00
|
|
|
return SDK_LOLLIPOP_MR1;
|
2014-11-14 14:48:12 -08:00
|
|
|
}
|
|
|
|
|
2016-07-08 15:00:32 -07:00
|
|
|
std::pair<StringPiece, int> getDevelopmentSdkCodeNameAndVersion() {
|
|
|
|
return std::make_pair(StringPiece(sDevelopmentSdkCodeName), sDevelopmentSdkLevel);
|
2016-06-28 14:40:32 -07:00
|
|
|
}
|
|
|
|
|
2014-11-14 14:48:12 -08:00
|
|
|
} // namespace aapt
|