Don't set targetSdkVersion to '1' for libraries

Setting targetSdkVersion to '1' causes ManifestMerger to add
implicit permissions when merging to a higher targetSdkVersion.
It should really be unset, but ManifestMerger treats unset
targetSdkVersion as 'Q' if minSdkVersion is 'Q' (but not if
minSdkVersion is '28').  Set it to something low so that it
will be overriden by the main manifest, but high enough that
it doesn't cause implicit permissions grants.

Bug: 115415671
Bug: 117122200
Test: m checkbuild
Change-Id: I1d2d031a21314f6b55d8ea1cc7c4c8e3ecae7f06
This commit is contained in:
Colin Cross 2018-10-01 15:15:51 -07:00
parent 16d387c970
commit 4b176069c3
2 changed files with 8 additions and 3 deletions

View File

@ -179,7 +179,12 @@ def raise_min_sdk_version(doc, min_sdk_version, target_sdk_version, library):
if target_attr is None:
target_attr = doc.createAttributeNS(android_ns, 'android:targetSdkVersion')
if library:
target_attr.value = '1'
# TODO(b/117122200): libraries shouldn't set targetSdkVersion at all, but
# ManifestMerger treats minSdkVersion="Q" as targetSdkVersion="Q" if it
# is empty. Set it to something low so that it will be overriden by the
# main manifest, but high enough that it doesn't cause implicit
# permissions grants.
target_attr.value = '15'
else:
target_attr.value = target_sdk_version
element.setAttributeNode(target_attr)

View File

@ -173,7 +173,7 @@ class RaiseMinSdkVersionTest(unittest.TestCase):
"""Tests inserting targetSdkVersion when minSdkVersion exists."""
manifest_input = self.manifest_tmpl % self.uses_sdk(min='27')
expected = self.manifest_tmpl % self.uses_sdk(min='28', target='1')
expected = self.manifest_tmpl % self.uses_sdk(min='28', target='15')
output = self.raise_min_sdk_version_test(manifest_input, '28', '29', True)
self.assertEqual(output, expected)
@ -189,7 +189,7 @@ class RaiseMinSdkVersionTest(unittest.TestCase):
"""Tests inserting targetSdkVersion when minSdkVersion does not exist."""
manifest_input = self.manifest_tmpl % ''
expected = self.manifest_tmpl % self.uses_sdk(min='28', target='1')
expected = self.manifest_tmpl % self.uses_sdk(min='28', target='15')
output = self.raise_min_sdk_version_test(manifest_input, '28', '29', True)
self.assertEqual(output, expected)