Merge compilesdk= into target=, better documentation about target=

This commit is contained in:
Daniel Martí 2014-01-28 14:01:32 +01:00
parent 778b15322c
commit 3e789bd6b5
4 changed files with 22 additions and 28 deletions

View file

@ -836,22 +836,17 @@ is sdk-location. Typically, if you get a message along the lines of:
try enabling this option. try enabling this option.
@item target=<target> @item target=<target>
Specifies a particular SDK target for compilation, overriding the Specifies a particular SDK target for compilation, overriding the value
project.properties of the app and possibly sub-projects. Note that this does defined in the code by upstream. This has different effects depending on what
not change the target SDK in the AndroidManifest.xml — the level of features build system used — this flag currently affects ant, maven and gradle projects
that can be included in the build. This is likely to cause the whole build.xml only. Note that this does not change the target SDK in the
to be rewritten, which is fine if it's a 'standard' android file or doesn't AndroidManifest.xml, which determines the level of features that can be
already exist, but not a good idea if it's heavily customised. If you get an included in the build.
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=. 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
@item compilesdk=<level> rewritten, which is fine if it's a 'standard' android file or doesn't already
Practically accomplishes the same that target= does when used in ant and maven exist, but not a good idea if it's heavily customised.
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.
@item update=xxx @item update=xxx
By default, 'android update project' is used to generate or update the By default, 'android update project' is used to generate or update the

View file

@ -595,17 +595,6 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
flavours = thisbuild['gradle'].split(',') flavours = thisbuild['gradle'].split(',')
gradle_dir = root_dir 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', '']: if len(flavours) == 1 and flavours[0] in ['main', 'yes', '']:
flavours[0] = '' flavours[0] = ''

View file

@ -937,7 +937,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
# Generate (or update) the ant build file, build.xml... # 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'), parms = [os.path.join(config['sdk_path'], 'tools', 'android'),
'update', 'project'] 'update', 'project']
if 'target' in build and build['target']: if 'target' in build and build['target']:
@ -1013,6 +1013,16 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
if flavour in ['main', 'yes', '']: if flavour in ['main', 'yes', '']:
flavour = None 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 # Remove forced debuggable flags
print "Removing debuggable flags..." print "Removing debuggable flags..."
for path in manifest_paths(root_dir, flavour): for path in manifest_paths(root_dir, flavour):

View file

@ -698,7 +698,7 @@ def write_metadata(dest, app):
# This defines the preferred order for the build items - as in the # This defines the preferred order for the build items - as in the
# manual, they're roughly in order of application. # manual, they're roughly in order of application.
keyorder = ['disable', 'commit', 'subdir', 'submodules', 'init', keyorder = ['disable', 'commit', 'subdir', 'submodules', 'init',
'gradle', 'maven', 'oldsdkloc', 'target', 'compilesdk', 'gradle', 'maven', 'oldsdkloc', 'target',
'update', 'encoding', 'forceversion', 'forcevercode', 'rm', 'update', 'encoding', 'forceversion', 'forcevercode', 'rm',
'fixtrans', 'fixapos', 'extlibs', 'srclibs', 'patch', 'fixtrans', 'fixapos', 'extlibs', 'srclibs', 'patch',
'prebuild', 'scanignore', 'scandelete', 'build', 'buildjni', 'prebuild', 'scanignore', 'scandelete', 'build', 'buildjni',