- Fixes casting problems with stricter compilers
- Adds a couple of missing ifdef guards
This is a first step toward being able to generate APKs on the fly on the device.
Bug: 2766918
Change-Id: Icaaee5a4032afa313256add321b447443861dd85
Merge commit '6b22d81aa35d9a9b32670995c002e92588b2fe09' into gingerbread
* commit '6b22d81aa35d9a9b32670995c002e92588b2fe09':
As Donut (API=4) devices and earlier do not have a Bluetooth API, .apk files
that have minSdkLevel (or targetSdkLevel) set to 4 or lower should not be
presumed to require Bluetooth just because they take the permission.
Change-Id: Ia629e9ef0425a577e4e14f9b348f5aa2b39c1e74
Merge commit '9d71860e8cbaf16ddae3cd5d06ede8e6cfc7675a' into gingerbread
* commit '9d71860e8cbaf16ddae3cd5d06ede8e6cfc7675a':
The aapt and aidl tools are prebuilt when we're doing an apps-only build, so don't try to build them.
Translatable strings that have multiple substitutions should use
positional String.format() substitutions. This change makes it an error
not to use that format on translatable strings that have more than one
substitution in its text.
Change-Id: I3a19707f3804aa24e8568dc1653a11576cac5916
Merge commit 'f7ebcfeccbd4433be5252857a854a6b565bf3fb9' into kraken
* commit 'f7ebcfeccbd4433be5252857a854a6b565bf3fb9':
Adding the backward-compatible filtering heuristics for the new device
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
The previous warning made it seem like it could be using the value
specified on the command line, but, in fact, it would ignore the command
line value if it were already specified in the AndroidManifest.xml
Change-Id: I15e8161e094f17412680d25d3b7b810474eb4a31
For the UTF8/UTF16 switch code, we needed to know what was the
minSdkVersion specified as early as possible. Unfortunately, this threw
warnings when the SDK was compiling since we always set this field in
the Bundle.
This splits out the field used by the initial AndroidManifest.xml scan
to a separate one that we won't attempt to re-insert into the
AndroidManifest.xml This also switches the logic to better reflect the
preference of UTF-8 over UTF-16; previously UTF-16 was the default.
Change-Id: Ia81f6b21047043ebb711eb24c2c3718534979ef6
When you have too many rows and columns, there are not enough colors in
the 9-patch private metadata to represent them. Instead of crashing
aapt, this change gives the user an error message telling them why it's
invalid.
Change-Id: I5e7bd59472a3a2eafa7cbc263792458cce2b5594
When there are two configs in a StringPool that would match a string ID
only keep the more generic entry to save some space. This means that if
you have both "es" and "es_US" translations that have the same
translation, the string entry would be removed from the "es_US" config.
Change-Id: I4d619942d35ddb477e2eabe4437b7f02697c24de
This loosens our restriction on many manifest attributes requiring
literal string values, to allow various ones to use values from
resources. This is only allowed if the resource value does not change
from configuration changes, and the restriction is still in place
for attributes that are core to security (requesting permissions) or
market operation (used libraries and features etc).
Change-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8
"*** " (three stars and a space) is the 'magic make error string'; so this change makes it
easier to find the real issues/errors in build logs. Besides, other aapt messages are "**** ".
If an overlay has a type of resources that's not defined in
the main res pool, then aapt would crash.
This dynamically create new ResourceTypeSet when needed
when processing the overlays
Change-Id: I67bc3622281bde73cf42f37a0983798d3f658ce2
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. :(
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.
Fix bug where applications defining a minSdkVersion were experiencing
transient errors from memory corruption in aapt.
Change-Id: I839d5eda7388baac6133e735fa59f9799ca2822d
android:minSdkVersion wasn't being correctly scanned because the
namespace was incorrect. This fixes that problem so packages aren't
generated as UTF-8 when minSdkVersion is less than 7.
Change-Id: I8f45d47ea886915da6a4770f6e111e6085d61bee
StringBlock instances containing UTF-8 strings use a cache to convert
into UTF-16, but using that cache and then using a JNI call to NewString
causes the UTF-8 string as well as two copies of the UTF-16 string to
be held in memory. Getting the UTF-8 string directly from the StringPool
eliminates one copy of the UTF-16 string being held in memory.
This is part 1. Part 2 will include ResXMLParser optimizations.
Change-Id: Ibd4509a485db746d59cd4b9501f544877139276c
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
Was using argument that is set default to NULL as a shortcut to an
enum's value. Change it to reference to class directly to avoid a null
pointer dereference.
Change-Id: I16b8ee15af4f095f027113131d574b70768994b0
The device mode is now called ui mode. Furthermore is the order of
precedence for the resources now in such a way that the ui mode needs
to be specified after the orientation and before the density.
The ui mode can be set, like it is done for the locale, as follows:
IActivityManager am = ActivityManagerNative.getDefault();
Configuration config = am.getConfiguration();
config.uiMode = Configuration.UI_MODE_TYPE_CAR | Configuration.UI_MODE_NIGHT_ANY;
am.updateConfiguration(config);
To allow users to disable the car mode and set the night mode the IUiModeManager
interface is used.
The automatic night mode switching will be added in a separate change.
This option allows resources only present in overlays to be
added automatically instead of being declared through <add-resource>
Change-Id: Iff782311056f6a045193e57d204f7d3413e11b26
It allows you to force override the manifest
package listed in the AndroidManifest.xml when
creating an APK file.
Change-Id: I7eac7943c4e56610b65728ae54773a273634fd9d
Merge commit '3c05f1fbac2ce35483f61dbd5d5bfb6341da6d9c'
* commit '3c05f1fbac2ce35483f61dbd5d5bfb6341da6d9c':
Add instrumentation as a source tag for proguard keep options.
Merge commit '6f9e2c648c0588a2eedef2746c9750ed9c6945be' into eclair-plus-aosp
* commit '6f9e2c648c0588a2eedef2746c9750ed9c6945be':
Find layout classes in all "layout-*" dirs.
Merge commit 'b5fb50a133c6fc7fc93d6241912dd9ec24de6ace' into eclair-plus-aosp
* commit 'b5fb50a133c6fc7fc93d6241912dd9ec24de6ace':
Add instrumentation as a source tag for proguard keep options.
Merge commit 'b4f41119044e5ec7f7b76ed4ac02b5cfbaeb474d'
* commit 'b4f41119044e5ec7f7b76ed4ac02b5cfbaeb474d':
Only output proguard keep for nonempty attribute name in the AndroidManifest.xml.
Merge commit 'a1d08886ec8549878ad16c19754a3239706fb61b' into eclair-plus-aosp
* commit 'a1d08886ec8549878ad16c19754a3239706fb61b':
Only output proguard keep for nonempty attribute name in the AndroidManifest.xml.