from util import build_utils
+
def ParseArgs(args):
"""Parses command line options.
# affect how the code in this .apk target could refer to the resources.
+def FilterCrunchStderr(stderr):
+ """Filters out lines from aapt crunch's stderr that can safely be ignored."""
+ filtered_lines = []
+ for line in stderr.splitlines(True):
+ # Ignore this libpng warning, which is a known non-error condition.
+ # http://crbug.com/364355
+ if ('libpng warning: iCCP: Not recognizing known sRGB profile that has '
+ + 'been edited' in line):
+ continue
+ filtered_lines.append(line)
+ return ''.join(filtered_lines)
+
+
def DidCrunchFail(returncode, stderr):
"""Determines whether aapt crunch failed from its return code and output.
Because aapt's return code cannot be trusted, any output to stderr is
- an indication that aapt has failed (http://crbug.com/314885), except
- lines that contain "libpng warning", which is a known non-error condition
- (http://crbug.com/364355).
+ an indication that aapt has failed (http://crbug.com/314885).
"""
- if returncode != 0:
- return True
- for line in stderr.splitlines():
- if line and not 'libpng warning' in line:
- return True
- return False
+ return returncode != 0 or stderr
def ZipResources(resource_dirs, zip_path):
'--auto-add-overlay',
'-I', android_jar,
'--output-text-symbols', gen_dir,
- '-J', gen_dir]
+ '-J', gen_dir,
+ '--ignore-assets', build_utils.AAPT_IGNORE_PATTERN]
for d in input_resource_dirs:
package_command += ['-S', d]
aapt_cmd = [aapt,
'crunch',
'-C', crunch_dir,
- '-S', d]
- build_utils.CheckOutput(aapt_cmd, fail_func=DidCrunchFail)
+ '-S', d,
+ '--ignore-assets', build_utils.AAPT_IGNORE_PATTERN]
+ build_utils.CheckOutput(aapt_cmd, stderr_filter=FilterCrunchStderr,
+ fail_func=DidCrunchFail)
ZipResources(zip_resource_dirs, options.resource_zip_out)