try enabling this option.
@item target=<target>
-Specifies a particular SDK target for compilation, overriding the
-project.properties of the app and possibly sub-projects. Note that this does
-not change the target SDK in the AndroidManifest.xml — the level of features
-that can be included in the build. This is likely to cause the whole build.xml
-to be rewritten, which is fine if it's a 'standard' android file or doesn't
-already exist, but not a good idea if it's heavily customised. If you get an
-error about invalid target, first try @code{init=rm -rf bin/}; otherwise this
-parameter should do the trick.
-
-Please note that gradle builds should be using compilesdk=.
-
-@item compilesdk=<level>
-Practically accomplishes the same that target= does when used in ant and maven
-projects. compilesdk= is used rather than target= so as to not cause any more
-confusion. It only takes effect on gradle builds in the build.gradle file,
-thus using it in any other case is not wise.
+Specifies a particular SDK target for compilation, overriding the value
+defined in the code by upstream. This has different effects depending on what
+build system used — this flag currently affects ant, maven and gradle projects
+only. Note that this does not change the target SDK in the
+AndroidManifest.xml, which determines the level of features that can be
+included in the build.
+
+In the case of an ant project, it modifies project.properties of the app and
+possibly sub-projects. This is likely to cause the whole build.xml to be
+rewritten, which is fine if it's a 'standard' android file or doesn't already
+exist, but not a good idea if it's heavily customised.
@item update=xxx
By default, 'android update project' is used to generate or update the
flavours = thisbuild['gradle'].split(',')
gradle_dir = root_dir
-
- if 'compilesdk' in thisbuild:
- level = thisbuild["compilesdk"].split('-')[1]
- subprocess.call(['sed', '-i',
- 's@compileSdkVersion[ ]*[0-9]*@compileSdkVersion '+level+'@g',
- 'build.gradle'], cwd=root_dir)
- if '@' in thisbuild['gradle']:
- subprocess.call(['sed', '-i',
- 's@compileSdkVersion[ ]*[0-9]*@compileSdkVersion '+level+'@g',
- 'build.gradle'], cwd=gradle_dir)
-
if len(flavours) == 1 and flavours[0] in ['main', 'yes', '']:
flavours[0] = ''
# Generate (or update) the ant build file, build.xml...
- if (updatemode != 'no' and build['type'] == 'ant'):
+ if updatemode != 'no' and build['type'] == 'ant':
parms = [os.path.join(config['sdk_path'], 'tools', 'android'),
'update', 'project']
if 'target' in build and build['target']:
if flavour in ['main', 'yes', '']:
flavour = None
+ if 'target' in thisbuild:
+ n = thisbuild["target"].split('-')[1]
+ subprocess.call(['sed', '-i',
+ 's@compileSdkVersion[ ]*[0-9]*@compileSdkVersion '+n+'@g',
+ 'build.gradle'], cwd=root_dir)
+ if '@' in thisbuild['gradle']:
+ subprocess.call(['sed', '-i',
+ 's@compileSdkVersion[ ]*[0-9]*@compileSdkVersion '+n+'@g',
+ 'build.gradle'], cwd=gradle_dir)
+
# Remove forced debuggable flags
print "Removing debuggable flags..."
for path in manifest_paths(root_dir, flavour):
# This defines the preferred order for the build items - as in the
# manual, they're roughly in order of application.
keyorder = ['disable', 'commit', 'subdir', 'submodules', 'init',
- 'gradle', 'maven', 'oldsdkloc', 'target', 'compilesdk',
+ 'gradle', 'maven', 'oldsdkloc', 'target',
'update', 'encoding', 'forceversion', 'forcevercode', 'rm',
'fixtrans', 'fixapos', 'extlibs', 'srclibs', 'patch',
'prebuild', 'scanignore', 'scandelete', 'build', 'buildjni',