Commit ce5726c2 authored by Mohamed Heikal's avatar Mohamed Heikal Committed by Commit Bot

Android: Adds platformBuildVersion(Name/Code) to AndroidManifest.xml

This adds platformBuildVersion(Name/Code) to AndroidManifest.xml like
aapt(1) used to do but aapt2 no longer does.

Bug: 798931
Change-Id: I7a9c94c0486e79c885dfb08dc288fcff77297335
Reviewed-on: https://chromium-review.googlesource.com/850446
Commit-Queue: Mohamed Heikal <mheikal@chromium.org>
Reviewed-by: default avataragrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527137}
parent 7aebcf80
...@@ -665,16 +665,36 @@ def _CreateLinkApkArgs(options): ...@@ -665,16 +665,36 @@ def _CreateLinkApkArgs(options):
return link_command return link_command
def _EnableDebugInManifest(manifest_path, temp_dir): def _ExtractVersionFromSdk(aapt_path, sdk_path):
output = subprocess.check_output([aapt_path, 'dump', 'badging', sdk_path])
version_code = re.search(r"versionCode='(.*?)'", output).group(1)
version_name = re.search(r"versionName='(.*?)'", output).group(1)
return version_code, version_name,
def _FixManifest(options, temp_dir):
debug_manifest_path = os.path.join(temp_dir, 'AndroidManifest.xml') debug_manifest_path = os.path.join(temp_dir, 'AndroidManifest.xml')
_ANDROID_NAMESPACE = 'http://schemas.android.com/apk/res/android' _ANDROID_NAMESPACE = 'http://schemas.android.com/apk/res/android'
_TOOLS_NAMESPACE = 'http://schemas.android.com/tools' _TOOLS_NAMESPACE = 'http://schemas.android.com/tools'
ElementTree.register_namespace('android', _ANDROID_NAMESPACE) ElementTree.register_namespace('android', _ANDROID_NAMESPACE)
ElementTree.register_namespace('tools', _TOOLS_NAMESPACE) ElementTree.register_namespace('tools', _TOOLS_NAMESPACE)
original_manifest = ElementTree.parse(manifest_path) original_manifest = ElementTree.parse(options.android_manifest)
version_code, version_name = _ExtractVersionFromSdk(
options.aapt_path, options.android_sdk_jar)
# ElementTree.find does not work if the required tag is the root.
if original_manifest.getroot().tag == 'manifest':
manifest_node = original_manifest.getroot()
else:
manifest_node = original_manifest.find('manifest')
app_node = original_manifest.find('application') manifest_node.set('platformBuildVersionCode', version_code)
app_node.set('{%s}%s' % (_ANDROID_NAMESPACE, 'debuggable'), 'true') manifest_node.set('platformBuildVersionName', version_name)
if options.debuggable:
app_node = original_manifest.find('application')
app_node.set('{%s}%s' % (_ANDROID_NAMESPACE, 'debuggable'), 'true')
with open(debug_manifest_path, 'w') as debug_manifest: with open(debug_manifest_path, 'w') as debug_manifest:
debug_manifest.write(ElementTree.tostring( debug_manifest.write(ElementTree.tostring(
...@@ -775,11 +795,8 @@ def _PackageApk(options, dep_subdirs, temp_dir, gen_dir, r_txt_path): ...@@ -775,11 +795,8 @@ def _PackageApk(options, dep_subdirs, temp_dir, gen_dir, r_txt_path):
link_command += ['--output-text-symbols', r_txt_path] link_command += ['--output-text-symbols', r_txt_path]
link_command += ['--java', gen_dir] link_command += ['--java', gen_dir]
if options.debuggable: fixed_manifest = _FixManifest(options, temp_dir)
debug_manifest = _EnableDebugInManifest(options.android_manifest, temp_dir) link_command += ['--manifest', fixed_manifest]
link_command += ['--manifest', debug_manifest]
else:
link_command += ['--manifest', options.android_manifest]
partials = _CompileDeps(options.aapt_path, dep_subdirs, temp_dir) partials = _CompileDeps(options.aapt_path, dep_subdirs, temp_dir)
for partial in partials: for partial in partials:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment