diff options
Diffstat (limited to 'build/android/gyp/apkbuilder.py')
-rwxr-xr-x | build/android/gyp/apkbuilder.py | 64 |
1 files changed, 51 insertions, 13 deletions
diff --git a/build/android/gyp/apkbuilder.py b/build/android/gyp/apkbuilder.py index 3661913..ef5f2cf 100755 --- a/build/android/gyp/apkbuilder.py +++ b/build/android/gyp/apkbuilder.py @@ -50,8 +50,16 @@ def _ParseArgs(args): help='GYP-list of native libraries to include. ' 'Can be specified multiple times.', default=[]) + parser.add_argument('--secondary-native-libs', + action='append', + help='GYP-list of native libraries for secondary ' + 'android-abi. Can be specified multiple times.', + default=[]) parser.add_argument('--android-abi', help='Android architecture to use for native libraries') + parser.add_argument('--secondary-android-abi', + help='The secondary Android architecture to use for' + 'secondary native libraries') parser.add_argument('--native-lib-placeholders', help='GYP-list of native library placeholders to add.', default='[]') @@ -70,10 +78,18 @@ def _ParseArgs(args): for gyp_list in options.native_libs: all_libs.extend(build_utils.ParseGypList(gyp_list)) options.native_libs = all_libs + secondary_libs = [] + for gyp_list in options.secondary_native_libs: + secondary_libs.extend(build_utils.ParseGypList(gyp_list)) + options.secondary_native_libs = secondary_libs + if not options.android_abi and (options.native_libs or options.native_lib_placeholders): raise Exception('Must specify --android-abi with --native-libs') + if not options.secondary_android_abi and options.secondary_native_libs: + raise Exception('Must specify --secondary-android-abi with' + ' --secondary-native-libs') return options @@ -143,6 +159,22 @@ def _CreateAssetsList(path_tuples): return '\n'.join(dests) + '\n' +def _AddNativeLibraries(out_apk, native_libs, android_abi, uncompress): + """Add native libraries to APK.""" + for path in native_libs: + basename = os.path.basename(path) + apk_path = 'lib/%s/%s' % (android_abi, basename) + + compress = None + if (uncompress and os.path.splitext(basename)[1] == '.so'): + compress = False + + build_utils.AddToZipHermetic(out_apk, + apk_path, + src_path=path, + compress=compress) + + def main(args): args = build_utils.ExpandFileArgs(args) options = _ParseArgs(args) @@ -150,6 +182,12 @@ def main(args): native_libs = sorted(options.native_libs) input_paths = [options.resource_apk, __file__] + native_libs + + secondary_native_libs = [] + if options.secondary_native_libs: + secondary_native_libs = sorted(options.secondary_native_libs) + input_paths += secondary_native_libs + if options.dex_file: input_paths.append(options.dex_file) @@ -160,6 +198,9 @@ def main(args): options.native_lib_placeholders, options.uncompress_shared_libraries] + if options.secondary_android_abi: + input_strings.append(options.secondary_android_abi) + _assets = _ExpandPaths(options.assets) _uncompressed_assets = _ExpandPaths(options.uncompressed_assets) @@ -208,19 +249,16 @@ def main(args): src_path=options.dex_file) # 4. Native libraries. - for path in native_libs: - basename = os.path.basename(path) - apk_path = 'lib/%s/%s' % (options.android_abi, basename) - - compress = None - if (options.uncompress_shared_libraries and - os.path.splitext(basename)[1] == '.so'): - compress = False - - build_utils.AddToZipHermetic(out_apk, - apk_path, - src_path=path, - compress=compress) + _AddNativeLibraries(out_apk, + native_libs, + options.android_abi, + options.uncompress_shared_libraries) + + if options.secondary_android_abi: + _AddNativeLibraries(out_apk, + secondary_native_libs, + options.secondary_android_abi, + options.uncompress_shared_libraries) for name in sorted(options.native_lib_placeholders): # Empty libs files are ignored by md5check, but rezip requires them |