summaryrefslogtreecommitdiff
path: root/libs/androidfw/tests
AgeCommit message (Collapse)Author
2022-03-15Merge SP2A.220305.013Haamed Gheibi
Bug: 220074017 Change-Id: Idfdd94e902f656ac65a2a75dfdd199f6f85ba472
2021-06-08Rebase ThemeImpl rather than reallocate memoryRyan Mitchell
Memory churn is high when swapping the ResourcesImpl of a Resources object. Each time Resources#setImpl is invoked, all themes based on that Resources object are assigned new ThemeImpl objects that are created using the new ResourcesImpl. ThemeImpls can only belong to one Theme object, so the old implementation is discarded and the theme takes ownership of the new ThemeImp. This creates performance problems when framework overlays are toggled. Toggling overlays targeting the framework causes all themes across all processes to recreate and reallocate all of their themes. By rebasing the ThemeImpl on the new ResourcesImpl without deallocating the native theme memory, we reduce churn and produce less garbage that needs to be garbage collected. Bug: 141198925 Test: atest libandroidfw_tests Test: atest ResourcesPerfWorkloads Change-Id: I03fb31ee09c9cfdbd3c41bcf0b605607dab54ed7
2021-05-13Set ApkAssets path for fabricated rrosRyan Mitchell
Fabricated RROs do not provide assets but are stored on disk. Ensure that the path to the frro is returned when querying for the ApkAssets path (which is mostly for debug purposes). Bug: 181338216 Test: enable frro, use cmd overlay lookup to see path in resolution Change-Id: Ibf9b1bf0a995325affbf084c71b1e87c5682e734
2021-02-09Add fabricated RRO generation to libidmap2Ryan Mitchell
Fabricated Runtime Resource Overlays are overlays that are generated at runtime and are stored in the data/ partition. The system can fabricate RROs at runtime to dynamically theme the device. Idmaps can now be created from APK RROs and fabricated RROs. Rather than operating on ApkAssets, libidmap2 now operates on abstract resource "containers" that supply resource values. Target resource containers implement methods needed to query overlayable and target overlay information. Currently only APKs can be loaded as target resource containers. Overlay resource containers implement methods to supply the mapping of target resource to overlay value and other overlay information. The format of a fabricated RRO is as follows: 0x00 - 0x04 : fabricated overlay magic (always FRRO) 0x04 - 0x08 : file format version 0x08 - 0x0c : crc of version + proto data 0x0c - EOF : proto fabricated overlay data The magic is used to quickly detect if the file is a fabricated overlay. The version is incremented whenever backwards incompatible changes are made to the proto file format. Idmap must always be able to upgrade fabricated overlays from previous versions to new versions, so all previous versions must be checked into the tree. Bug: 172471315 Test: libidmap2_tests && libandroidfw_tests Change-Id: I4c9f29da278672e5695fb57d131a44c11a835180
2021-02-03Dependency injection of AssetProviders into ApkAssetsRyan Mitchell
Creates ApkAssets creation methods that allow an AssetsProvider to be specified. During idmap verification and creation, idmap2 currently opens the target package and overlay package several times: 1) When the crc of the package is calculated in idmap2 verify 2) When the manifest of an overlay is parsed 3) When an ApkAssets is opened. Opening large zip files (like framework-res.apk) is slow. If we opened the zip one time as an ApkAssets, the resources.arsc would have to be parsed (which means mmaping/unmapping and touching a lot of resources.arsc pages). This would cause idmap2 to preform unnecessary work just to check the crc of some files. This change allows a ZipAssetsProvider to be created and then moved for the creation of an ApkAssets. The zip file only needs to be opened once and the resources.arsc is not parsed until reading resources is actually necessary. Bug: 172471315 Test: libandroidfw_tests Test: CtsResourcesLoaderTests Change-Id: I940bb2c13844c7f028776a623a9ecef45a4813bf
2021-01-13Optimize FilterApkAssets by caching configRyan Mitchell
ResTable_config of every ResTable_type is read from device every time AssetManager::RebuildFilterList is invoked. For large APKs (like framework-res.apk), this causes a large number of page faults when accessing the config from disk. The configs are also used in the slow path of AssetManager::FindEntryInternal, which makes it even slower. Instead cache the config on the TypeSpec of its ApkAsset. Bug: 177247024 Test: libandroidfw_tests Change-Id: I66d507c4eeb2399f7558f3d9dfc53c157129ada0
2021-01-06Accept --overlay-name flag in idmap2Ryan Mitchell
To support allowing for multiple <overlay> tags in one package, idmap2 must be able to generate an idmap for an individual <overlay> tag. `idmap2 create` now accepts a --overlay-name flag that specifies which tag to use to generate the idmap. The value of --overlay-name should be set to the value of the android:name attribute on the <overlay> tag to use. If the flag is not present, idmap2 will look for an <overlay> tag with no value for android:name. Bug: 162841629 Test: libandroidfw_tests Test: libidmap2_tests Change-Id: I02316d0b88773f02c04a5d462be9825016fa496d
2021-01-06Remove idmap path 256 length limitRyan Mitchell
Overlay and target package paths can be longer than 256 characters. Currently, the idmap will fail to be generated if either path is longer than 256 characters. This change removes the 256 character limit and makes parsing variable length strings easier in libandroidfw. Bug: 174676094 Test: idmap2_tests && libandroidfw_tests Change-Id: Ic240cdb8700566b2ac2ade08da58bea852e4ae0c
2020-11-17Revert^2 "Cache resolved theme values"Ryan Mitchell
6ca48473e533a8b89abac6294a0bb8130b8c8c89 Change-Id: Icb295186b85e1edcdcebc1d746f7ff0d6ef66829
2020-11-17Set resource id correctly when resolve failsRyan Mitchell
If for some reason the resource id cannot be resolved to a value (there is no configuration that matches the AssetManager configuration or some error occurs), set the resource id of the SelectedValue to the resource id that could not be resolved. This was the behavior before the AssetManager IncFs hardening refactor. Bug: 173203252 Test: atest com.google.android.config.pts.PreinstalledAppsTestCase Test: Chrome icon appears on launcher Change-Id: Iad1760c0e246da1a4bf64d1c2ec60bb08da32d06
2020-11-17Revert^2 "libandroidfw hardening for IncFs"Ryan Mitchell
55ef6167a2c235bd88c7216238b2001b46795b79 Change-Id: I02d4890d181655dfd0a14c188468db512559d27b
2020-11-14Merge changes from topic "revert-12787270-FYIHXORGZY"Tej Singh
* changes: Revert "libandroidfw hardening for IncFs" Revert "Cache resolved theme values" Revert "Do not cache bag parent stack until requested"
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-13Merge changes from topic "libaw-hardening"Ryan Mitchell
* changes: Do not cache bag parent stack until requested Cache resolved theme values libandroidfw hardening for IncFs
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
2020-10-20Fixed CursorWindow signed math for x86 builds.Jeff Sharkey
All tests for our recent CursorWindow changes have been passing for ARM 64-bit builds, but they weren't executed against 32-bit x86 builds until after merged. It's not actually safe to use the "off_t" type, so we need to cast to "int32_t" when doing checks against possible-negative values, such as in allocRow(). We also add tests that verify negative rows/columns are identified as invalid positions, which requires that we check the resulting pointer against both mSlotsEnd and mSlotsStart. Bug: 169251528, 171276404, 171275409 Test: atest libandroidfw_tests:CursorWindowTest Test: atest CtsDatabaseTestCases Change-Id: Iea5f7546850f691e183fbb6e6d0952cd02b00d0f
2020-10-20Merge changes from topic "sep28r"Jeff Sharkey
* changes: Add fuzzer for rewritten CursorWindow. Rewrite of CursorWindow internals.
2020-10-19Rewrite of CursorWindow internals.Jeff Sharkey
The original CursorWindow implementation was created in Android 1.0 and has remained relatively unchanged since then. Unfortunately that design results in very poor performance on large windows, since reading or writing each FieldSlot is O(row/100) to traverse through a chain of RowSlotChunks. It's also memory-inefficient due to how it allocates RowSlotChunks in 404 byte chunks, even when there's only a single row to store. This change is a complete redesign of the CursorWindow internals to use a "heap-and-stack" style approach, where a "heap" of strings and blobs increment up from the bottom of the window while a "stack" of FieldSlots increment down from the top of the window. The included benchmarks show the following improvements, ensuring no regressions for small windows, while offering very dramatic improvements for larger windows: Big cores Little cores 4x4 cursor no regression no regression 1024x4 cursor 2.2x faster 2.0x faster 16384x4 cursor 48.5x faster 24.4x faster Detailed unit testing is also included to ensure that the rewrite behaves correctly. Bug: 169251528 Test: atest libandroidfw_tests Test: atest CtsDatabaseTestCases Test: atest FrameworksCoreTests:android.database Test: ./frameworks/base/libs/hwui/tests/scripts/prep_generic.sh little && atest libandroidfw_benchmarks Test: ./frameworks/base/libs/hwui/tests/scripts/prep_generic.sh little && atest CorePerfTests:android.database.CrossProcessCursorPerfTest Change-Id: I90dff31fd550130dae917a33e0e1fa684e15c107
2020-10-19Merge changes I1d3e5e66,I86b869af,Iab4d3902,I645ee722 am: 72864d2930 am: ↵Treehugger Robot
968582e45f am: cb2ebfc692 am: c59b81c978 Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1461087 Change-Id: Ib58c1acbb9629a6654eb8e1666872974f0c75944
2020-10-14Remove malloc/free for inline overlay valuesRyan Mitchell
Remove malloc/free of android::ResTable_entry for inline overlay values. Add `target_entry_inline` to the idmap format to encode inline overlay values separate from direct mapping of target resource to overlay resource. This reduces the number of bytes needed to represent a direct mapping of target resource to overlay resource from 9 bytes to 8 bytes per entry. Fixed all idmap alignment issues that required the framework to use "#pragma pack(push, 1)" when loading idmaps. Bug: 170341022 Test: idmap2_tests and libandroidfw_tests Change-Id: Iab4d3902508f02773464724913e0ee966e3689e4
2020-06-18Merge "Enable >= 2GiB file size support in backupToTar for 32 bit targets."Abhinav Aggarwal
2020-06-18Enable >= 2GiB file size support in backupToTar for 32 bit targets.Abhinav Aggarwal
backupToTar function used in fullbackup currently uses off_t to represent file sizes which overflows for files having size >= 2 GiB on 32 bit target architectures. This CL replaces off_t with off64_t to overcome this limitation. Fixes: 157633626 Test: atest libandroidfw_tests Test: Locally running a backup with a test app having a file of size 2GiB and verifying the size variable in backupToTar doesn't overflow on a 32 bit target. Change-Id: I404cced810f331ecb9327495ce1f092f1fa2d378
2020-06-05Merge "Add policies and enforce overlayable to header" into rvc-dev am: ↵Ryan Mitchell
2201f8b626 am: 64d0e6f31b am: e2426c48bd Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11481145 Change-Id: I268738c0312b6a158599d9487f09b753c91ba36a
2020-06-05Merge "Add policies and enforce overlayable to header" into rvc-dev am: ↵Ryan Mitchell
2201f8b626 Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11481145 Change-Id: I71ff9f46e1e5a5016291a062dd5389078527588f
2020-06-01Add policies and enforce overlayable to headerRyan Mitchell
If the fulfilled policies change without the contents of the target and overlay APKs changing, the idmap for the overlay should be regenerated. This change adds fulfilled policies and enforce overlayable to the idmap header so that idmap2d can determine if the polices or enforce overlayable changed from what was used to generate the idmap. Bug: 119328308 Test: idmap2_tests Test: atest RegenerateIdmapTest Change-Id: I96f970e82b5243be01b205ac2cb6ab249c6100bc
2020-04-10Merge changes from topic "invalidate_idmap" into rvc-dev am: 6cb79cdfb7 am: ↵Ryan Mitchell
7cfbff64eb Change-Id: Ief1e732e3b18738c5c0f62f2fe8c47f66169c85b
2020-04-10Merge changes from topic "invalidate_idmap" into rvc-dev am: 6cb79cdfb7Ryan Mitchell
Change-Id: Iec3d0e3bab28964442c5aada00c2586e284feb92
2020-04-07Invalidate idmap when target updatesRyan Mitchell
When the target package update, check if the idmap file must change. If so, propagate the idmap changes to the targets overlay paths, and invalidate cached overlay ApkAssets in ResourcesManager. Bug: 147794117 Bug: 150877400 Test: OverlayRemountedTest Test: libandroidfw_tests Change-Id: I6115c30bae3672b188a5ff270720a0eea15b43b5
2020-03-27Merge changes If7ea17d5,If6364fd6 into rvc-dev am: 8275fb7d66 am: a6f2c4f62eRyan Mitchell
Change-Id: Ie72616767e3eb7eefce8ee3a871ccb76f02959f9
2020-03-27Merge changes If7ea17d5,If6364fd6 into rvc-dev am: 8275fb7d66Ryan Mitchell
Change-Id: Iaa34df4fc6cce09177547a11497d28fa1ce9cdb5
2020-03-23Assigned package ids to overlays lastRyan Mitchell
Before overlays could reference internal resources, overlays were added to AssetManagers before shared libraries. Overlays are now loaded as shared libraries so they must be assigned package ids after non-overlay shared libraries so enabling and disabling overlays does not affect the package ids of the non-overlay shared libraries. Since overlays are added to the end of the AssetManager by ResourcesManager, enabling and disabling overlays will not change the assets cookie of shared libraries loaded through ResourcesManager, but it will change the apk assets cookie or overlays added through AssetManager#addAssetPathAsSharedLibrary. The package ids of shared libraries added through AssetManager#addAssetPathAsSharedLibrary will not be affected by overlays since overlay package ids are assigned last. Bug: 146685730 Test: CtsHostsideWebViewTests Change-Id: If7ea17d51b18769bf2465e29af3ae6a71004d06c
2020-03-23Revert "Assign shared libraries stable package ids"Ryan Mitchell
This change must be reverted because it broke packages with the same package name but different package ids loaded at once. Bug: 146685730 Test: MultiSplitInstallTest This reverts commit fe50d739f75e13ebf64c010bf6ef504bcc81d860. Change-Id: If6364fd660c76284452f77e7d4f09a3df9dede1d
2020-03-20Merge changes from topic "res_loader_dir" into rvc-dev am: b0544a733cRyan Mitchell
Change-Id: I18c28c7293a24d712940c9e80e7817f9547512f8
2020-03-19Allow using loaders on non-RM Resources instancesRyan Mitchell
Currently there is a limitation where ResourcesLoaders cannot be used on Resources object not created through ResourcesManager. This change creates an update handler for Resources objects that are not registered with ResourcesManager. The handler changes the loaders on the asset manager owned by the Resources instance. Bug: 151666644 Test: atest ResourceLoaderValuesTest Change-Id: I5a89f686386bdb088dc964014e7becc0c2b4770f
2020-03-19Add ResourcesProvider.loadFromDirectoryRyan Mitchell
This API allows a directory to be loaded as if it was a zipped APK. This is a substitute for the DirectoryAssetProvider API that currently does not work in the native layer. Bug: 142716192 Test: atest FrameworksResourceLoaderTests Change-Id: Ia13e15653e75b421423dd56f9fe89e183ab4cb9a
2020-03-19Refactor ApkAsset loading APIsRyan Mitchell
To add the partner requested ResourcesProvider#loadFromDir APIs, this change adds format type integer that allows us to reduce the number of ApkAssets loading overrides. This change also adds hidden offset and length based ResourcesProvider APIs that could not make R. Bug: 142716192 Test: atest FrameworksResourceLoaderTests Change-Id: I926fde257cae701901dcd4ca408024feae8c90a6 Merged-In: I926fde257cae701901dcd4ca408024feae8c90a6
2020-02-27Merge "Use String8 ostream from String8.h" am: a9117815ed am: 1257bc0b9dAutomerger Merge Worker
Change-Id: I2d6799c5022878a7d813b25b6ca05d92e87f0478
2020-02-26Refactor overlayable policyWinson
To make it easier to add the actor policy in a follow up CL, move most of the policy handling to a central location. The strings and transformation between strings and flags is now handled in libidmap2policies, with libandroidfw containing the single source of policy flags. This also extracts all the test resource IDs into an R.h so they can be swapped without having to edit a dozen files each time. Bug: 130563563 Test: m aapt2_tests idmapt2_tests and run from host test output Test: atest libandroidfw_tests Change-Id: Ie533c9cebf938215df7586f00c38763ae467e606
2020-02-26Use String8 ostream from String8.hSteven Moreland
Bug: N/A Test: N/A Change-Id: If2762ec4a9bb84cca41b1752fe005605eb9b2013
2020-02-11Merge "Merge "Remove String16 operator<<, now provided in header" am: ↵Automerger Merge Worker
35d04c27ee am: f1e6950510" into qt-qpr1-dev-plus-aosp am: 2593e104d5 Change-Id: I5cc3034b3d8ad29a3244ab436325f1f6a5cf243c
2020-02-10Remove String16 operator<<, now provided in headerSteven Moreland
Bug: N/A Test: N/A Change-Id: Ic0418d81d37726dcfc100ce919b6f79be4077c8a
2020-02-10Sort bag by attribute key when using libsRyan Mitchell
When shared libraries are assigned package ids in a different order than compile order, bag resources that use attributes from both multiple libraries will not be sorted in ascending attribute id order. This change detects when the attribute ids are not in order and sorts the bag entries accordingly. The change is designed to be less invasive. Deduping the GetBag logic should probably be spun off in a separate bug. Bug: 147674078 Test: libandroidfw_tests Change-Id: Id8ce8e9c7ef294fcc312b77468136067d392dbd0
2020-01-10Assign shared libraries stable package idsRyan Mitchell
When a shared library package is loaded into an AssetManager, the shared library will be assigned a unique package id. Subsequent AssetManaagers that load a shared library of the same package name as the original shared library will use previously assigned package name. Shared libraries will have stable package ids throughout the lifetime of application. Bug: 140790224 Bug: 128496033 Test: libandroidfw_tests Test: third-party app no longer crashes on open Test: atest CtsHostsideWebViewTests Change-Id: Idc0315be21ea00b74d1a918b7083ad655104c008
2019-12-19idmap2: add debug information to idmap file formatMårten Kongstad
Add a new variable length string to the idmap file format. This string will hold debug information like fulfilled policies and any warnings triggered while generating the file. Bump the idmap version to 3. Adjust the idmap header definition in ResourceType.h to take the new string into account. Example debug info: $ idmap2 create \ --target-apk-path frameworks/base/cmds/idmap2/tests/data/target/target.apk \ --overlay-apk-path frameworks/base/cmds/idmap2/tests/data/overlay/overlay.apk \ --idmap-path /tmp/a.idmap \ --policy public \ --policy oem $ idmap2 dump --idmap-path /tmp/a.idmap target apk path : frameworks/base/cmds/idmap2/tests/data/target/target.apk overlay apk path : frameworks/base/cmds/idmap2/tests/data/overlay/overlay.apk I fulfilled_policies=oem|public enforce_overlayable=true W failed to find resource "integer/not_in_target" in target resources 0x7f010000 -> 0x7f010000 integer/int1 0x7f02000c -> 0x7f020000 string/str1 [...] $ idmap2 dump --idmap-path /tmp/a.idmap --verbose 00000000: 504d4449 magic 00000004: 00000003 version 00000008: 76a20829 target crc 0000000c: c054fb26 overlay crc 00000010: ........ target path: frameworks/base/cmds/idmap2/tests/data/target/target.apk 00000110: ........ overlay path: frameworks/base/cmds/idmap2/tests/data/overlay/overlay.apk 00000210: ........ debug info: ... 00000294: 7f target package id 00000295: 7f overlay package id [...] Also, tell cpplint to accept non-const references as function parameters: they make more sense as out-parameters than pointers that are assumed to be non-null. Also, switch to regular expressions in the RawPrintVisitorTests: no more manual fixups of the stream offsets! Tell cpplint that the <regex> header is OK to use. Bug: 140790707 Test: idmap2_tests Change-Id: Ib94684a3b4001240321801e21af8e132fbcf6609
2019-11-13Do not look for R.class of overlaysRyan Mitchell
Now that RROs are loaded as shared libraries, LoadedApk#makeApplication is attempting to find the onResourcesLoaded method of the overlays. This is a performance hit and causes more memory than necessary to be allocated during application start up. Bug: 143314947 Test: com.android.performance.tests.HermeticMemoryTest Change-Id: I3b8cd22dae83e0164d6678c80279f9fffceb34e6
2019-10-17Allow for RRO internal referencingRyan Mitchell
This change allows RROs to reference their own internal resources as expected. Overlays are loaded as shared libraries so they can have their own resource id space that does not conflict with the resource id space of the target or other overlays. References to overlay resources that override target resources now appear as references to the target resources. Overlay values that are inlined into the xml file specified using android:overlayResources are now able to be used at runtime. See go/rro-references for more information. Bug: 135943783 Test: idmap2_tests Test: libandroidfw_tests Change-Id: Ie349c56d7fd3f7d94b7d595ed6d01dc6b59b6178
2019-10-10Add ResourceLoader API with .apk and .arsc supportWinson
ResourceLoaders allow inserting another .apk/.arsc into AssetManager's resource resolution search. The effect is similar to overlays, where a entry of >= config later in the path list will return that ApkAsset's resource value instead. Because loading from an .arsc is supported, which doesn't contain any actual files, ResourceLoader exposes loadDrawable and loadXmlResourceParser to allow an application load those files from anywhere or create them in code. The data being loaded is either pushed into an .apk or .arsc that mocks itself as the package being "overlaid" and is passed in through ResourcesProvider, an interface with static methods that supports loading from a readable path on disk or a FileDescriptor. The APIs are accessed through a Context's getResources(), which has been changed to be unique per "Context-scope", which is usually the lifetime of the Java object. The exception is that Activities who get their Resources object persisted across recreations maintain that logic for persisting ResourceLoaders. Bug: 135270223 Test: atest FrameworksResourceLoaderTests Change-Id: I6929f0828629ad39a21fa155e7fec73bd75eec7d
2019-09-26Enable CTS verification of overlayable APIRyan Mitchell
Allows retrieval of a string representation of overlayable resources that can be compared during CTS testing to verify that the overlayable resources on device match the expected overlayable API. Bug: 135052616 Test: libandroidfw_tests Test: atest OverlayHostTest Change-Id: I613f28c202a0904a917577f932d072111c1aa7bd
2019-05-06Merge "Track libziparchive API change." am: 32581e1dd2Elliott Hughes
am: 78791cd8d7 Change-Id: Id4ac5019e267fbd0a32a41437e92c3f802e334e8
2019-05-03Track libziparchive API change.Elliott Hughes
Bug: http://b/129068177 Test: treehugger Change-Id: I88f49a06db416a7c6ec8afe87cc9cca825eb5ccb