]> git.saurik.com Git - android/aapt.git/commit - Resource.cpp
Add --output-text-symbols option to aapt.
authorXavier Ducrohet <xav@android.com>
Tue, 11 Sep 2012 21:45:22 +0000 (14:45 -0700)
committerXavier Ducrohet <xav@android.com>
Wed, 12 Sep 2012 01:19:00 +0000 (18:19 -0700)
commit232580c6c07e335d756a8c23e80d705fff3b8804
tree9ba54bb8fc9bc80fffd20f7bb1d99bdfa0c10890
parent3b8c05ce0707be71abb209f7dbae564088426d87
Add --output-text-symbols option to aapt.

Library projects in the SDK are built using --non-constant-id
to generate a temporary R.java class.
When the library is packaged with the application to generate an
apk, the R class is recreated with the proper IDs due to all the
resources coming from the app and all the libraries.

However for large apps with many libraries (each with their own
R class in their package), this means a lot of unnecessary IDs:
all R classes contains all the IDs including for resources from
by projects they don't have access through the dependency graph.

For really large apps (X,000 resources), with lots of libraries
(10+), this can generate tens of thousands of resources, which
can trigger dalvik's limit of 65K fields and methods per dex
files.

This changes lets aapt generate not only the R class but a simple
text file containing the list of all those IDs so that it is
easier to parse back. The SDK build system will not ask aapt
to generate the R class of the libraries (through the
--extra-packages option), instead it will then read this
file to know what IDs are needed for each library and generate
a much smaller R class for each library (using the same text
file output from compiling all the resources to get the final
integer value).

Change-Id: I4db959fec372cf3ead9950e4b2b82fa1ae7eed2d
Bundle.h
Main.cpp
Resource.cpp