blob: f09ffbe4466b0869a17cdcad1610e0d66bfaf59c [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
Exposing a new resource:
To add a new entry, find the corresponding "staging-public-group" with the correct type for
your resource, and add a new entry to the BOTTOM of the list. This ensures that indexes
don't shift for previously added resources, and the new one will be appended to the end.
To add R.attr.exampleAttrName:
<staging-public-group type="attr" first-id="0x1ff0000">
<public name="previouslyAdded1"/>
<public name="previouslyAdded2"/>
<public name="exampleAttrName"/>
</staging-public-group>
Deleting a resource:
If a resource is no longer supported/used, it can be marked removed by renaming the
resource with a `removed_` prefix. This preserves the indexes of other resources so as not
to break apps that have compiled with their integers previously.
To remove R.attr.previouslyAdded2:
<staging-public-group type="attr" first-id="0x1ff0000">
<public name="previouslyAdded1"/>
<public name="removed_previouslyAdded2"/>
<public name="exampleAttrName"/>
</staging-public-group>
IMPORTANT: Deleting an entry is never allowed, even across branches or reverts. Please take
this into account before merging a change which edits this file. Small, isolated changes
which only add/remove resources is recommended to avoid reverts due to build/test failures.
Renaming a resource:
This is generally fine and can be done to the entry directly, with no other changes. But
note that any apps/tooling that resolve against resource names rather than IDs may break
as a result. This is uncommon, but not rare.
Finalizing a release's resources:
1. $ANDROID_BUILD_TOP/frameworks/base/tools/aapt2/tools/finalize_res.py \
$ANDROID_BUILD_TOP/frameworks/base/core/res/res/values/public-staging.xml \
$ANDROID_BUILD_TOP/frameworks/base/core/res/res/values/public-final.xml
2. Rename "NEXT" in the new public-staging.xml resources header to the next platform short
version code
Finalizing a release's resources (manually; only for reference):
1. Delete all "staging-public-group" blocks for the release with no entries inside them
2. Rename the remaining "staging-public-group" blocks for that release to
"staging-public-group-final"
3. Cut them out this file and place at the bottom of public-final.xml; also move the
"Resources added in version ? of the platform" header
4. Copy-paste all of the non-"removed_" resources outside of the staging blocks into being
siblings alongside them
5. Assign them final public IDs in the form of
<public type="attr" name="exampleAttrName" id="0x0101088a" />
by finding the last ID for that type and incrementing the last 4 characters by 1 in
hexadecimal
6. Back in this file, seed the next release's resources by adding "staging-public-group"
tags with their "first-id" value shifted by -0x00010000 from the lowest "first-id"
in the last used "staging-public-group-final"
Example:
Starting public-staging.xml:
<!\- ===============================================================
Resources added in version ? of the platform
=============================================================== -\>
<eat-comment />
<staging-public-group type="attr" first-id="0x01ff0000">
<public name="exampleAttr1"/>
<public name="removed_exampleAttr2"/>
<public name="exampleAttr3"/>
</staging-public-group>
<staging-public-group type="id" first-id="0x01fe0000">
</staging-public-group>
Resulting public-final.xml:
<!\- ===============================================================
Resources added in version ? of the platform
=============================================================== -\>
<eat-comment />
<staging-public-group-final type="attr" first-id="0x01ff0000">
<public name="exampleAttr1"/>
<public name="removed_exampleAttr2"/>
<public name="exampleAttr3"/>
</staging-public-group-final>
<public type="id" name="exampleAttr1" id="0x0101088a"/>
<public type="id" name="exampleAttr3" id="0x0101088b"/>
Resulting public-staging.xml:
<!\- ===============================================================
Resources added in version (? + 1) of the platform
=============================================================== -\>
<eat-comment />
<staging-public-group type="attr" first-id="0x01fd0000">
</staging-public-group>
<staging-public-group type="id" first-id="0x01fc0000">
</staging-public-group>
-->
<resources>
<!-- ===============================================================
Resources added in version U of the platform
NOTE: After this version of the platform is forked, changes cannot be made to the root
branch's groups for that release. Only merge changes to the forked platform branch.
=============================================================== -->
<eat-comment/>
<staging-public-group type="attr" first-id="0x01ce0000">
</staging-public-group>
<staging-public-group type="id" first-id="0x01cd0000">
</staging-public-group>
<staging-public-group type="style" first-id="0x01cc0000">
</staging-public-group>
<staging-public-group type="string" first-id="0x01cb0000">
</staging-public-group>
<staging-public-group type="dimen" first-id="0x01ca0000">
</staging-public-group>
<staging-public-group type="color" first-id="0x01c90000">
</staging-public-group>
<staging-public-group type="array" first-id="0x01c80000">
</staging-public-group>
<staging-public-group type="drawable" first-id="0x01c70000">
</staging-public-group>
<staging-public-group type="layout" first-id="0x01c60000">
</staging-public-group>
<staging-public-group type="anim" first-id="0x01c50000">
</staging-public-group>
<staging-public-group type="animator" first-id="0x01c40000">
</staging-public-group>
<staging-public-group type="interpolator" first-id="0x01c30000">
</staging-public-group>
<staging-public-group type="mipmap" first-id="0x01c20000">
</staging-public-group>
<staging-public-group type="integer" first-id="0x01c10000">
</staging-public-group>
<staging-public-group type="transition" first-id="0x01c00000">
</staging-public-group>
<staging-public-group type="raw" first-id="0x01bf0000">
</staging-public-group>
<staging-public-group type="bool" first-id="0x01be0000">
</staging-public-group>
<staging-public-group type="fraction" first-id="0x01bd0000">
</staging-public-group>
</resources>