| Index: build/android/gyp/apkbuilder.py
|
| diff --git a/build/android/gyp/apkbuilder.py b/build/android/gyp/apkbuilder.py
|
| index 460d15769997a673b4451ed1907831730b0c0d8b..9e6b934cac228163543f8b07d0cf1fa7fdb40c6d 100755
|
| --- a/build/android/gyp/apkbuilder.py
|
| +++ b/build/android/gyp/apkbuilder.py
|
| @@ -85,7 +85,29 @@ def _SplitAssetPath(path):
|
| return src_path, dest_path
|
|
|
|
|
| -def _AddAssets(apk, paths, disable_compression=False):
|
| +def _ExpandPaths(paths):
|
| + """Converts src:dst into tuples and enumerates files within directories.
|
| +
|
| + Args:
|
| + paths: Paths in the form "src_path:dest_path"
|
| +
|
| + Returns:
|
| + A list of (src_path, dest_path) tuples sorted by dest_path (for stable
|
| + ordering within output .apk).
|
| + """
|
| + ret = []
|
| + for path in paths:
|
| + src_path, dest_path = _SplitAssetPath(path)
|
| + if os.path.isdir(src_path):
|
| + for f in build_utils.FindInDirectory(src_path, '*'):
|
| + ret.append((f, os.path.join(dest_path, f[len(src_path) + 1:])))
|
| + else:
|
| + ret.append((src_path, dest_path))
|
| + ret.sort(key=lambda t:t[1])
|
| + return ret
|
| +
|
| +
|
| +def _AddAssets(apk, path_tuples, disable_compression=False):
|
| """Adds the given paths to the apk.
|
|
|
| Args:
|
| @@ -96,8 +118,7 @@ def _AddAssets(apk, paths, disable_compression=False):
|
| # Group all uncompressed assets together in the hope that it will increase
|
| # locality of mmap'ed files.
|
| for target_compress in (False, True):
|
| - for path in paths:
|
| - src_path, dest_path = _SplitAssetPath(path)
|
| + for src_path, dest_path in path_tuples:
|
|
|
| compress = not disable_compression and (
|
| os.path.splitext(src_path)[1] not in _NO_COMPRESS_EXTENSIONS)
|
| @@ -113,9 +134,10 @@ def _AddAssets(apk, paths, disable_compression=False):
|
| compress=compress)
|
|
|
|
|
| -def _CreateAssetsList(paths):
|
| +def _CreateAssetsList(path_tuples):
|
| """Returns a newline-separated list of asset paths for the given paths."""
|
| - return '\n'.join(_SplitAssetPath(p)[1] for p in sorted(paths)) + '\n'
|
| + dests = sorted(t[1] for t in path_tuples)
|
| + return '\n'.join(dests) + '\n'
|
|
|
|
|
| def main(args):
|
| @@ -133,8 +155,10 @@ def main(args):
|
|
|
| input_strings = [options.android_abi, options.native_lib_placeholders]
|
|
|
| - for path in itertools.chain(options.assets, options.uncompressed_assets):
|
| - src_path, dest_path = _SplitAssetPath(path)
|
| + _assets = _ExpandPaths(options.assets)
|
| + _uncompressed_assets = _ExpandPaths(options.uncompressed_assets)
|
| +
|
| + for src_path, dest_path in itertools.chain(_assets, _uncompressed_assets):
|
| input_paths.append(src_path)
|
| input_strings.append(dest_path)
|
|
|
| @@ -163,12 +187,11 @@ def main(args):
|
| # 2. Assets
|
| if options.write_asset_list:
|
| data = _CreateAssetsList(
|
| - itertools.chain(options.assets, options.uncompressed_assets))
|
| + itertools.chain(_assets, _uncompressed_assets))
|
| build_utils.AddToZipHermetic(out_apk, 'assets/assets_list', data=data)
|
|
|
| - _AddAssets(out_apk, options.assets, disable_compression=False)
|
| - _AddAssets(out_apk, options.uncompressed_assets,
|
| - disable_compression=True)
|
| + _AddAssets(out_apk, _assets, disable_compression=False)
|
| + _AddAssets(out_apk, _uncompressed_assets, disable_compression=True)
|
|
|
| # 3. Resources
|
| for info in resource_infos[1:]:
|
|
|