diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index f74b99c3..e1cfaa71 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -74,9 +74,8 @@ def check_tags(app, sdk_path): vcs.gotorevision(tag) # Only process tags where the manifest exists... - path = common.manifest_path(build_dir, flavour, gradle, - build_tools, gradle_plugin) - if path is not None and os.path.exists(path): + path = common.manifest_path(build_dir, flavour) + if path is not None: version, vercode, package = common.parse_androidmanifest(path) print "Manifest exists. Found version %s" % version if package and package == app['id'] and version and vercode: @@ -150,10 +149,9 @@ def check_repomanifest(app, sdk_path, branch=None): if not os.path.isdir(build_dir): return (None, "Subdir '" + app['builds'][-1]['subdir'] + "'is not a valid directory") - path = common.manifest_path(build_dir, flavour, gradle, build_tools, - gradle_plugin) + path = common.manifest_path(build_dir, flavour) if path is None: - return (None, "Gradle flavour not found") + return (None, "No manifest could be found") version, vercode, package = common.parse_androidmanifest(path) if not package: diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 6b06871c..ebaf6d77 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -875,26 +875,26 @@ def retrieve_string(app_dir, string_id): return s.replace("\\'","'") return '' -# Find the AM.xml - try the new gradle method first. -def manifest_path(app_dir, flavour, gradle, build_tools, gradle_plugin): +# Find the AM.xml - try to use new gradle manifest paths +# TODO: Gradle can use multiple manifests. Return a list of the existing ones +# and later iterate through them to find the highest vercode. +def manifest_path(app_dir, flavour): - if flavour is None: - return os.path.join(app_dir, 'AndroidManifest.xml') + root_manifest = os.path.join(app_dir, 'AndroidManifest.xml') + if flavour is not None: + flavour_manifest = os.path.join(app_dir, 'src', flavour, 'AndroidManifest.xml') + if os.path.isfile(flavour_manifest): + return flavour_manifest - if not os.path.exists(os.path.join(app_dir, 'src', flavour)): - return None + main_manifest = os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml') + print main_manifest + if os.path.isfile(main_manifest): + return main_manifest - for line in fileinput.input(os.path.join(app_dir, 'build.gradle'), inplace=True): - if 'buildToolsVersion' in line: - print 'buildToolsVersion "%s"' % build_tools, - elif 'com.android.tools.build:gradle:' in line: - print "classpath 'com.android.tools.build:gradle:%s'" % gradle_plugin, - else: - print line, + if os.path.isfile(root_manifest): + return root_manifest - subprocess.Popen([gradle, 'process'+flavour+'ReleaseManifest'], cwd=app_dir).communicate() - - return os.path.join(app_dir, 'build', 'manifests', flavour, 'release', 'AndroidManifest.xml') + return None # Retrieve the package name