63 Commits

Author SHA1 Message Date
Adam Lesinski
fab50875b9 Add support for building split APKs
Build multiple APKs, each containing a disjoint subset
of configurations. These can then be loaded into the device
AssetManager and should operate as if they were never split.

Use the idea of building multiple sets of files, where each
set represents an APK. An ApkBuilder can place files
in a set based on its configuration, but you can actually
add directly to a set, in the case of the resources.arsc and
generated AndroidManifest.xml for splits.

Change-Id: Ic65d3f0ac1bbd290185695b9971d425c85ab1de3
2014-05-11 18:30:12 -07:00
John Spurlock
0a0454fdcc am 642421aa: am 5c31e487: Merge "Introduce new UI_MODE_TYPE_WATCH and qualifier." into klp-modular-dev
* commit '642421aa7f284817cc1a972a7f9c7a64696a0116':
  Introduce new UI_MODE_TYPE_WATCH and qualifier.
2014-04-04 19:34:11 +00:00
John Spurlock
642421aa7f am 5c31e487: Merge "Introduce new UI_MODE_TYPE_WATCH and qualifier." into klp-modular-dev
* commit '5c31e487c4577e1c47ee7c949325d6a13f0d462e':
  Introduce new UI_MODE_TYPE_WATCH and qualifier.
2014-04-04 19:28:09 +00:00
John Spurlock
6c191299a7 Introduce new UI_MODE_TYPE_WATCH and qualifier.
Default ui mode to watch if we have FEATURE_WATCH.

Bug:13395758
Change-Id: Ie5ff95de60e69e91ad3612c7d2f1fca7f49061bd
2014-04-04 15:21:53 -04:00
Adam Lesinski
de898ff429 Shared library resource support
Shared libraries can now export resources for applications
to use.

Exporting resources works the same way the framework exports
resources, by defining the public symbols in res/values/public.xml.

Building a shared library requires aapt to be invoked with the
--shared-lib option. Shared libraries will be assigned a package
ID of 0x00 at build-time. At runtime, all loaded shared libraries
will be assigned a new package ID.

Currently, shared libraries should not import other shared libraries,
as those dependencies will not be loaded at runtime.

At runtime, reflection is used to update the package ID of resource
symbols in the shared library's R class file. The package name of
the R class file is assumed to be the same as the shared library's
package name declared in its manifest. This will be customizable in
a future commit.

See /tests/SharedLibrary/ for examples of a shared library and its
client.

Bug:12724178
Change-Id: I60c0cb8ab87849f8f8a1a13431562fe8603020a7
2014-03-25 12:09:56 -07:00
Narayan Kamath
8c1fc83445 am 28879bbf: am be57fca4: Merge "Extended locales in AAPT / AssetManager."
* commit '28879bbfe89dc4bf2067a7183975ecffb82f68e6':
  Extended locales in AAPT / AssetManager.
2014-02-17 11:06:38 +00:00
Narayan Kamath
788fa41482 Extended locales in AAPT / AssetManager.
Support 3 letter language codes, script codes &
variants. The bulk of the changes are related to
the implementation of command line filtering of
locales etc. The previous code assumed that the
value of each "axis" (locale, density, size etc.)
could be represented by a 4 byte type. This is
no longer the case.

This change introduces a new class, AaptLocaleValue
which holds a (normalized) locale parsed from a
directory name or a filter string. This class takes
responsibility for parsing locales as well as
writing them to ResTable_config structures, which is
their representation in the resource table.

This includes minor changes at the java / JNI level
for AssetManager. We now call locale.toLanguageTag()
to give the native layer a well formed BCP-47 tag.
I've removed some duplicated parsing code in
AssetManager.cpp and replaced them with functions on
ResTable_config. The native getLocales function has
been changed to return well formed BCP-47 locales as
well, so that the corresponding java function can use
Locale.forLanguageTag to construct a Locale object
out of it.

Finally, this change introduces default and copy
constructors for ResTable_config to prevent having
to memset() the associated memory to 0 on every
stack allocation.

(cherry-picked from commit 91447d88f2bdf9c2bf8d1a53570efef6172fba74)

Change-Id: I1b43086860661012f949fb8e5deb7df44519b854
2014-02-14 14:08:57 +00:00
Narayan Kamath
91447d88f2 Extended locales in AAPT / AssetManager.
Support 3 letter language codes, script codes &
variants. The bulk of the changes are related to
the implementation of command line filtering of
locales etc. The previous code assumed that the
value of each "axis" (locale, density, size etc.)
could be represented by a 4 byte type. This is
no longer the case.

This change introduces a new class, AaptLocaleValue
which holds a (normalized) locale parsed from a
directory name or a filter string. This class takes
responsibility for parsing locales as well as
writing them to ResTable_config structures, which is
their representation in the resource table.

This includes minor changes at the java / JNI level
for AssetManager. We now call locale.toLanguageTag()
to give the native layer a well formed BCP-47 tag.
I've removed some duplicated parsing code in
AssetManager.cpp and replaced them with functions on
ResTable_config. The native getLocales function has
been changed to return well formed BCP-47 locales as
well, so that the corresponding java function can use
Locale.forLanguageTag to construct a Locale object
out of it.

Finally, this change introduces default and copy
constructors for ResTable_config to prevent having
to memset() the associated memory to 0 on every
stack allocation.

Change-Id: I899a56a9a182ee6be52b9389d1ae59266f5482e9
2014-02-10 15:50:16 +00:00
Adam Lesinski
94c40a4cf9 resolved conflicts for merge of 1b5b60d6 to master
Change-Id: I2b713a55fcdf02c01afa99f175bf14248f210460
2014-02-04 11:00:03 -08:00
Adam Lesinski
1b5b60d696 am 203356a3: Merge "Add support for multiple asset dirs (-A)" into klp-modular-dev
* commit '203356a34a82bfc759be02dfa1caa4529dce0732':
  Add support for multiple asset dirs (-A)
2014-02-04 18:36:10 +00:00
Narayan Kamath
7c4887f66b Change ResourceType cookies to int32_t.
Also change the order of parameters in ResTable constructors
to avoid ambiguity.

(cherry picked from commit 00b314436f4fdfada4bbf1e79ec12e9fa38aeaf1)

Change-Id: I874c5d03c134dc3c331fba423b5280366296287c
2014-01-31 13:47:27 +00:00
Narayan Kamath
00b314436f Change ResourceType cookies to int32_t.
Also change the order of parameters in ResTable constructors
to avoid ambiguity.

Change-Id: If7bfa1f640dddca39b9f26a3ce84081fa7b6e6e3
2014-01-28 16:27:52 +00:00
Bryan Mawhinney
9ab9b93eae Filter unneeded assets from additional resource directories
This change ensures that assets that are not needed for the
preferred density are stripped from additional directories
specified by the -S flag

For simplicity, the logic for deciding which assets are not
needed is still applied per directory, rather than globally,
which may still result in some unneeded assets being included
in the final output.

Bug: 12604267
Change-Id: Ic1378570c2d9cd1c854c507e784233818c19efca
2014-01-27 10:31:10 -08:00
Adam Lesinski
8cf6184518 Prune unneeded density resources from APK
When a preferred density is specified, prune all but the
closest matching density when the exact density resource does not
exist.

If a preferred density resource does not exist and a higher density
resource exists, prune all but the resource with the next highest
density relative to the preferred density.

If a preferred density resource does not exist and there is no
higher density resource, prune all but the resource with the next
lowest density relative to the preferred density.

Manual merge of I99b3950fe3d8116a5625968ed383442315ae8526 from
frameworks/base/tools to frameworks/tools

bug:11224465
Change-Id: Idddf55dad27f114ffc429b61317c3a5b1435d808
2014-01-27 10:31:08 -08:00
Adam Lesinski
282e181b58 Revert "Move frameworks/base/tools/ to frameworks/tools/"
This reverts commit 9f6a119c8aa276432ece4fe2118bd8a3c9b1067e.
2014-01-27 10:31:04 -08:00
Adam Lesinski
09384303de Add support for multiple asset dirs (-A)
Bug: 12608034
Change-Id: I02c5a1a73b83498d799570428cca3dd914f8ac11
2014-01-23 12:43:42 -08:00
Adam Lesinski
9438c2df13 Prune unneeded density resources from APK
When a preferred density is specified, prune all but the
closest matching density when the exact density resource does not
exist.

If a preferred density resource does not exist and a higher density
resource exists, prune all but the resource with the next highest
density relative to the preferred density.

If a preferred density resource does not exist and there is no
higher density resource, prune all but the resource with the next
lowest density relative to the preferred density.

bug:11224465
Change-Id: I99b3950fe3d8116a5625968ed383442315ae8526
2013-10-15 17:18:51 -07:00
Mike Lockwood
9f6a119c8a Move frameworks/base/tools/ to frameworks/tools/
Change-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8
2013-08-28 09:44:17 -07:00
Mattias Petersson
1d766b5321 Add support for MNC=00
This adds support for operators with MNC (Mobile Network Code) zero
to add customized resources. For example, it makes it possible to
add a folder called "/res/values-mnc00/" in an application. This will
cause resources in that folder to be used when MNC is zero.
(There is a total of 14 countries that have an operator with MNC
zero.)

Without this fix, the resource framework gets confused, because MNC 0
is normally used when the MNC is undefined (not set).

Bug: 7170488
Change-Id: Icfd39fd0c739216e89446252ea0e7ceba6f002c6
2013-07-26 18:42:34 +00:00
Dianne Hackborn
56a2301c7a Implement issue #6646859: 4K!!!! 4K!!!! 4K!!!!
Change-Id: Ib05a2eb6a03db50074805a437a3639a7d10684a0
2013-02-12 15:41:49 -08:00
Fabrice Di Meglio
8a802dbdab Use "ldrtl" and "ldltr" config qualifiers for RTL / LTR resources
- we cannot use "rtl" / "ltr" qualifiers as they can conflict with ISO-639 Alpha-3
codespace which uses 3 letters for identifying a language code (and could use either
"rtl" or "ltr" strings for defining a language in the future).

- we are using instead "ldrtl" for RTL and "ldltr" for LTR resources. Those qualifiers
are defined by more than 3 chars and outside of what is defined into ISO-639. They
are also more understandable as "ld" prefix is for "layoutdirection"

Change-Id: Id43e948103707e09bef63ebd54ac1779dde58e72
2012-09-06 11:13:24 -07:00
Fabrice Di Meglio
5f79799939 Add support for "-rtl" in resources
- fix bug #7035019 Need to have "-rtl" support for Resource

Change-Id: Ic82145c2ac672729d8a6c695a5f343276a1a0a2c
2012-08-23 14:55:33 -07:00
Tor Norbye
9f374b9de5 am 44ff9b8f: am 36ac43ba: Merge "Tweak default ignore-assets path"
* commit '44ff9b8f9294e015031fc9293974604771e5efdd':
  Tweak default ignore-assets path
2012-06-05 08:45:20 -07:00
Tor Norbye
44ff9b8f92 am 36ac43ba: Merge "Tweak default ignore-assets path"
* commit '36ac43ba9982a78b4a047c8970776505a3fab4da':
  Tweak default ignore-assets path
2012-06-05 08:41:16 -07:00
Tor Norbye
e0219c8baa Tweak default ignore-assets path
Add .DS_Store to the list of ignored files that are silently
ignored (other dot-files are ignored but aapt emits a "(skipping <x>)"
message.)

Also, add a "!" prefix to the *~ pattern for Emacs/Vim/Gedit backup
files.

Finally, move the !*.scc pattern up in front of the .* pattern, such
that it doesn't match the earlier .* pattern (which is verbose, unlike
!*.scc).

Change-Id: Id3e96490f1802486aea8c58366d43e9d413971b8
2012-06-04 10:41:38 -07:00
Ying Wang
98a0607a31 Merge "Fix length of pattern." DO NOT MERGE.
After skipping * with "token++", the length should decrease by 1 as
well.

(merged from 996b073e813ba1a22a13282ccdebb664f14ba898)

Change-Id: Ie6232ef603bb31e25e03b926e6c1bb92ac34902d
2012-05-24 11:07:14 -07:00
Ying Wang
996b073e81 Fix length of pattern.
After skipping * with "token++", the length should decrease by 1 as
well.

Change-Id: I132eb7d12bb756f2f713c607e92741ca834aef81
2012-05-22 11:35:22 -07:00
Raphael Moll
6c255a3a37 Merge "AAPT: support a new --ignore-assets flag."
AAPT has a fixed built-in list of files and directories
to ignore when parsing resource files. Over the years we
always had developers requiring specific patterns.

Added a command-line option for it:
  aapt di --ignore-assets "foo*:*.blah"

If the env var ANDROID_AAPT_IGNORE is set, it is parsed
to find which file/directory patterns to ignore.

Otherwise a default is used that matches the current behavior.

SDK Bug: 5343 24067

(cherry-pick from AOSP 90897ed87bce639bf6bb2ccf15fbabb59b131bab)

Change-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f
2012-05-18 20:34:44 -07:00
Raphael Moll
90897ed87b Support a new ANDROID_AAPT_IGNORE env var.
AAPT has a fixed built-in list of files and directories
to ignore when parsing resource files. Over the years we
always had developers requiring specific patterns.
If the env var ANDROID_AAPT_IGNORE is set, it is parsed
to find which file/directory patterns to ignore.
Otherwise a default is used that matches the current behavior.

Added a command-line option for it:
  aapt di --ignore-assets "foo*:*.blah"

SDK Bug: 5343 24067

Change-Id: Ia4caa2a8188c8c1df143f884e459b8182645995f
2012-05-09 21:16:26 -07:00
Dianne Hackborn
1644c6d7f4 Only generate private symbols that are needed.
Change-Id: Icc4c86638db8429a387bf87c934cc712f807e213
2012-02-07 12:57:50 -08:00
Dianne Hackborn
d96e3dfa02 Add xxhdpi; fix ActivityManager.getLauncherLargeIconSize() etc.
Change-Id: I519d6cdc527a402d93b98df17a64fc1da52ad598
2012-01-25 15:14:50 -08:00
Joe Onorato
44fcb83b38 Add a new ui mode for "appliance"
The idea is that this is a device which is more-or-less headless.  It
might have some limited interaction capabilities, but it's not something
that you want to rely on having.

Change-Id: Ib92f53a120bf83de781728011721a4859def7d9f
2011-12-15 16:16:14 -08:00
Dianne Hackborn
bd9d2bcdeb Whoops, remove left-over debug output.
Change-Id: Ib30571b22a6750629f975319a403d38de5e9462c
2011-10-16 14:17:07 -07:00
Dianne Hackborn
e6b680364d New aapt feature to do smarter filtering of configurations.
This adds a --preferred-configurations flag that specifies the
specific configurations you would like to have.

It is smarter than "-c" because it will avoid stripping a
configuration if that would result in there being no value
for the resource.

It is dumber than "-c" because it can't process as many kinds
of resources.  It is really only intended for bitmaps and use
with density configs.

This required re-arranging AaptAssets to group files together
by config again, like they used to be.  I think this hasn't
broken anything.  Hopefully.

Change-Id: I4e9d12ff6e6dbd1abb8fd4cb1814c6674b19d0e5
2011-10-16 11:52:17 -07:00
Xavier Ducrohet
a125c937de resolved conflicts for merge of 2c311be7 to honeycomb-plus-aosp
Change-Id: I806c7b4ae95f66df621587e52497dd8739a115fe
2011-07-20 16:31:25 -07:00
Xavier Ducrohet
9139868b6c am ba6c98db: am 82943ecf: am d40c93f6: Merge "Add dependency generation to Aapt for R.java"
* commit 'ba6c98db8f21016f81ecac35bb0ea3c433044bb7':
  Add dependency generation to Aapt for R.java
2011-07-19 10:18:28 -07:00
Josiah Gaskin
03589cc653 Add generation of dependency file for .ap_ package
Make Aapt generate a dependency file in the same directory as the
output ap_ file if the --generate-dependencies flag is set.
This dependency file can then be read by the ant exec loop task
to see whether to repackage resources.

Change-Id: I763679414daf76369700aa599c26dcf78d4de099
2011-07-18 16:37:55 -07:00
Josiah Gaskin
9bf34ca6f8 Add dependency generation to Aapt for R.java
Make Aapt generate a dependency file in the location specified
by RClassDir for R.java if the --generate-dependencies flag is set.
This dependency file is then read by the ant exec loop task
to see whether to recreate R.java.

Change-Id: I7152dac86b6ea0e448ef65e3a95694afe233c789
2011-06-27 16:44:57 -07:00
Dianne Hackborn
b96cbbd11c Add "tv" density for 720p screens.
Change-Id: I028969b007f2fceea66947d77a2ae31ef1d1a630
2011-05-27 13:40:26 -07:00
Dianne Hackborn
e360bb6bd8 Add "television" mode.
Change-Id: Ida1fdb61b036a8b489dbeda196fb4bc82e651b2b
2011-05-23 15:11:08 -07:00
Dianne Hackborn
69cb87576b Add new "-swNNNdp" resource qualifier.
Change-Id: I0101e88ca9d8d44138bdcaf571f24b0352f4f6ce
2011-05-19 18:23:29 -07:00
Dianne Hackborn
ebff8f92f1 DO NOT MERGE. Integrate add new screen width/height in "dp" configs.
You can now specify resource configuration variants "wNNNdp"
and "hNNNdp".  These are the minimum screen width/height in "dp"
units.  This allows you to do things like have your app adjust
its layout based only on the about of horizontal space available.

This introduces a new configuration change flag for screen size.
Note that this configuration change happens each time the orientation
changes.  Applications often say they handle the orientation change
to avoid being restarted at a screen rotation, and this will now
cause them to be restarted.  To address this, we assume the app can
handle this new config change if its target SDK version is < ICS.

Change-Id: I4acb73d82677b74092c1da9e4046a4951921f9f4
2011-05-12 18:39:51 -07:00
Johan Redestig
5ef0b9d724 Make AaptGroupEntry::getMncName accept mnc00
MNC 00 is a valid network code and is used by
some operators, see http://en.wikipedia.org/wiki/Mobile_Network_Code.

Remove the test that checks if atoi returns zero.
The string is validated to contain only numbers
already.

Also discussed here:
https://code.google.com/p/android/issues/detail?id=3657

Change-Id: I3220d7980abe4067c9e7aa4cbc10b5fd0b8c9ea7
2011-01-04 07:30:32 +01:00
Ficus Kirkpatrick
588f228d6a Add --max-res-version flag to aapt.
aapt will ignore any versioned resource directories over the
specified version (if used).  e.g. --max-res-version=6 will
cause layout-land-v7 to be ignored.

Merged from froyo.

Change-Id: Ia4eabae535b95b75d18b0c83135d44ed9a95b9eb
2010-08-13 14:20:51 -07:00
Dianne Hackborn
168585ed68 am 5474902f: Merge "xhdpi" into froyo
Merge commit '5474902fe9fe72c825855c4a77f99a581a9f6594' into kraken

* commit '5474902fe9fe72c825855c4a77f99a581a9f6594':
  xhdpi
2010-06-06 12:10:05 -07:00
Dianne Hackborn
588feee5e7 xhdpi
This is only a tool (aapt) change, and does not impact any current code.

Change-Id: I562063f612af919eaadba8ac4868a95ff41ac840
2010-06-04 14:36:39 -07:00
Dianne Hackborn
14cee9f688 New xlarge screen size.
Not complete, only for experimentation at this point.

This includes a reworking of how screen size configurations are matched,
so that if you are on a larger screen we can select configurations for
smaller screens if there aren't any exactly matching the current screen.

The screen size at which we switch to xlarge has been arbitrarily
chosen; the compatibility behavior has not yet been defined.

Change-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5
2010-04-28 16:51:52 -07:00
Dianne Hackborn
7299c41630 Refactor car mode.
Extract all UI behavior from dock observer and ACTION_DOCK_EVENT.

Also introduce a desk type to go along with the car type all through
the resource system, since we now need to have corresponding high-level
broadcasts for desk dock mode.  As part of that I also reworked some
of the logic for switching modes to all funnel through a single
update() call that looks all of the current state to decide what to
do next, and fixed various locking issues.

In addition I found there were bugs in the configuration change
handling causing us to only switch into the car mode config and
then never get out of it.  Unfortunately now that we are actually
changing the configuration for each mode change, the transitions
between them are really crummy as we restart all kinds of
activities. :(
2010-03-05 10:57:47 -08:00
Dianne Hackborn
ef05e076ce Fix issue #2448075: aapt doesn't fix up activity-alias android:targetActivity links
And related:

- The aapt tool now sets a resource configurations sdk level to match any configs
  that have been set (for example if you specify density your sdk level will be
  at least 4).
- New option to modify the targetPackage attribute of instrumentation.
- Clean up of aapt options help.
- Fix of UI type values to leave 0 for "unspecified".
- Make the UI mode config APIs public.
2010-03-01 20:42:14 -08:00
Kenny Root
e599f78e77 Use direct reference to enum in AaptAssets
The second argument to the getNavHiddenName can be NULL, so use a direct
reference to the class to get the enum values instead of the argument.

Change-Id: I0444572c23cb4de9e7da15a8310a49cf4619bb15
2010-02-19 12:45:48 -08:00