summaryrefslogtreecommitdiff
path: root/java/rro.go
AgeCommit message (Collapse)Author
2025-03-12Define an output file of runtime_resource_overlay Cole Faust
So that rros can be data of test modules. Test: go test Change-Id: I460a97fd9f430ec8e52ef6756d74b02693469d06
2025-03-06Add RuntimeResourceOverlayInfoProvider to autogen RRO modules Spandan Das
This will be used to generate apkcerts.txt using a Soong build rule (followup CL in this stack). Test: go build ./java Bug: 399788149 Change-Id: Ieb84a13687058cdf23d1bc2c72e3c39e639ef733
2025-03-03Merge "Flags in autogenerated RROs" into main Treehugger Robot
2025-03-03Flags in autogenerated RROs Spandan Das
aapt2 build actions in autogenerated RROs currently do not use aconfig flags. This CL fixes that. Test: m framework-res with the CLs and product of https://yaqs.corp.google.com/eng/q/2623015829943353344 Change-Id: I2ab256ff0382a28c3287804c92d654cb3fac4401
2025-02-19Change depVisitor to use providers instead of type-asserting to Yu Liu
interfaces directly, the next step is to change it to use ModuleProxy once IsDepInSameApex is ready. Bug: 377723687 Test: Unit tests and compare the ninja and mk files generated. Change-Id: I13a4e256a26dbf7f9b3b746d628ac8f68b4e598e
2025-01-30Add compliance metadata of java modules Wei Li
Bug: 330949782 Test: m compliance-metadata.db Test: build/soong/tests/sbom_test.sh Change-Id: I70b55caf2c38980f563170a68bcdb065f60f2461
2025-01-15Add AAPT flags to optimize the set of resources in the RRO apk. Artem Anashkin
The solution is based on adding flags in build/soong/java/app.go. It will reduce the amount of resources in RRO. Also, it solves the problem of extra locales in the Setting and TvSettings applications (see AssetManager2.h, GetResourceLocales()). Add 3 flags: 1. "--product" - specifies a list of product names to keep. 2. "-c" - provides a list of configurations. For example, if you have dependencies on the support library, which contains translations for multiple languages, you can filter resources just for the given language configuration, like English or Spanish. 3. "--preferred-density" - allows AAPT2 to select the closest matching density and strip out all others. Change-Id: I0da8bc05f349553188264824bfa5b53c27882ee3 Signed-off-by: Artem Anashkin <asanashkin@salutedevices.com>
2024-12-08Bugfix for LOCAL_CERTIFICATE of AutogeneratedRuntimeResourceOverlay Spandan Das
LOCAL_CERTIFICATE of these modules are currently set to `PRESIGNED`, since soong generates the build rules to sign the apk. However, this is an incorrect interpretation of `PRESIGNED`. This keyword means that the apk was signed with a release key, and not dev keys. Since Soong signs the autogenerated rros with dev keys, drop `PRESIGNED` from `LOCAL_CERTIFICATE` and replace it with the dev key string. Test: verified that `LOCAL_CERTIFICATE` of `Settings__aosp_cf_x86_64_phone__auto_generated_rro_vendor` in the autogenerated Android.mk is no longer PRESIGNED. Bug: 375277835 Change-Id: I024f88f9ee887323e93df8338af5f8b089025b93
2024-11-26Introduce module type to autogenerate RROS Spandan Das
At ToT, soong emits metadata to make (LOCAL_SOONG_PRODUCT_RRO_DIRS and LOCAL_SOONG_DEVICE_RRO_DIRS), and make uses this metadata to build and install apks that are intalled in /vendor or /product. This CL ports this logic to soong using a new module type. The module type will have a dependency on the base module (e.g. SystemUI). This dependency edge will be used to get information such as - rroDirsDepSet - manifest (to get package_name) To reduce code duplication, `aaptBuildActions` has been extended to accept a manifest and rroDirs parameter. This should be a no op for now. The followup work includes - Autogenerating these module in the load hook of android_app and override_android_app - Including the autogenerated modules in kati built img files - Including the autogenerated modules in soong built img files Test: go test ./java Bug: 375277835 Change-Id: Icd34f59eb751ba60db3c265acada946e20db5f26
2024-11-18Make the certificate property Configurable Cole Faust
By user request. Fixes: 379649314 Test: m nothing --no-skip-soong-tests Change-Id: I2e8c6c1c3556d4178eca2044d200c109669c6e93
2024-09-05Make the java static_libs property configurable Cole Faust
Bug: 362579941 Test: m nothing --no-skip-soong-tests Change-Id: Iccc93cf14753aae1adb26c6eedd00aabf1c2f6a6
2024-06-17Propagate flags_packages to static reverse dependencies Jihoon Kang
flags_packages property was added to supports flagging the manifest files. The listed names of `aconfig_declarations` modules are passed to aapt2. However, this is currently scoped to the module level, and is not propagated to the reverse dependencies. In other words, if the manifest is flagged with `featureFlag` property, all of the reverse dependency of the android_app/android_library should specify `flags_packages` property in the bp module definition, leading to huge toil for the users. In order to resolve such inconvenience, this change modifies the build rules of android_app,android_library and runtime_resource_overlay such that flags_packages of the static dependencies are collected. Test: Patch ag/27816261 && m Settings --no-skip-soong-tests Bug: 347289274 Change-Id: I4c3855541dd09cb72293515eb2626eaf4ae8c0df
2024-03-20Add aconfig flag support for runtime_resource_overlay Jihoon Kang
This change adds the support that was added to android_app in https://r.android.com/2854663 for runtime_resource_overlay modules. Implementation details: - Add flags_packages as dependencies of runtime_resouce_overlay modules - Pass the collected aconfig intermediate cache files to the aconfigBuildActionOptions. Test: m nothing --no-skip-soong-tests Bug: 330222981 Change-Id: I3e20f18e58be689ca32852f7bf0b7ea16024856b
2023-10-10Use an option struct in aapt.buildActions & manifestMerger Alix
Change-Id: Ia056ab321e1fd146ed0cdb98fc2d4455601f648c Test: Treehugger
2023-03-23Update max_sdk_version from SdkSpec to ApiLevel Spandan Das
max_sdk_version signifies device version and does not need an sdkKind to describe it fully. Update the type and cleanup existing usages. As a side benefit, we also get better error handling since users can no longer enter something like `public_30` as a valid max_sdk_version in bp files Bug: 208456999 Test: no change in ninja file (this should be a no-op) Test: TH Change-Id: I304b5ad802bde200137d8e225182828dfd6f7227
2023-03-23Update target_sdk_version from SdkSpec to ApiLevel Spandan Das
target_sdk_version signifies device version and does not need an sdkKind to describe it fully. Update the type and cleanup existing usages. As a side benefit, we also get better error handling since users can no longer enter something like `public_30` as a valid target_sdk_version in bp files Test: m nothing Test: no change in ninja files (this should be a no-op) Bug: 208456999 Change-Id: I3c19245e29184bd9e5660ad8981966f64dfa9424
2023-03-22Update min_sdk_version from SdkSpec to ApiLevel Spandan Das
This relands aosp/2457063. The original change broke T and U since those branches still contain soong modules of type (kind+level). Those soong modules have been cleaned up now Test: Used go/abtd to test T and U branches with this change Bug: 208456999 Change-Id: I0ef7933c055f88cb512a02108f1173e51156ef1c
2023-03-21Revert "Update min_sdk_version from SdkSpec to ApiLevel" Spandan Das
Revert submission 2457063 Reason for revert: Broken udc-dev Reverted changes: /q/submissionid:2457063 Change-Id: Id6349fc1318877044af713c914a0afd437d3d2d5
2023-03-20Update min_sdk_version from SdkSpec to ApiLevel Spandan Das
min_sdk_version signifies device version and does not need an sdkKind to describe it fully. Update the type and cleanup existing usages. As a side benefit, we also get better error handling since users can no longer enter something like `public_30` as a valid min_sdk_version in bp files Will do a similar cleanup for targetSdkVersion and maxSdkVersion in a followup CL Test: m nothing Test: no change in ninja files (this should be a no-op) Bug: 208456999 Change-Id: Ie6ae7e267d093c5e4787e82685daaca1021d202e
2022-10-07Allow overriding rro category in override_runtime_resource_overlay Jeremy Meyer
Bug: 240322840 Test: unit tests Change-Id: I6b07cf57dc113e3805346e50ef9896471df9f53c
2022-09-21Enforce mainline modules to have latest target sdk version by default. Harshit Mahajan
Due to GMS target SDK requirements (https://docs.partner.android.com/gms/policies/preview/mba#min-target-sdk) we need to ensure all the mainline packages to target latest API level. Currently, the team chases each module to bump their target API level. Updating the build code to make sure that mainline modules (i.e updatable modules) target the latest sdk version by default. It would be by default set to 10000 before SDK finalization and updated to the new API level after finalization. Effectively it would mean: 1. '10000' in aosp and internal master 2. Finalized number in development branches like "33" in "tm-dev" 3. As sdk hasn't been finalised in "udc-dev", it would be "10000" which would be automatically updated to finalized version after sdk finalization. For local development if the target sdk version is required to be set, users would need to set Updatable flag to false. Enforce_default_target_sdk_version flag needs to be used in bp file, if this feature needs to be tested locally when updatable: false. Bug: b/227460469 Test: m nothing Change-Id: I05e0ae74ae44fd73df75e91b926bcc924446253f
2022-09-14Move AllowMissingDependencies handling into processMainCert Colin Cross
I046d75dbbd4f21f4a2b6851f558e430e9879fcff fixed android_app modules with missing certificate dependencies when AllowMissingDependencies was set, but the same problem can occur in android_app_import and android_rro modules. Move the AllowMissingDependencies handling into processMainCert so that it applies to all of them. Bug: 246649647 Test: TestAppImportMissingCertificateAllowMissingDependencies Change-Id: Ic7dd3e61e0e3af15c53b583cf680b1e52394a018
2022-08-03Merge "copy JNI from AAR files to android_app APK" am: fb845984df Sam Delmerico
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2149174 Change-Id: I8697a193bf054623dcdf67f6beded56a75c52875 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-08-02copy JNI from AAR files to android_app APK Sam Delmerico
JNI libs present in AAR files are ignored in the build. If those libraries are necessary, they must be manually extracted and a prebuilt_cc_library module must be created for them. Instead, we can extract these libraries and copy them to an output APK as part of the build. Bug: 228848794 Test: created android_app that depends on an android_library_import with JNI embedded, and verified that .so libs are present in APK Test: created android_app that depends on an android_library which depends on android_library_import with JNI embedded, and verified that .so libs are present in APK Test: verified that multiple .so's from a single architecture are copied to APK Test: verified that the absence of a jni/<arch> folder or files in the folder will cause the Ninja action to error Change-Id: I242a862d7bd881f7a4a8c23493924d8fe441ea25
2022-07-14Merge "Propagate max_sdk_version to manifest_fixer" am: 50dbe0a074 William Loh
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2104965 Change-Id: If87b6e5740ae3bd2f90c57b096ac358f0f84ba08 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-06-28Propagate max_sdk_version to manifest_fixer William Loh
If max_sdk_version is included in Android.bp that value will now be propagated to manifest_fixer.py. This value will then be used to override any maxSdkVersion attribute set on permission or uses-permission tags in the android manifest if maxSdkVersion="-1". Bug: 223902327 Test: add max_sdk_version to Android.bp for test app Test: create permission in test app manifest with maxSdkVersion="-1" Test: run test to check maxSdkVersion=max_sdk_version Change-Id: Ic533ef2a41b9ecc9ee68c69399026df47ee945b7
2022-02-07Merge "Add support for excluding libraries from class loader contexts" am: ↵ Paul Duffin
e95d77b964 am: ab9e6fe18f am: 7c89c48887 am: 10ccb6c274 Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1971343 Change-Id: Ia03300d88199034f2cf07dbb9ca229e5e13ceb00
2022-02-07Add support for excluding libraries from class loader contexts Paul Duffin
A number of tests in the cts/tests/signature/api-check check for the accessibility of classes from the android.test.base, android.test.runner and android.test.mock libraries. Some tests expect to find the classes other do not. Unfortunately, the tests use libraries, specifically compatibility-device-util-axt, that depend on the android.test... libraries which causes Soong to implicitly add <uses-library> entries to the manifest so that they will be accessible at runtime. That causes the tests that do not expect to find the classes to fail. Bug: 209607558 Test: m nothing Change-Id: I54c194ab23d5a70df790ece3fe98f2b3d6a1c1f6
2021-11-03Add ability to set --rotation-min-sdk-version for signapk via Android.bp files. Rupert Shuttleworth
(vs via Android.mk files, done earlier in http://ag/16094391) Bug: 197787352 Test: Added unit tests. Change-Id: I3ccd2f2134b069fb4c4a90fe384c23c1814c2ba2
2021-06-08Port module_partition logic for RRO from Make to Soong Spandan Das
The default partition for RRO is "product/" in Make, but it was "system/" in Soong. This CL ports the logic from Make to Soong To implement this, a new function PathForModuleInPartitionInstall is created that enables callers to provide the relevant partition Bug: 158407753 Test: from build/soong, ran go test ./java Change-Id: I05b02eae7fe57189aaad5109c26cccc5823518ef
2021-04-08SdkSpec is fully using ApiLevel Jiyong Park
Previously, SdkSpec was constructed only from the user string. It didn't make use of the Config struct where information about the latest stable SDK version, etc. is recorded. As a result, the build system couldn't check if the sdk version "current" is referring to the in-development (i.e. not-yet-frozen) SDK version or the latest stable version. "current" was always assumed to be in-development (IsPreview() returns true) even when Platform_sdk_final == true. As the first step for fixing that, this change requires android.EarlyModuleContext to be passed when constructing SdkSpec from the user string. In the following changes, "current" will be mapped to either FutureApiLevel (10000) or one of the FinalApiLevels() depending on whether the platform SDK was finalized or not. Bug: 175678607 Test: m Change-Id: Ifea12ebf147ecccf12e7266dd382819806571543
2021-04-03Move java.sdkSpec to the android package Jiyong Park
... in preparation for making the handling of sdk versions consistent across java and cc modules. Bug: 175678607 Test: m Change-Id: I598f0454bce9b7320621022115412fbe97403945
2021-01-28go/Android.bp: Clarify sdk_version documentation. Tobias Thierer
The documentation was unclear because there are at least three different ways (codename, version, API level) to refer to each version, see https://source.android.com/setup/start/build-numbers It is further complicated by the fact that this value is taken as a String even though the API level it refers to is normally an integer. To disambiguate, this CL adds an example. Test: Treehugger only. Change-Id: I40c13104a87d16c84c2098f36f7f63447d3dda4d
2020-12-21Break up app.go. Jaewoong Jung
Test: m nothing + TreeHugger Change-Id: I64c6d7f10530c424bc282d8111dfaf9159426f00