All Projects → darrarski → xcframework-maker

darrarski / xcframework-maker

Licence: MIT License
macOS utility for converting fat-frameworks to SPM-compatible XCFramework with arm64-simulator support

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to xcframework-maker

FitDataProtocol
Swift Implementation the Garmin Flexible and Interoperable Data Transfer Protocol.
Stars: ✭ 32 (-86.61%)
Mutual labels:  swift-package-manager, spm
YMFF
Feature management made easy.
Stars: ✭ 26 (-89.12%)
Mutual labels:  swift-package-manager, spm
PagedLists
Paginated UITableView and UICollectionViews for iOS.
Stars: ✭ 69 (-71.13%)
Mutual labels:  swift-package-manager, spm
Match3Kit
Library for simple Match3 games.
Stars: ✭ 38 (-84.1%)
Mutual labels:  swift-package-manager, spm
SwiftGradients
Useful extensions for UIViews and CALayer classes to add beautiful color gradients.
Stars: ✭ 15 (-93.72%)
Mutual labels:  swift-package-manager, spm
SwiftZip
Swift wrapper for libzip — library for reading, creating, and modifying zip archives.
Stars: ✭ 44 (-81.59%)
Mutual labels:  swift-package-manager, spm
danger-swift-xcodesummary
A Danger-Swift plugin that adds build errors, warnings and unit tests results generated from xcodebuild to your Danger report
Stars: ✭ 72 (-69.87%)
Mutual labels:  swift-package-manager, spm
SupportEmail
Pre-populates emails with support information in iOS/iPadOS apps
Stars: ✭ 20 (-91.63%)
Mutual labels:  swift-package-manager, spm
SwiftSimctl
Swift client-server tool to call xcrun simctl from your simulator. Automate push notification testing!
Stars: ✭ 50 (-79.08%)
Mutual labels:  swift-package-manager, spm
ecs
A dependency free, lightweight, fast Entity-Component System (ECS) implementation in Swift
Stars: ✭ 79 (-66.95%)
Mutual labels:  swift-package-manager, spm
SwiftDown
📦 A themable markdown editor component for your SwiftUI apps.
Stars: ✭ 203 (-15.06%)
Mutual labels:  swift-package-manager, spm
column-text-view-ui
📄 Column Text View is an adaptive UI component that renders text in columns, horizontally [iOS 12, UIKit, TextKit, SwiftUI].
Stars: ✭ 11 (-95.4%)
Mutual labels:  swift-package-manager, spm
Table
CLI tables in Swift
Stars: ✭ 53 (-77.82%)
Mutual labels:  swift-package-manager, spm
concurrency-kit
🚄 Concurrency abstractions framework for Apple Platforms [Task, Atomic, Lock, Operation, etc.].
Stars: ✭ 17 (-92.89%)
Mutual labels:  swift-package-manager, spm
CSV
A simple CSV file parser and serializer
Stars: ✭ 31 (-87.03%)
Mutual labels:  swift-package-manager, spm
ecs-demo
Minimal demo App for the Fireblade Entity-Component System (ECS)
Stars: ✭ 20 (-91.63%)
Mutual labels:  swift-package-manager, spm
extensions-kit
📦 Collection of Swift+Apple Frameworks extensions for speeding up software development [iOS & iPadOS].
Stars: ✭ 71 (-70.29%)
Mutual labels:  swift-package-manager, spm
swift-watch
Watches over your Swift project's source
Stars: ✭ 43 (-82.01%)
Mutual labels:  swift-package-manager, spm
MMActionSheet
An actionSheet view implement with pure swift
Stars: ✭ 25 (-89.54%)
Mutual labels:  swift-package-manager, spm
Ether
A Command-Line Interface for the Swift Package Manager
Stars: ✭ 86 (-64.02%)
Mutual labels:  swift-package-manager, spm

xcframework-maker

swift 5.4 platform macOS SPM supported

macOS utility for converting fat-frameworks to SPM-compatible XCFramework with arm64-simulator support.

📝 Description

make-xcframework is a simple command-line utility written in Swift that creates XCFramework file from fat framework files. The resulting XCFramework file can be added as a dependency to your Swift Package, using .binaryTarget (read more in official documentation).

Optionally, arm64-simulator support can be included in the resulting XCFramework to allow development on a computer with Apple Silicon (M1) processor without a need to run Xcode through Rosetta.

The xcframework-maker Swift Package contains make-xcframework that can be used from the command line and XCFrameworkMaker library that you can integrate with your Swift Package and use programmatically.

Note: arm64-to-sim is used to "hack" the native (device) arm64 architecture slice so it can be used in a simulator running on Apple Silicon. This is an experimental feature, and it can fail for many reasons. It was tested and proved to be working with the GoogleInteractiveMediaAds dynamic fat framework, but your experience may vary.

🛠 Build

Use Swift 5.4 for building the utility on macOS:

swift build -c release

You can copy the executable or run it directly from the build directory:

.build/release/make-xcframework

▶️ Usage

OVERVIEW: Utility for creating XCFramework from legacy fat-framework files.

Use this tool to create XCFramework from legacy fat-framework files. Resulting XCFramework can be
added as a dependency to your Swift Package. Optionally arm64-simulator support can be included in
the resulting XCFramework, so it can be used on M1 Mac without the need to run Xcode through
Rosetta.

USAGE: make-xcframework [-ios <path>] [-tvos <path>] [-arm64sim] -output <path> [-verbose]

OPTIONS:
  -ios <path>             iOS input framework path.
        Provide a path to the iOS fat framework that should be included in the resulting
        XCFramework. Eg "path/to/iOS/Framework.framework"
  -tvos <path>            tvOS input framework path.
        Provide a path to the tvOS fat framework that should be included in the resulting
        XCFramework. Eg "path/to/tvOS/Framework.framework"
  -arm64sim               Add support for arm64 simulator.
        Use device-arm64 architecture slice as a simulator-arm64 architecture slice and include it
        the resulting XCFramework. This makes development possible on M1 Mac without using Rosetta.
  -output <path>          Output directory path.
        Provide a path to a directory where the resulting XCFramework should be created. Eg
        "path/to/output/directory"
  -verbose                Log detailed info to standard output.
        When this flag is provided, detailed information about each performed action is logged to
        standard output.
  -help, -h               Show help information.

Example - GoogleInteractiveMediaAds

  1. Download GoogleInteractiveMediaAds fat-frameworks from Google website:

  2. Unzip downloaded files.

  3. Run make-xcframework:

    make-xcframework \
      -ios path/to/ios/GoogleInteractiveMediaAds.framework \
      -tvos path/to/tvos/GoogleInteractiveMediaAds.framework \
      -arm64sim \
      -output output/path
  4. Resulting XCFramework will be created in the provided output directory:

    output/path/GoogleInteractiveMediaAds.xcframework

☕️ Do you like the project?

Buy Me A Coffee

📄 License

Copyright © 2021 Dariusz Rybicki Darrarski

License: MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].