diff --git a/pythonforandroid/bootstraps/common/build/build.py b/pythonforandroid/bootstraps/common/build/build.py
index 6885a333df..74899069f3 100644
--- a/pythonforandroid/bootstraps/common/build/build.py
+++ b/pythonforandroid/bootstraps/common/build/build.py
@@ -497,6 +497,12 @@ def make_package(args):
sdk_dir = fileh.read().strip()
sdk_dir = sdk_dir[8:]
+ if args.android_target_sdk_version == -1:
+ args.android_target_sdk_version = android_api
+ if args.android_target_sdk_version != android_api:
+ print(f'WARNING: android_target_sdk_version ({args.android_target_sdk_version}) '
+ f'was set explicitly, and it does not match android_api ({android_api}).')
+
# Try to build with the newest available build tools
ignored = {".DS_Store", ".ds_store"}
build_tools_versions = [x for x in listdir(join(sdk_dir, 'build-tools')) if x not in ignored]
@@ -805,6 +811,9 @@ def parse_args_and_make_package(args=None):
action='store_true',
help=('Allow the --minsdk argument to be different from '
'the discovered ndk_api in the dist'))
+ ap.add_argument('--android-target-sdk-version', dest='android_target_sdk_version',
+ default=-1, type=int,
+ help='targetSdkVersion to put in manifest. Matches android-api by default.')
ap.add_argument('--intent-filters', dest='intent_filters',
help=('Add intent-filters xml rules to the '
'AndroidManifest.xml file. The argument is a '
diff --git a/pythonforandroid/bootstraps/common/build/templates/build.tmpl.gradle b/pythonforandroid/bootstraps/common/build/templates/build.tmpl.gradle
index bb000393a4..2f944dfd93 100644
--- a/pythonforandroid/bootstraps/common/build/templates/build.tmpl.gradle
+++ b/pythonforandroid/bootstraps/common/build/templates/build.tmpl.gradle
@@ -33,7 +33,7 @@ android {
buildToolsVersion '{{ build_tools_version }}'
defaultConfig {
minSdkVersion {{ args.min_sdk_version }}
- targetSdkVersion {{ android_api }}
+ targetSdkVersion {{ args.android_target_sdk_version }}
versionCode {{ args.numeric_version }}
versionName '{{ args.version }}'
manifestPlaceholders = {{ args.manifest_placeholders}}
diff --git a/pythonforandroid/bootstraps/sdl2/build/templates/AndroidManifest.tmpl.xml b/pythonforandroid/bootstraps/sdl2/build/templates/AndroidManifest.tmpl.xml
index 27b2f19433..e1c3899e59 100644
--- a/pythonforandroid/bootstraps/sdl2/build/templates/AndroidManifest.tmpl.xml
+++ b/pythonforandroid/bootstraps/sdl2/build/templates/AndroidManifest.tmpl.xml
@@ -19,7 +19,7 @@
/>
-
+
diff --git a/pythonforandroid/bootstraps/service_library/build/templates/AndroidManifest.tmpl.xml b/pythonforandroid/bootstraps/service_library/build/templates/AndroidManifest.tmpl.xml
index f667651780..91eb1a5dca 100644
--- a/pythonforandroid/bootstraps/service_library/build/templates/AndroidManifest.tmpl.xml
+++ b/pythonforandroid/bootstraps/service_library/build/templates/AndroidManifest.tmpl.xml
@@ -5,7 +5,7 @@
android:versionName="{{ args.version }}">
-
+
{% for name in service_names %}
diff --git a/pythonforandroid/bootstraps/service_only/build/templates/AndroidManifest.tmpl.xml b/pythonforandroid/bootstraps/service_only/build/templates/AndroidManifest.tmpl.xml
index d19ed32931..701dd887b5 100644
--- a/pythonforandroid/bootstraps/service_only/build/templates/AndroidManifest.tmpl.xml
+++ b/pythonforandroid/bootstraps/service_only/build/templates/AndroidManifest.tmpl.xml
@@ -16,7 +16,7 @@
/>
-
+
{% for perm in args.permissions %}
diff --git a/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml b/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml
index f77533b1e6..a7e495b1fd 100644
--- a/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml
+++ b/pythonforandroid/bootstraps/webview/build/templates/AndroidManifest.tmpl.xml
@@ -16,7 +16,7 @@
/>
-
+
diff --git a/tests/test_build.py b/tests/test_build.py
index 6d30f996e7..2bb119c23a 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -62,6 +62,8 @@ class TestTemplates(unittest.TestCase):
def test_android_manifest_xml(self):
args = mock.Mock()
args.min_sdk_version = 12
+ android_api = 1234
+ args.android_target_sdk_version = android_api
args.build_mode = 'debug'
args.native_services = ['abcd', ]
args.permissions = []
@@ -74,7 +76,7 @@ def test_android_manifest_xml(self):
"args": args,
"service": False,
"service_names": [],
- "android_api": 1234,
+ "android_api": android_api,
"debug": "debug" in args.build_mode,
"native_services": args.native_services
}