コード例 #1
0
def create_framework(
    args, dst, framework, arm64_framework, simulator_framework,
    simulator_x64_framework, simulator_arm64_framework
):
  arm64_dylib = os.path.join(arm64_framework, 'Flutter')
  simulator_x64_dylib = os.path.join(simulator_x64_framework, 'Flutter')
  simulator_arm64_dylib = os.path.join(simulator_arm64_framework, 'Flutter')
  if not os.path.isfile(arm64_dylib):
    print('Cannot find iOS arm64 dylib at %s' % arm64_dylib)
    return 1

  if not os.path.isfile(simulator_x64_dylib):
    print('Cannot find iOS simulator dylib at %s' % simulator_dylib)
    return 1

  shutil.rmtree(framework, True)
  shutil.copytree(arm64_framework, framework)
  framework_binary = os.path.join(framework, 'Flutter')

  if args.simulator_arm64_out_dir is not None:
    shutil.rmtree(simulator_framework, True)
    shutil.copytree(simulator_arm64_framework, simulator_framework)

    simulator_framework_binary = os.path.join(simulator_framework, 'Flutter')

    # Create the arm64/x64 simulator fat framework.
    subprocess.check_call([
        'lipo', simulator_x64_dylib, simulator_arm64_dylib, '-create',
        '-output', simulator_framework_binary
    ])
    process_framework(
        args, dst, simulator_framework, simulator_framework_binary
    )
    simulator_framework = simulator_framework
  else:
    simulator_framework = simulator_x64_framework

  # Create XCFramework from the arm-only fat framework and the arm64/x64 simulator frameworks, or just the
  # x64 simulator framework if only that one exists.
  xcframeworks = [simulator_framework, framework]
  create_xcframework(location=dst, name='Flutter', frameworks=xcframeworks)

  # Add the x64 simulator into the fat framework
  subprocess.check_call([
      'lipo', arm64_dylib, simulator_x64_dylib, '-create', '-output',
      framework_binary
  ])
コード例 #2
0
ファイル: create_ios_framework.py プロジェクト: stayf/engine
def main():
  parser = argparse.ArgumentParser(description='Creates Flutter.framework and Flutter.xcframework')

  parser.add_argument('--dst', type=str, required=True)
  parser.add_argument('--arm64-out-dir', type=str, required=True)
  parser.add_argument('--armv7-out-dir', type=str, required=False)
  # TODO(gw280): Remove --simulator-out-dir alias when all recipes are updated
  parser.add_argument('--simulator-x64-out-dir', '--simulator-out-dir', type=str, required=True)
  parser.add_argument('--simulator-arm64-out-dir', type=str, required=False)
  parser.add_argument('--strip', action="store_true", default=False)
  parser.add_argument('--dsym', action="store_true", default=False)
  parser.add_argument('--strip-bitcode', dest='strip_bitcode', action="store_true", default=False)

  args = parser.parse_args()

  framework = os.path.join(args.dst, 'Flutter.framework')
  simulator_framework = os.path.join(args.dst, 'sim', 'Flutter.framework')
  arm64_framework = os.path.join(args.arm64_out_dir, 'Flutter.framework')
  simulator_x64_framework = os.path.join(args.simulator_x64_out_dir, 'Flutter.framework')
  if args.simulator_arm64_out_dir is not None:
    simulator_arm64_framework = os.path.join(args.simulator_arm64_out_dir, 'Flutter.framework')
    simulator_arm64_dylib = os.path.join(simulator_arm64_framework, 'Flutter')

  arm64_dylib = os.path.join(arm64_framework, 'Flutter')
  simulator_x64_dylib = os.path.join(simulator_x64_framework, 'Flutter')

  if not os.path.isdir(arm64_framework):
    print('Cannot find iOS arm64 Framework at %s' % arm64_framework)
    return 1

  if not os.path.isdir(simulator_x64_framework):
    print('Cannot find iOS x64 simulator Framework at %s' % simulator_framework)
    return 1

  if not os.path.isfile(arm64_dylib):
    print('Cannot find iOS arm64 dylib at %s' % arm64_dylib)
    return 1

  if not os.path.isfile(simulator_x64_dylib):
    print('Cannot find iOS simulator dylib at %s' % simulator_dylib)
    return 1

  if not os.path.isfile(DSYMUTIL):
    print('Cannot find dsymutil at %s' % DSYMUTIL)
    return 1

  shutil.rmtree(framework, True)
  shutil.copytree(arm64_framework, framework)
  framework_binary = os.path.join(framework, 'Flutter')
  process_framework(args, framework, framework_binary)

  if args.simulator_arm64_out_dir is not None:
    shutil.rmtree(simulator_framework, True)
    shutil.copytree(simulator_arm64_framework, simulator_framework)

    simulator_framework_binary = os.path.join(simulator_framework, 'Flutter')

    # Create the arm64/x64 simulator fat framework.
    subprocess.check_call([
      'lipo',
      simulator_x64_dylib,
      simulator_arm64_dylib,
      '-create',
      '-output',
      simulator_framework_binary
    ])
    process_framework(args, simulator_framework, simulator_framework_binary)
    simulator_framework = simulator_framework
  else:
    simulator_framework = simulator_x64_framework

  # Create XCFramework from the arm-only fat framework and the arm64/x64 simulator frameworks, or just the
  # x64 simulator framework if only that one exists.
  xcframeworks = [simulator_framework, framework]
  create_xcframework(location=args.dst, name='Flutter', frameworks=xcframeworks)

  # Add the x64 simulator into the fat framework
  subprocess.check_call([
    'lipo',
    arm64_dylib,
    simulator_x64_dylib,
    '-create',
    '-output',
    framework_binary
  ])

  process_framework(args, framework, framework_binary)
コード例 #3
0
def main():
  parser = argparse.ArgumentParser(description='Creates Flutter.framework and Flutter.xcframework')

  parser.add_argument('--dst', type=str, required=True)
  parser.add_argument('--arm64-out-dir', type=str, required=True)
  parser.add_argument('--armv7-out-dir', type=str, required=True)
  parser.add_argument('--simulator-out-dir', type=str, required=True)
  parser.add_argument('--strip', action="store_true", default=False)
  parser.add_argument('--dsym', action="store_true", default=False)
  parser.add_argument('--strip-bitcode', dest='strip_bitcode', action="store_true", default=False)

  args = parser.parse_args()

  fat_framework = os.path.join(args.dst, 'Flutter.framework')
  arm64_framework = os.path.join(args.arm64_out_dir, 'Flutter.framework')
  armv7_framework = os.path.join(args.armv7_out_dir, 'Flutter.framework')
  simulator_framework = os.path.join(args.simulator_out_dir, 'Flutter.framework')

  arm64_dylib = os.path.join(arm64_framework, 'Flutter')
  armv7_dylib = os.path.join(armv7_framework, 'Flutter')
  simulator_dylib = os.path.join(simulator_framework, 'Flutter')

  if not os.path.isdir(arm64_framework):
    print('Cannot find iOS arm64 Framework at %s' % arm64_framework)
    return 1

  if not os.path.isdir(armv7_framework):
    print('Cannot find iOS armv7 Framework at %s' % armv7_framework)
    return 1

  if not os.path.isdir(simulator_framework):
    print('Cannot find iOS simulator Framework at %s' % simulator_framework)
    return 1

  if not os.path.isfile(arm64_dylib):
    print('Cannot find iOS arm64 dylib at %s' % arm64_dylib)
    return 1

  if not os.path.isfile(armv7_dylib):
    print('Cannot find iOS armv7 dylib at %s' % armv7_dylib)
    return 1

  if not os.path.isfile(simulator_dylib):
    print('Cannot find iOS simulator dylib at %s' % simulator_dylib)
    return 1

  if not os.path.isfile(DSYMUTIL):
    print('Cannot find dsymutil at %s' % DSYMUTIL)
    return 1

  shutil.rmtree(fat_framework, True)
  shutil.copytree(arm64_framework, fat_framework)

  fat_framework_binary = os.path.join(fat_framework, 'Flutter')

  # Create the arm-only fat framework.
  subprocess.check_call([
    'lipo',
    arm64_dylib,
    armv7_dylib,
    '-create',
    '-output',
    fat_framework_binary
  ])
  process_framework(args, fat_framework, fat_framework_binary)

  # Create XCFramework from the arm-only fat framework and the simulator framework.
  xcframeworks = [simulator_framework, fat_framework]
  create_xcframework(location=args.dst, name='Flutter', frameworks=xcframeworks)

  # Add the simulator into the fat framework.
  subprocess.check_call([
    'lipo',
    arm64_dylib,
    armv7_dylib,
    simulator_dylib,
    '-create',
    '-output',
    fat_framework_binary
  ])
  process_framework(args, fat_framework, fat_framework_binary)