summaryrefslogtreecommitdiff
path: root/tools/aapt/StringPool.cpp
AgeCommit message (Collapse)Author
2020-11-17Revert^2 "libandroidfw hardening for IncFs"Ryan Mitchell
55ef6167a2c235bd88c7216238b2001b46795b79 Change-Id: I02d4890d181655dfd0a14c188468db512559d27b
2020-11-13Revert "libandroidfw hardening for IncFs"Ryan Mitchell
Revert "Move map_ptr to incfs namspace" Revert submission 12787270 Reason for revert: b/173250495 Reverted Changes: I5cd1bc8a2:libandroidfw hardening for IncFs Ice5dbcfb2:Move map_ptr to incfs namspace I29ccdc8ed:Do not cache bag parent stack until requested I1e9e9acaa:Cache resolved theme values Change-Id: Ib90ef68339710086df41e9abe0833a542d03a74f
2020-11-12libandroidfw hardening for IncFsRyan Mitchell
Migrate libandroifw to using incfs::util::map_ptr to prevent processes from crashing when parsing the resources.arsc, parsing compiled xml, files, and retrieving resource values. This change propagates incremental failures to the JNI level where they are raised as ResourcesNotFoundException. Performance of ResourcesPerfWorkloads without change (time in nanoseconds): [1/3] com.android.resources.perf.PerfTest#youtube: PASSED (11.883s) youtube_ns_median: 93812805 youtube_ns_standardDeviation: 4387062 youtube_ns_mean: 94455597 [2/3] com.android.resources.perf.PerfTest#maps: PASSED (11.265s) maps_ns_standardDeviation: 2997543 maps_ns_mean: 83480371 maps_ns_median: 82210941 [3/3] com.android.resources.perf.PerfTest#gmail: PASSED (24.963s) gmail_ns_median: 266141091 gmail_ns_standardDeviation: 3492043 gmail_ns_mean: 267472765 With change and verification forcibly enabled for all apks (including the framework-res.apk): [1/3] com.android.resources.perf.PerfTest#youtube: PASSED (11.646s) youtube_ns_median: 101999396 youtube_ns_standardDeviation: 4625782 youtube_ns_mean: 102631770 [2/3] com.android.resources.perf.PerfTest#maps: PASSED (11.286s) maps_ns_standardDeviation: 2692088 maps_ns_mean: 91326538 maps_ns_median: 90519884 [3/3] com.android.resources.perf.PerfTest#gmail: PASSED (24.694s) gmail_ns_median: 290284442 gmail_ns_standardDeviation: 5764632 gmail_ns_mean: 291660464 With change and verification disabled: [1/3] com.android.resources.perf.PerfTest#youtube: PASSED (11.748s) youtube_ns_median: 95490747 youtube_ns_standardDeviation: 7282249 youtube_ns_mean: 98442515 [2/3] com.android.resources.perf.PerfTest#maps: PASSED (10.862s) maps_ns_standardDeviation: 4484213 maps_ns_mean: 87912988 maps_ns_median: 86325549 [3/3] com.android.resources.perf.PerfTest#gmail: PASSED (24.034s) gmail_ns_median: 282175838 gmail_ns_standardDeviation: 6560876 gmail_ns_mean: 282869146 These tests were done on a Pixel 3 and with cpu settings configured by libs/hwui/tests/scripts/prep_generic.sh: Locked CPUs 4,5,6,7 to 1459200 / 2803200 KHz Disabled CPUs 0,1,2,3 Bug: 160635104 Bug: 169423204 Test: boot device && atest ResourcesPerfWorkloads Change-Id: I5cd1bc8a2257bffaba6ca4a1c96f4e6640106866
2018-05-11For Win32, don't cast ssize_t while printingPirama Arumuga Nainar
Bug: http://b/69933068 This is a partial revert of https://android-review.googlesource.com/c/platform/frameworks/base/+/109433 so we can use Clang for windows cross compilation. Clang does not allow a cast to 'signed size_t' and both Clang and current MinGW accept a ssize_t to the '%zd' format specifier. Test: m native-host, m native-host-cross with both MinGW and Clang Change-Id: I5366622b91be1433f6c533c55a9ae429b57c7a27
2016-09-16aapt: remove duplicate definition of ZDColin Cross
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-05-19Fix misc-macro-parentheses warnings in aapt and androidfw.Chih-Hung Hsieh
Bug: 28705665 Change-Id: Iac353e66718aadad384183cf300330695df25909
2015-04-03Only Windows doesn't have %zd.Elliott Hughes
Change-Id: I0e4b0fdc61641c5ecb724fd096bd2315dcf8ed4a
2014-11-03Merge commit '78be0498' into manualmergeAdam Lesinski
Conflicts: libs/androidfw/ResourceTypes.cpp tools/aapt/Android.mk tools/aapt/StringPool.cpp tools/aapt/StringPool.h Change-Id: I9d69efdfb892032895ace12159d193304f02dc6c
2014-11-03Fix issues that will be present in C++11Adam Lesinski
- char16_t is a distinct type, so stay consistent with it throughout the code base. - char16_t is defined as minimum size of 16 bits. Since we mmap and cast data structures onto raw memory, we need a precise definition (uint16_t), so we cast between that (and static_assert that they are the same size). Change-Id: I869c32637543bbcfb39d2643e7d9df10d33acd3c
2014-10-01resolved conflicts for merge of 1dcc75b2 to lmp-mr1-dev-plus-aospAndreas Gampe
Change-Id: I8f7cbd971beae3ab134195e612d705860665142f
2014-10-01Frameworks/base: Fix AAPT warningsAndreas Gampe
Turn on -Wall -Werror. Fix warnings. Change-Id: I287fb3c1e851c654479bcf9ea8c73bd354a6b2a1
2014-10-01resolved conflicts for merge of fe50cfd5 to lmp-mr1-dev-plus-aospDan Albert
Change-Id: Id09c2786db18fa7e747cd1652ea95f575c3f5c46
2014-10-01Use std::sort instead of qsort_r wrapper.Dan Albert
The HAVE_(BSD|GNU)_QSORT_R in AndroidConfig.h has never worked, and we should just be using something standard anyway. Change-Id: I784d6212f6c890a11c4af2f83d1ce2d279708652
2014-09-08resolved conflicts for merge of 6c585756 to lmp-dev-plus-aospDan Albert
Change-Id: I5a25f2bac44ac5efcd7462af91005e09680a1d96
2014-09-08Use char16_t for char things.Dan Albert
When compiling in C++ mode, the compiler will complain about conversions from uint16_t to char16_t. Be consistent in using char16_t for strings. Change-Id: I052b6176ced635162920b31560052d9a64f92764
2014-05-19Don't dump data from a bad ResTableAdam Lesinski
AAPT dumps data from a bad ResTable, which causes crashes. Prevent this by checking if there were errors when creating the ResTable. Bug:14902008 Change-Id: I5e04ebf967c60b78c511dd175785a13bca52f09a
2014-01-27Revert "Move frameworks/base/tools/ to frameworks/tools/"Adam Lesinski
This reverts commit 9f6a119c8aa276432ece4fe2118bd8a3c9b1067e.
2013-08-28Move frameworks/base/tools/ to frameworks/tools/Mike Lockwood
Change-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8
2013-05-07aapt: move qsort_r_compat here as it is sole clientDima Zavin
This code is only used on the host for MacOS X compatibility. Apparently, glibc and Apple's libc disagree on the parameter ordering. Change-Id: I214edcf2870b6ac88316306ac5af43f1dadf9b2e Signed-off-by: Dima Zavin <dima@android.com>
2012-03-19Use qsort_r_compat() as a portable wrapper for qsort_r().Jeff Brown
Change-Id: Ie79f81625947f4e95122047605d994c86e872e74
2012-03-19Fix build break on glibc hosts.Jeff Brown
Change-Id: Ida70bec6ea972d042982428353cbbc33cde25136
2012-03-16Use quicksort to sort the string pool.Jeff Brown
The current implementation of Vector::sort uses insertion sort on the assumption that the data is mostly sorted. It isn't. This change brings the total time spent sorting packages by config down to 500ms from about 93 seconds. Bug: 6186278 Change-Id: Iec8da11e09297acd6c73733d063b0fa9dacf69f7
2012-03-16Add some comments about StringPool sort order.Jeff Brown
Change-Id: I57f24d46328a6bfef883819eaf95c03114d573bb
2012-03-16Remove dead code in StringPool.Jeff Brown
The sorted string pool option was no longer used. Neither were strings with associated identifiers. Change-Id: Ic5f6368637fbeedfda873d63f4ad0f3ea9d0d603
2012-03-07Fix an issue where a non-styled string could be made into a styled stringBen Gruver
If a styled version of an otherwise identical string is encountered before a non-styled version, aapt merges the two, effectively making the non-styled string have a spurious style. Change-Id: I424a61c0c83c59e0b9c8939e457402efd06a7a4f
2012-01-31aapt now sorts the strings in the resource string pool.Dianne Hackborn
In our current environment with very many translations, this can save a lot of RAM -- for example over 200K in Gmail just by sorting the strings in the Gmail .apk (not the framework). Also add a new aapt command to print the contents of the resource table string pool. Change-Id: I1da037b3e2c377b890833ff57ab158965314ac48
2011-10-27AAPT fix printf %zd crash on Windows.Raphael
There's no printf %zd on Mingw/Cygwin so the verbose printf crashes aapt. SDK bugs: 20395, 20986 Change-Id: I5b8ac36749263205a19f1448b1aaca90d5a2e06d
2010-12-08Change assets to use 64-bit APIKenny Root
The asset system and supporting libraries were using off_t instead of off64_t to access files larger than 2GB (32-bit signed). This change replaces all off_t with off64_t and lseek64. There is a new utils/Compat.h added for Mac OS compatibility. Also fixed some size-related compiler warnings. Bug: 3205336 Change-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e
2010-06-25Fixes a few minor problems with AAPTSteve Block
- 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
2010-02-23Use UTF-8 strings to avoid duplicate caching, part 1Kenny Root
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
2010-02-01Add the --rename-manifest-package option to aapt.Jeff Hamilton
It allows you to force override the manifest package listed in the AndroidManifest.xml when creating an APK file. Change-Id: I7eac7943c4e56610b65728ae54773a273634fd9d
2009-12-07Optional use of UTF-8 strings in resource bundlesKenny Root
Allows the use of UTF-8 for packing resources instead of the default of UTF-16 for Java. When strings are extracted from the ResStringPool, they are converted to UTF-16 and the result is cached for subsequent calls. When using aapt to package, add in the "-8" switch to pack the resources using UTF-8. This will result in the value, key, and type strings as well as the compiled XML string values taking significantly less space in the final application package in most scenarios. Change-Id: I129483f8b3d3b1c5869dced05cb525e494a6c83a
2009-12-04Fix bitmask in aapt's StringPool length constructionKenny Root
The StringPool indicates the length of a string with a 16-bit integer. If the length of the string is greater than 0x7FFF, it splits it into two 16-bit integers with the first one having the high bit set. The length calculation has a small bug that masks off the 19 bits instead of the first 15 bits as intended.
2009-03-03auto import from //depot/cupcake/@135843The Android Open Source Project
2009-03-03auto import from //depot/cupcake/@135843The Android Open Source Project
2008-10-21Initial ContributionThe Android Open Source Project