diff --git a/README b/README index 334b8225..f6adb6ba 100644 --- a/README +++ b/README @@ -126,49 +126,56 @@ configuration to the build. These are: subdir= - Specifies to build from a subdirectory of the checked out source code. Normally this directory is changed to before - building, but there is a special case for SVN repositories - where the URL is specified with a * at the end. See the - documentation for the Repo field for more information. + building, but there is a special case for SVN repositories + where the URL is specified with a * at the end. See the + documentation for the Repo field for more information. bindir= - Normally the build output (apk) is expected to be in the - bin subdirectory below the ant build files. If the project - is configured to put it elsewhere, that can be specified - here, relative to the base of the checked out repo.. + bin subdirectory below the ant build files. If the project + is configured to put it elsewhere, that can be specified + here, relative to the base of the checked out repo.. oldsdkloc=yes - The sdk location in the repo is in an old format, or the build.xml is expecting such. The 'new' format is sdk.dir - while the VERY OLD format is sdk-location. Typically, if - you get a message along the lines of: - "com.android.ant.SetupTask cannot be found" - when trying to build, then try enabling this option. + while the VERY OLD format is sdk-location. Typically, if + you get a message along the lines of: + "com.android.ant.SetupTask cannot be found" + when trying to build, then try enabling this option. target= - Specifies a particular SDK target, when the source doesn't. 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. + 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. rm= - Specifies the relative path of file to delete before the - build is done. The path is relative to the base of the - build directory - i.e. the directory that contains - AndroidManifest.xml. + build is done. The path is relative to the base of the + build directory - i.e. the directory that contains + AndroidManifest.xml. antcommand=xxx - Specify an alternate ant command (target) instead of the - default 'release'. + default 'release'. insertversion=x - If specified, the pattern 'x' in the AndroidManifest.xml is replaced with the version number for the build. insertvercode=x - If specified, the pattern 'x' in the AndroidManifest.xml is replaced with the version code for the build. update=no By default, 'android update project' is used to generate or - update the build.xml file. Specifying update=no bypasses - that. + update the build.xml file. Specifying update=no bypasses + that. initfun=yes Enables a selection of mad hacks to make com.funambol.android build. Probably not useful for any other application. buildjni=yes Enables building of native code via the ndk-build script before - doing the main ant build. + doing the main ant build. submodules=yes Use if the project (git only) has submodules - causes git - submodule init and update to be executed after the source is - cloned. + submodule init and update to be executed after the source is + cloned. encoding=xxxx Adds a java.encoding property to local.properties with the given value. Generally the value will be 'utf-8'. This is picked up by - the SDK's ant rules, and forces the Java compiler to interpret - source files with this encoding. If you receive warnings during - the compile about character encodings, you probably need this. + the SDK's ant rules, and forces the Java compiler to interpret + source files with this encoding. If you receive warnings during + the compile about character encodings, you probably need this. + prebuild=xxxx Specifies a shell command (or commands - chain with &&) to run + before the build takes place - the only proviso being that you + can't use , or = characters. + novcheck=yes Don't check that the version name and code in the resulting apk + are correct by looking at the build output - assume the metadata + is correct. This takes away a useful level of sanity checking, and + should only be used if the values can't be extracted. Another example, using extra parameters: diff --git a/build.py b/build.py index 749e01f3..07daa977 100644 --- a/build.py +++ b/build.py @@ -397,17 +397,21 @@ for app in apps: p = subprocess.Popen([aapt_path,'dump','badging', src], stdout=subprocess.PIPE) output = p.communicate()[0] - vercode = None - version = None - for line in output.splitlines(): - if line.startswith("package:"): - pat = re.compile(".*versionCode='([0-9]*)'.*") - vercode = re.match(pat, line).group(1) - pat = re.compile(".*versionName='([^']*)'.*") - version = re.match(pat, line).group(1) - if version == None or versioncode == None: - print "Could not find version information in build in output" - sys.exit(1) + if thisbuild.has_key('novcheck') and thisbuild['novcheck'] == "yes": + vercode = thisbuild['vercode'] + version = thisbuild['version'] + else: + vercode = None + version = None + for line in output.splitlines(): + if line.startswith("package:"): + pat = re.compile(".*versionCode='([0-9]*)'.*") + vercode = re.match(pat, line).group(1) + pat = re.compile(".*versionName='([^']*)'.*") + version = re.match(pat, line).group(1) + if version == None or versioncode == None: + print "Could not find version information in build in output" + sys.exit(1) # Some apps (e.g. Timeriffic) have had the bonkers idea of # including the entire changelog in the version number. Remove