| #!/usr/bin/env python3 |
| |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Generates AndroidManifest.xml for a -Stub.apk.""" |
| |
| import argparse |
| import pathlib |
| import re |
| import sys |
| from xml.etree import ElementTree |
| |
| from util import build_utils |
| from util import manifest_utils |
| |
| _MAIN_TEMPLATE = """\ |
| <?xml version="1.0" encoding="utf-8"?> |
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| package="will.be.replaced"> |
| {}<application android:label="APK Stub">{}</application> |
| </manifest> |
| """ |
| |
| _STATIC_LIBRARY_TEMPLATE = """ |
| <static-library android:name="{}" android:version="{}" /> |
| """ |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument('--static-library-name') |
| parser.add_argument('--static-library-version') |
| parser.add_argument('--output', required=True) |
| parser.add_argument('--use-permissions-from') |
| args = parser.parse_args(build_utils.ExpandFileArgs(sys.argv[1:])) |
| |
| if args.use_permissions_from: |
| manifest_node = manifest_utils.ParseManifest(args.use_permissions_from)[1] |
| permission_nodes = manifest_node.findall('uses-permission') |
| permission_nodes += manifest_node.findall('uses-permission-sdk-23') |
| sb = [] |
| for node in permission_nodes: |
| sb.append(ElementTree.tostring(node).decode('utf8').rstrip() + '\n ') |
| sb.sort() |
| permissions_part = ''.join(sb) |
| permissions_part = re.sub(r'tools:ignore=".*?"\s*', '', permissions_part) |
| permissions_part = re.sub(r'xmlns:tools=".*?"\s*', '', permissions_part) |
| else: |
| permissions_part = '' |
| |
| static_library_part = '' |
| if args.static_library_name: |
| static_library_part = _STATIC_LIBRARY_TEMPLATE.format( |
| args.static_library_name, args.static_library_version) |
| |
| data = _MAIN_TEMPLATE.format(permissions_part, static_library_part) |
| pathlib.Path(args.output).write_text(data, encoding='utf8') |
| |
| |
| if __name__ == '__main__': |
| main() |