mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
56 lines
1.7 KiB
Python
Executable File
56 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# Copyright 2013 The Flutter Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
import errno
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description='Creates an XCFramework consisting of the specified universal frameworks')
|
|
|
|
parser.add_argument('--frameworks',
|
|
nargs='+', help='The framework paths used to create the XCFramework.', required=True)
|
|
parser.add_argument('--name', help='Name of the XCFramework', type=str, required=True)
|
|
parser.add_argument('--location', help='Output directory', type=str, required=True)
|
|
|
|
args = parser.parse_args()
|
|
|
|
create_xcframework(args.location, args.name, args.frameworks)
|
|
|
|
def create_xcframework(location, name, frameworks):
|
|
output_dir = os.path.abspath(location)
|
|
output_xcframework = os.path.join(output_dir, '%s.xcframework' % name)
|
|
|
|
if not os.path.exists(output_dir):
|
|
os.makedirs(output_dir)
|
|
|
|
if os.path.exists(output_xcframework):
|
|
# Remove old xcframework.
|
|
shutil.rmtree(output_xcframework)
|
|
|
|
# xcrun xcodebuild -create-xcframework -framework foo/baz.framework -framework bar/baz.framework -output output/
|
|
command = ['xcrun',
|
|
'xcodebuild',
|
|
'-quiet',
|
|
'-create-xcframework']
|
|
|
|
for framework in frameworks:
|
|
command.extend(['-framework', os.path.abspath(framework)])
|
|
|
|
command.extend(['-output', output_xcframework])
|
|
|
|
subprocess.check_call(command, stdout=open(os.devnull, 'w'))
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|