756 Commits

Author SHA1 Message Date
Mark Salyzyn
4d6c372eae missing includes
Assumptions are made about header side effects

Test: compile
Bug: 30465923
Change-Id: Icc9415aed5e54b2bc00b70aa0da6df4148f30654
2016-10-17 12:32:54 -07:00
George Burgess IV
0c2774b16a Fix static-analyzer warning.
frameworks/base/tools/aapt/Images.cpp:845:17: warning: Assigned value is
garbage or undefined
     row += bpp;

Bug: None.
Test: The warning is gone.
Change-Id: Idf4623d2510111a9188ed39922e109a8db225c76
2016-10-13 15:51:04 -07:00
Treehugger Robot
ac2d839d7c Merge "aapt: remove duplicate definition of ZD" 2016-09-22 21:24:49 +00:00
Colin Cross
cafc05357c Remove has_trivial_move trait from StringPool types
StringPool:entry* are not trivially moveable, as they contain Vector<>
objects.  The data in Vector<> is trivially moveable, but Vector<>
itself is a dynamic type with a vtable, which is not trivially
moveable.

Impact on aapt for frameworks-res is negligible, ~3%.

Bug: 31595853
Test: m -j framework-res
Change-Id: I562a46ef8934aed7aab5c5377db53d9cf64a08b9
2016-09-22 10:09:38 -07:00
Colin Cross
281386df64 aapt: remove duplicate definition of ZD
ZD and ZD_TYPE are set by utils/Compat.h, remove them from
StringPool.cpp and Resource.cpp.

Test: m -j native
Bug: 31492149
Change-Id: I6154e4598dd1f279e348ef6c0b32d756464bda8a
2016-09-16 12:56:21 -07:00
Colin Cross
9a1a3bcb16 Replace libziparchive-host with libziparchive
libziparchive-host is no longer necessary, and mixing libziparchive-host
and libziparchive can cause ODR violations.

Change-Id: I623c0c5579e28f26a6e1db7bd953f33ed1ca68cd
2016-08-26 11:15:17 -07:00
Sergio Giro
d90d8d615a Add bound checks to utf16_to_utf8
Test: ran libaapt2_tests64
Bug: 29250543
Change-Id: I1ebc017af623b6514cf0c493e8cd8e1d59ea26c3
(cherry picked from commit 4781057e78f63e0e99af109cebf3b6a78f4bfbb6)
2016-08-25 12:19:12 +02:00
Chih-Hung Hsieh
b3d46b44a3 resolve merge conflicts of 17bd236 to stage-aosp-master
Change-Id: I08d4500aaa378b08d41e8d046c62101e08dbfba8
2016-08-12 11:44:16 -07:00
Chih-Hung Hsieh
ed935c32f4 resolve merge conflicts of 76ce8e5 to stage-aosp-master
Change-Id: I4b4ca9906373a95776d2da8ba2fa39a4a78e2a30
2016-08-11 16:48:46 -07:00
Treehugger Robot
76ce8e5242 Merge "Fix clang-tidy warnings in libs/hwui." 2016-08-11 23:20:47 +00:00
Chih-Hung Hsieh
8bd37ba458 Fix clang-tidy warnings in aapt and aapt2.
* Add explicit keyword to conversion constructors.
* Add NOLINT(implicit) comments for implicit conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
* Use const reference type to avoid unnecessary copy.
Bug: 30413862
Test: build with WITH_TIDY=1

Change-Id: Id6d21961f313a1ad92b15a37fdaa5be9e8ab48e1
Merged-In: Id6d21961f313a1ad92b15a37fdaa5be9e8ab48e1
2016-08-11 15:20:10 -07:00
Hans Boehm
c97c9dbd96 Merge "Do not stack allocate RefBase object in AaptAssets::filter"
am: d0197ac340

Change-Id: I077f9c190025d688af17d1a840b841cbdc4e003d
2016-08-11 17:28:07 +00:00
Hans Boehm
25dfa75ee3 Do not stack allocate RefBase object in AaptAssets::filter
Doing so is likely to trigger log messages in the future, and will
hinder diagnosis of other problems.

Bug: 30292538
Change-Id: I2cb8c507e43d06d4afa7e35b564416c1474c81d1
2016-08-10 19:56:50 -07:00
Chih-Hung Hsieh
f35c939cd7 Fix clang-tidy warnings in libs/hwui.
* Add explicit keyword to conversion constructors.
Bug: 28341362
* Use const reference type for read-only parameters.
Bug: 30407689
Test: build with WITH_TIDY=1

Change-Id: Iab3e6636f60a70cb124f29dc19f20f842fa8dfda
Merged-In: Iab3e6636f60a70cb124f29dc19f20f842fa8dfda
2016-08-10 23:26:59 +00:00
Adam Lesinski
d5bb8487d5 Merge "Fix misc-macro-parentheses warnings in aapt and androidfw." am: 6f4b566169
am: f55c9f7aa6

* commit 'f55c9f7aa64660712242705d4e5e89e2191bbf69':
  Fix misc-macro-parentheses warnings in aapt and androidfw.

Change-Id: I23f28430cf242be3f77926016626ea3e5705d4ec
2016-05-19 23:34:58 +00:00
Chih-Hung Hsieh
e819d01e3e Fix misc-macro-parentheses warnings in aapt and androidfw.
Bug: 28705665
Change-Id: Iac353e66718aadad384183cf300330695df25909
2016-05-19 15:19:22 -07:00
Michael Wright
feaf99fa1b Stop emitting javadoc for @removed attributes.
We need the attributes to remain public because people might still be
linking against them, but we don't want them showing up in the
documentation any more. Them showing up in the documentation also had
the side effect that it would accidentally mark the parent class of
attributes as @removed, which was not intended.

Bug: 28663748

Change-Id: I2f6eb09455fddf1086e6b24bc3bea5292e8e32b7
2016-05-09 14:51:41 +01:00
Rohit Agrawal
682583c890 AAPT: ProGuard config for components in main dex.
Create an analogue of "aapt -G" which outputs a proguard configuration
that keeps only components which need to be in the main dex.

Bug: 27383099
Bug: 28425556

Change-Id: Ic18c8c563794ff27a5598a214111d1b446a005f1
(cherry picked from commit 86229cb622fccde8ab8cbe85eead91a34313a708)
2016-04-27 19:50:55 +00:00
Rohit Agrawal
6ba873faec AAPT: ProGuard config for components in main dex.
Create an analogue of "aapt -G" which outputs a proguard configuration
that keeps only components which need to be in the main dex.

BUG: 27383099

Change-Id: Ic18c8c563794ff27a5598a214111d1b446a005f1
(cherry picked from commit 86229cb622fccde8ab8cbe85eead91a34313a708)
2016-04-27 11:26:55 -07:00
Adam Lesinski
694d0a7dfd AAPT: Dump uses-feature version in dump badging
Bug:27162500
Change-Id: I4f82cdd8ef1801c92d4ea6b4bb982c6e7d91edb5
2016-04-06 16:40:23 -07:00
Wonsik Kim
6e452f9e8a Don't try to compress .mkv resources
Bug: 27987970
Change-Id: I58e920e81d1e79b7fbba479d8fb34afb3911f97d
2016-04-04 15:39:40 +09:00
Andrew Johnson
08a3fa7dea Merge "Removing assignments to localeScriptWasComputed in aapt." into nyc-dev 2016-03-31 13:52:10 +00:00
Andrew Johnson
299e488ee2 Removing assignments to localeScriptWasComputed in aapt.
On certain devices running Android M with unknown vendor
modifications. Setting the localeScriptWasComputed bit in
the resource parameters struct causes the translations
for many languages to fail to load. The app then
defaults to English.

This has been reported on the following devices:
Motorola XT1086, XT1096, and XT1586, HTC One, and Huawei
MediaPad 10 LINK.

This change works around the issue by never setting
localeScriptWasComputed in aapt and instead always
writing the default value of false.

Bug: 27872476
Change-Id: Id638d1d0e5f9dcb1c02e65d67667d76174c69b9e
2016-03-30 20:24:48 -04:00
Matt Sarett
d126b1ed5d Merge "Work-around paletted image decoding bug in SDK_JELLYBEAN" into nyc-dev 2016-03-21 18:26:19 +00:00
Matt Sarett
48efde4fb1 Work-around paletted image decoding bug in SDK_JELLYBEAN
Because there is a bug decoding paletted images in SDK_JELLYBEAN,
we need to avoid encoding paletted images for apps that support
SDK_JELLYBEAN and earlier.

BUG=27643907

Change-Id: Ib7d51ed87435cd36507915d62b0057c06f18b2b6
2016-03-16 18:36:06 -04:00
Roozbeh Pournader
7960898f6f Fix script-related parts of locale resource matching
Previously, a bit was kept to find if the script of a locale was
explicitly "provided" in a resource. This was not backward
compatible, and failed in some edge cases when the package was
created with older versions of AAPT that did not set the bit.

The cases would happen when the old resource had an explicit script
specified in its locale, but since the "provided" bit was not set in
the package, we would assume that the script was computed by us.

This CL replaces the "provided" bit with a "computed" bit, so the
default value of the bit (set to "false" for old packages) would be
correct.

Bug: 27156990
Change-Id: I99e7f1ad8f70c90e25ab3640ed34cc1a6f8d1d64
2016-03-03 15:19:37 -08:00
Adam Lesinski
afc79be228 AAPT: Allow duplicate attribute definitions if identical
This allows libraries to coexist a bit easier, since a lot of them
declare the same attribute. When used together they cause errors.
Bug:27101533

Change-Id: I649cf17bc587c4814f849d5ac522daf74495adcf
2016-02-26 15:57:59 -08:00
Adam Lesinski
525db2489d Revert "AAPT: Allow duplicate attribute definitions if identical"
This reverts commit c25283b5e206ceae2aa6eb01877b79c3c1f0adfb.

Change-Id: I2f42a4360fa53c4333494afe0178dcec56d62d8e
2016-02-25 23:13:08 +00:00
Adam Lesinski
c25283b5e2 AAPT: Allow duplicate attribute definitions if identical
This allows libraries to coexist a bit easier, since a lot of them
declare the same attribute. When used together they cause errors.
Bug:27101533

Change-Id: I10327251636392e810637a79e7c9aa514f3f07a6
2016-02-22 09:25:06 -08:00
Adam Lesinski
9e1923d02f AAPT: Remove warnings for public resources without comments
There are so many public resources that do not warrant comments
that having a warning that no one cares about is just producing
log spam.

Bug:21495023
Change-Id: I84e3b39c7139ee67fb5cb711d5ab466d8f4ef2e0
2016-02-11 14:17:25 -08:00
Matt Sarett
37a866e9a6 Merge "Encode paletted PNGs more efficiently (part 2)" 2016-02-01 15:22:42 +00:00
Matt Sarett
33fcd11bc2 Encode paletted PNGs more efficiently (part 2)
Many PNGs have multiple distinct pixels with zero alpha.  This
CL allows us to treat all of those pixels as a single zero pixel.

This saves space in the color palette and also may help save
memory pages when we skip writing zeros.

There is also a potential disadvantage: if someone intended to decode
this image as unpremultiplied with particular transfer modes where
their color components have an effect even though alpha is zero,
this will prevent that.  At the moment, we do not support unpremul as
a source, so this won't affect anyone trying to draw with the view
system.

This change originated in:
https://googleplex-android-review.git.corp.google.com/#/c/854580/

Change-Id: I702c7bd22d431cc7c775ed29bbd73c930f945ca3
2016-02-01 14:15:35 +00:00
Matt Sarett
2a84e23399 Encode paletted PNGs more efficiently
Saves about 2 MB of encoded size across affected assets.

Also will enable more efficient decoding.

Specifically, encoded palette values are assumed to be opaque unless
alpha values are provided in a tRNS chunk.  Before this change, we
would wastefully store many opaque alpha values in tRNS chunk.
Additionally, the decoder used to need to premultiply all of these
opaque colors, because the encoded data indicated that they had alpha.

Change-Id: Id21b3b31850c9db6149ced6d20ed5e0ce2d71c5b
2016-02-01 09:03:34 -05:00
Matt Sarett
3c7235d386 Encode paletted PNGs more efficiently
Saves about 2 MB of encoded size across affected assets.

Also will enable more efficient decoding.

Specifically, encoded palette values are assumed to be opaque unless
alpha values are provided in a tRNS chunk.  Before this change, we
would wastefully store many opaque alpha values in tRNS chunk.
Additionally, the decoder used to need to premultiply all of these
opaque colors, because the encoded data indicated that they had alpha.

Change-Id: I1d5400f71a0e3cb800fd0fc68a04c8c4069da8ef
2016-01-29 22:56:45 +00:00
Roozbeh Pournader
b927c559e1 Implement smarter locale resource selection
* Add support for determining script from language and region.
* Add support for determining special parents of locales.
* Add support for smart comparison of locales with only a difference
  in region, using the locale parentage tree.
* Fix LocaleData.matchScore() to not fallback to old locale matching
  behavior if we can't determine a script.
* Allow four-character variant codes. (Previously, only five- to
  eight-character variant codes were allowed.)

Bug: 7296673
Bug: 26589793
Change-Id: Ibde0a48c0564ff383b41068095a5cbacfe7b94bc
2016-01-21 13:47:22 -08:00
Dan Albert
46736ec81c Merge "Make the appropriate cast to protect from mingw." am: dbf8c17bd2
am: 2edfa8c9b0

* commit '2edfa8c9b00cd0c0bd18738f75e0928394b99c76':
  Make the appropriate cast to protect from mingw.
2016-01-16 02:25:22 +00:00
Dan Albert
2edfa8c9b0 Merge "Make the appropriate cast to protect from mingw."
am: dbf8c17bd2

* commit 'dbf8c17bd20c3c5b4ba99242afa8b714841914d1':
  Make the appropriate cast to protect from mingw.
2016-01-15 21:02:29 +00:00
Dan Albert
ed811eeaea Make the appropriate cast to protect from mingw.
As the comment at the top of the file says:

    STATUST: mingw does seem to redefine UNKNOWN_ERROR from our enum
    value, so a cast is necessary.

Bug: http://b/26523949
Change-Id: I9d86cafdc47bbb9ce0e967cdde9315babc083432
2016-01-15 12:16:06 -08:00
Matt Sarett
3b1b68d6c7 Allow ninepatches to be encoded using non-RGBA modes
The original intention for forcing ninepatches to be encoded as
RGBA (with alpha) was to avoid the possibility of the decoder
producing 565 output.

565 output is bad for ninepatches because dithering tiny images
that we intend to scale later leads to bad results.  I would
argue that, since the new BitmapFactory does not dither, we might
now be ok to allow 565 decodes for ninepatches.  However, we
will maintain the old behavior by disabling 565 decodes for
ninepatch.

There are two changes to PNG encodings:
(1) Allows ninepatch images to be encoded in any mode.  Forcing
    them to RGBA makes things awkward for the decoder.  Currently,
    BitmapFactory's png decoder checks every pixel for alpha.
    That way, RGBA images that are actually opaque can be marked
    as opaque, in order to optimize drawing.  We want to remove
    this complexity from the decoder.
(2) Make sure ninepatch chunks are stored in the png header.  That
    way we know immediately that the png is a ninepatch, and can
    refuse to decode to 565 (if we feel this is best).

Change-Id: I724f5dbefb1be7b412f9b362dff83cbc0603f0bf
2016-01-07 18:17:33 +00:00
Adam Lesinski
087e0fcba6 DO NOT MERGE: AAPT: Dump uses-permission-sdk-23 am: b2c5155638 am: 40d1ab91d2 am: 8c9209183f am: 7f5ad22330
am: 1f7a36b8e6

* commit '1f7a36b8e6aa55dcb22a63c250fb318260ac349f':
  DO NOT MERGE: AAPT: Dump uses-permission-sdk-23
2015-12-16 23:44:25 +00:00
Adam Lesinski
b2c5155638 DO NOT MERGE: AAPT: Dump uses-permission-sdk-23
Include <uses-permission-sdk-23> permissions in dump badging and dump permissions.

This will also add implied features for that permission, marked as -sdk-23 features.

Ex:

uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
uses-permission-sdk-23: name='android.permission.CAMERA'

feature-group: label=''
  uses-feature: name='android.hardware.location'
  uses-implied-feature: name='android.hardware.location' reason='...'
  uses-feature-sdk-23: name='android.hardware.camera'
  uses-implied-feature-sdk-23: name='android.hardware.camera' reason='...'

Bug:24939655
Change-Id: Ifb374696ed4760b0ba2f1cc3516f3bf08e6cb6a3
(cherry picked from commit 5f3b2ecb3e9d27e77bd59c7b9006a6239b773944)
2015-12-16 22:43:07 +00:00
Adam Lesinski
5f3b2ecb3e AAPT: Dump uses-permission-sdk-23
Include <uses-permission-sdk-23> permissions in dump badging and dump permissions.

This will also add implied features for that permission, marked as -sdk-23 features.

Ex:

uses-permission: name='android.permission.ACCESS_FINE_LOCATION'
uses-permission-sdk-23: name='android.permission.CAMERA'

feature-group: label=''
  uses-feature: name='android.hardware.location'
  uses-implied-feature: name='android.hardware.location' reason='...'
  uses-feature-sdk-23: name='android.hardware.camera'
  uses-implied-feature-sdk-23: name='android.hardware.camera' reason='...'

Bug:24939655
Change-Id: Ifb374696ed4760b0ba2f1cc3516f3bf08e6cb6a3
2015-12-10 14:17:52 -08:00
Adam Lesinski
78713998f9 Specify private resource package in Android.mk
Private resource package shouldn't be buried in some resource file.
It can now be specified on the command line via the Android.mk file.

Change-Id: I9e3cb0bf54830d6b021077af271913306c024701
2015-12-07 14:52:53 -08:00
Elliott Hughes
43aecc85e8 Merge "Track rename from base/ to android-base/." am: 9f6a2ae67c am: 8aa8fe2c64
am: 7e7047ea0a

* commit '7e7047ea0aba2099408fba70937a758a91cebbca':
  Track rename from base/ to android-base/.
2015-12-04 17:51:41 -08:00
Elliott Hughes
be5474da4b Track rename from base/ to android-base/.
Change-Id: I31be831de812052d1c0d4c0781178d0756124bcf
2015-12-04 15:33:35 -08:00
Marco Nelissen
90d5052bd7 Don't try to compress .webm resources
Bug: 25822610
Change-Id: I40a93c9daac258a8e9a41668c0040353e44ed5bb
2015-12-01 18:37:12 +00:00
Adam Lesinski
07dfd2d864 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
2015-11-30 14:43:43 -08:00
Adam Lesinski
5b9847ca3f Revert "Implement AAPT Bundle format"
This reverts commit 9d0f7d44d5cc5322415f52f7ce03cc37a478b350.

Caused a build breakage when parsing some attributes.

Change-Id: I89ca958b2f2e820d353648df8aadd90bbe8d8339
2015-11-30 21:07:44 +00:00
Adam Lesinski
9d0f7d44d5 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: I31bc96aae30d38bfd0b16508d0f585de5fd88a07
2015-11-24 15:38:40 -08:00
Tor Norbye
b3559643b9 Don't set modification times in aapt zip entries
Use a modification timestamp of 0 for all files
inside the zip archive to make the build repeatable.

Change-Id: Ie6e57329469b99c6f93cb0a6083e0c402be99815
2015-10-30 20:00:13 -07:00