diff options
author | Adam Lesinski <adamlesinski@google.com> | 2015-10-28 15:44:27 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2015-11-30 14:43:43 -0800 |
commit | 07dfd2d8642f8a3630ca6429f740865a0c0bfdf7 (patch) | |
tree | 28a4aa59b021ddbf0f7bcf9890c98994fd16ade8 /tools/aapt/ResourceTable.h | |
parent | 14ed6cf3e7bada4932314969000d384bed6d3f92 (diff) |
Implement AAPT Bundle format
AAPT will scan XML files looking for the <aapt:attr> XML tag.
<!-- @layout/bundle.xml -->
<ImageView xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:src">
<vector android:pathData="..." ...>
</vector>
</aapt:attr>
</ImageView>
The SINGLE child element of the <aapt:attr> tag is extracted into its own top
level resource. It is given a generated name.
The parent element of <aapt:attr> is then given the resource attribute that was assigned
to the `name' attribute. The value is set to a reference to the generated resource.
<!-- @layout/bundle.xml -->
<ImageView android:src="@drawable/bundle_1.xml">
</ImageView>
<!-- @layout/bundle_1.xml -->
<vector android:pathData="..." ...>
</vector>
Bug:22627686
Change-Id: I8575fc4f739011402662fbf6b3db96df0012f598
Diffstat (limited to 'tools/aapt/ResourceTable.h')
-rw-r--r-- | tools/aapt/ResourceTable.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/tools/aapt/ResourceTable.h b/tools/aapt/ResourceTable.h index c4bdf09d8b19..4b7b3cdcef2b 100644 --- a/tools/aapt/ResourceTable.h +++ b/tools/aapt/ResourceTable.h @@ -23,13 +23,14 @@ class ResourceTable; enum { XML_COMPILE_STRIP_COMMENTS = 1<<0, XML_COMPILE_ASSIGN_ATTRIBUTE_IDS = 1<<1, - XML_COMPILE_COMPACT_WHITESPACE = 1<<2, - XML_COMPILE_STRIP_WHITESPACE = 1<<3, - XML_COMPILE_STRIP_RAW_VALUES = 1<<4, - XML_COMPILE_UTF8 = 1<<5, + XML_COMPILE_PARSE_VALUES = 1 << 2, + XML_COMPILE_COMPACT_WHITESPACE = 1<<3, + XML_COMPILE_STRIP_WHITESPACE = 1<<4, + XML_COMPILE_STRIP_RAW_VALUES = 1<<5, + XML_COMPILE_UTF8 = 1<<6, XML_COMPILE_STANDARD_RESOURCE = - XML_COMPILE_STRIP_COMMENTS | XML_COMPILE_ASSIGN_ATTRIBUTE_IDS + XML_COMPILE_STRIP_COMMENTS | XML_COMPILE_ASSIGN_ATTRIBUTE_IDS | XML_COMPILE_PARSE_VALUES | XML_COMPILE_STRIP_WHITESPACE | XML_COMPILE_STRIP_RAW_VALUES }; @@ -83,6 +84,8 @@ struct CompileResourceWorkItem { String16 resourceName; String8 resPath; sp<AaptFile> file; + sp<XMLNode> xmlRoot; + bool needsCompiling = true; }; class ResourceTable : public ResTable::Accessor @@ -206,6 +209,12 @@ public: const sp<AaptFile>& file, const sp<XMLNode>& root); + status_t processBundleFormat(const Bundle* bundle, + const String16& resourceName, + const sp<AaptFile>& file, + const sp<XMLNode>& parent); + + sp<AaptFile> flatten(Bundle* bundle, const sp<const ResourceFilter>& filter, const bool isBase); @@ -586,6 +595,11 @@ private: Res_value* outValue); int getPublicAttributeSdkLevel(uint32_t attrId) const; + status_t processBundleFormatImpl(const Bundle* bundle, + const String16& resourceName, + const sp<AaptFile>& file, + const sp<XMLNode>& parent, + Vector<sp<XMLNode> >* namespaces); String16 mAssetsPackage; PackageType mPackageType; |