aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2018-10-16 11:00:04 +0900
committerJiyong Park <jiyong@google.com>2018-10-16 18:05:49 +0900
commitfa17afef53771ba04711827b85d109b31210c9f2 (patch)
tree70f535c6ecfe22d2819756ae499bae24a59fbb37 /scripts
parent153c2f8ba339cce73881570a6c7c2a51b0013d50 (diff)
downloadbuild_soong-fa17afef53771ba04711827b85d109b31210c9f2.tar.gz
build_soong-fa17afef53771ba04711827b85d109b31210c9f2.tar.bz2
build_soong-fa17afef53771ba04711827b85d109b31210c9f2.zip
android.test.{base|mock} are added as optional libraries.
The two java shared libraries do not exist in the pre-P devices. Therefore, marking the dependencies to the libraries as optional so that an app is still installable to the old devices. This is safe because the classes in the java shared libs exist in other shared libraries (bootclasspath or android.test.runner). Bug: 113800422 Test: run aapt dump badging on the built GtsBackupHostTestCases uses-library tags for android.test.base|mock are with android:required=false, while the same tag for other libs are without the attribute. Change-Id: I266c8efb9686e8975be37f31aea0dc22f82370c3
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/manifest_fixer.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/scripts/manifest_fixer.py b/scripts/manifest_fixer.py
index 05bd66ed..9256cb29 100755
--- a/scripts/manifest_fixer.py
+++ b/scripts/manifest_fixer.py
@@ -56,7 +56,9 @@ def parse_args():
parser.add_argument('--library', dest='library', action='store_true',
help='manifest is for a static library')
parser.add_argument('--uses-library', dest='uses_libraries', action='append',
- help='specify additional <uses-library> tag to add')
+ help='specify additional <uses-library> tag to add. android:requred is set to true')
+ parser.add_argument('--optional-uses-library', dest='optional_uses_libraries', action='append',
+ help='specify additional <uses-library> tag to add. android:requred is set to false')
parser.add_argument('--uses-non-sdk-api', dest='uses_non_sdk_api', action='store_true',
help='manifest is for a package built against the platform')
parser.add_argument('input', help='input AndroidManifest.xml file')
@@ -190,12 +192,13 @@ def raise_min_sdk_version(doc, min_sdk_version, target_sdk_version, library):
element.setAttributeNode(target_attr)
-def add_uses_libraries(doc, new_uses_libraries):
- """Add additional <uses-library> tags with android:required=false.
+def add_uses_libraries(doc, new_uses_libraries, required):
+ """Add additional <uses-library> tags
Args:
doc: The XML document. May be modified by this function.
new_uses_libraries: The names of libraries to be added by this function.
+ required: The value of android:required attribute. Can be true or false.
Raises:
RuntimeError: Invalid manifest
"""
@@ -227,7 +230,7 @@ def add_uses_libraries(doc, new_uses_libraries):
ul = doc.createElement('uses-library')
ul.setAttributeNS(android_ns, 'android:name', name)
- ul.setAttributeNS(android_ns, 'android:required', 'false')
+ ul.setAttributeNS(android_ns, 'android:required', str(required).lower())
application.insertBefore(doc.createTextNode(indent), last)
application.insertBefore(ul, last)
@@ -285,7 +288,10 @@ def main():
raise_min_sdk_version(doc, args.min_sdk_version, args.target_sdk_version, args.library)
if args.uses_libraries:
- add_uses_libraries(doc, args.uses_libraries)
+ add_uses_libraries(doc, args.uses_libraries, True)
+
+ if args.optional_uses_libraries:
+ add_uses_libraries(doc, args.optional_uses_libraries, False)
if args.uses_non_sdk_api:
add_uses_non_sdk_api(doc)