tarball.close()
# Build native stuff if required...
- if thisbuild.get('buildjni', 'no') == 'yes':
+ if thisbuild.get('buildjni') not in (None, 'no'):
+ jni_components = thisbuild.get('buildjni')
+ if jni_components == 'yes':
+ jni_components = ['']
+ else:
+ jni_components = jni_components.split(';')
ndkbuild = os.path.join(ndk_path, "ndk-build")
- p = subprocess.Popen([ndkbuild], cwd=root_dir,
- stdout=subprocess.PIPE)
+ for d in jni_components:
+ if options.verbose:
+ print "Running ndk-build in " + root_dir + '/' + d
+ p = subprocess.Popen([ndkbuild], cwd=root_dir + '/' + d,
+ stdout=subprocess.PIPE)
output = p.communicate()[0]
if p.returncode != 0:
print output
return options, args
+options = None
def main():
+ global options
# Read configuration...
execfile('config.py', globals())
options, args = parse_commandline()
raise BuildException("Error running init command")
# Generate (or update) the ant build file, build.xml...
- if (build.get('update', 'yes') != 'no' and
+ if (build.get('update', '.') != 'no' and
not build.has_key('maven')):
parms = [os.path.join(sdk_path, 'tools', 'android'),
'update', 'project', '-p', '.']
if build.has_key('target'):
parms.append('-t')
parms.append(build['target'])
+ update_dirs = build.get('update', '.').split(';')
# Force build.xml update if necessary...
- if build.get('update', 'yes') == 'force' or build.has_key('target'):
+ if build.get('update', '.') == 'force' or build.has_key('target'):
+ update_dirs = ['.']
buildxml = os.path.join(root_dir, 'build.xml')
if os.path.exists(buildxml):
print 'Force-removing old build.xml'
os.remove(buildxml)
- if subprocess.call(parms, cwd=root_dir) != 0:
- raise BuildException("Failed to update project")
+ for d in update_dirs:
+ if subprocess.call(parms, cwd=root_dir + '/' + d) != 0:
+ raise BuildException("Failed to update project")
# If the app has ant set up to sign the release, we need to switch
# that off, because we want the unsigned apk...
# Presence of a jni directory without buildjni=yes might
# indicate a problem...
if (os.path.exists(os.path.join(root_dir, 'jni')) and
- thisbuild.get('buildjni', 'no') == 'no'):
+ thisbuild.get('buildjni') is None):
msg = 'Found jni directory, but buildjni is not enabled'
problems.append(msg)