diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 57cce69..0000000 --- a/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -language: ruby -rvm: - - 2.2 - -script: - - yes | ./configure \ No newline at end of file diff --git a/Recipe.md b/Recipe.md index b307602..2450538 100644 --- a/Recipe.md +++ b/Recipe.md @@ -37,7 +37,7 @@ Some variables have spaces in them. That is intentional because Xcode only uses Complete all these instructions on the same calendar day. -Use Xcode Version 15.2 (15C500b). *This is the latest publicly released or Gold Master version.* +Use Xcode Version 15.3 (15E204a). *This is the latest publicly released or Gold Master version.* A previous version of this recipe is also demonstrated in a YouTube flyover at https://youtu.be/ksYXtNn8lhE (15 minutes). @@ -110,11 +110,20 @@ A previous version of this recipe is also demonstrated in a YouTube flyover at h ### VI. Make your Example application depend on your module -1. Open Example.xcodeproj in Xcode -2. In Xcode, choose File > Add Package Dependencies... +1. Using Finder, move the Example folder onto your desktop + 1. :information_source: This is a workaround for the Xcode error "The selected package cannot be a direct ancestor of the project." that started from Xcode version 15.3. + +2. Open Example.xcodeproj in Xcode +3. In Xcode, choose File > Add Package Dependencies... 1. Click "Add Local..." 2. Select the `xxPROJECTxNAMExx` folder on your desktop 3. Click "Add Package" +4. Quit Xcode (workaround) +5. Using Finder, move the Example folder back into the `xxPROJECTxNAMExx` folder (workaround) +6. Use VS Code or similar text editor to manually set the directory path (workaround) + 1. Open the Example folder + 2. Find and replace all `../xxPROJECTxNAMExx` to `..` + ### VII. Add additional project management files to the module @@ -132,6 +141,7 @@ A previous version of this recipe is also demonstrated in a YouTube flyover at h curl 'https://raw.githubusercontent.com/fulldecent/swift5-module-template/main/xxPROJECTxNAMExx/CHANGELOG.md' -o CHANGELOG.md curl 'https://raw.githubusercontent.com/fulldecent/swift5-module-template/main/xxPROJECTxNAMExx/CONTRIBUTING.md' -o CONTRIBUTING.md ``` + ### VIII. Remove identifying parts of your project *This step allows everybody to achieve byte-for-byte consistency with [the published Swift 5 Module Template](https://github.com/fulldecent/swift5-module-template/tree/main/xxPROJECTxNAMExx) but otherwise provides no value to you.* diff --git a/xxPROJECTxNAMExx/Example/Example.xcodeproj/project.pbxproj b/xxPROJECTxNAMExx/Example/Example.xcodeproj/project.pbxproj index d39e880..1dd17bf 100644 --- a/xxPROJECTxNAMExx/Example/Example.xcodeproj/project.pbxproj +++ b/xxPROJECTxNAMExx/Example/Example.xcodeproj/project.pbxproj @@ -7,64 +7,64 @@ objects = { /* Begin PBXBuildFile section */ - D99451BA2B93BE8E00FCB5C7 /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = D99451B92B93BE8E00FCB5C7 /* ExampleApp.swift */; }; - D99451BC2B93BE8E00FCB5C7 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D99451BB2B93BE8E00FCB5C7 /* ContentView.swift */; }; - D99451BE2B93BE8F00FCB5C7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D99451BD2B93BE8F00FCB5C7 /* Assets.xcassets */; }; - D99451C12B93BE8F00FCB5C7 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D99451C02B93BE8F00FCB5C7 /* Preview Assets.xcassets */; }; - D99451C92B93C49800FCB5C7 /* xxPROJECTxNAMExx in Frameworks */ = {isa = PBXBuildFile; productRef = D99451C82B93C49800FCB5C7 /* xxPROJECTxNAMExx */; }; + D9004FD22BB384700060A00E /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9004FD12BB384700060A00E /* ExampleApp.swift */; }; + D9004FD42BB384700060A00E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9004FD32BB384700060A00E /* ContentView.swift */; }; + D9004FD62BB384710060A00E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D9004FD52BB384710060A00E /* Assets.xcassets */; }; + D9004FD92BB384710060A00E /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D9004FD82BB384710060A00E /* Preview Assets.xcassets */; }; + D939A6442BB385BC0049FE92 /* xxPROJECTxNAMExx in Frameworks */ = {isa = PBXBuildFile; productRef = D939A6432BB385BC0049FE92 /* xxPROJECTxNAMExx */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - D99451B62B93BE8E00FCB5C7 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D99451B92B93BE8E00FCB5C7 /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; - D99451BB2B93BE8E00FCB5C7 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; - D99451BD2B93BE8F00FCB5C7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - D99451C02B93BE8F00FCB5C7 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + D9004FCE2BB384700060A00E /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D9004FD12BB384700060A00E /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; + D9004FD32BB384700060A00E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + D9004FD52BB384710060A00E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + D9004FD82BB384710060A00E /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - D99451B32B93BE8E00FCB5C7 /* Frameworks */ = { + D9004FCB2BB384700060A00E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D99451C92B93C49800FCB5C7 /* xxPROJECTxNAMExx in Frameworks */, + D939A6442BB385BC0049FE92 /* xxPROJECTxNAMExx in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - D99451AD2B93BE8E00FCB5C7 = { + D9004FC52BB384700060A00E = { isa = PBXGroup; children = ( - D99451B82B93BE8E00FCB5C7 /* Sources */, - D99451B72B93BE8E00FCB5C7 /* Products */, + D9004FD02BB384700060A00E /* Sources */, + D9004FCF2BB384700060A00E /* Products */, ); sourceTree = ""; }; - D99451B72B93BE8E00FCB5C7 /* Products */ = { + D9004FCF2BB384700060A00E /* Products */ = { isa = PBXGroup; children = ( - D99451B62B93BE8E00FCB5C7 /* Example.app */, + D9004FCE2BB384700060A00E /* Example.app */, ); name = Products; sourceTree = ""; }; - D99451B82B93BE8E00FCB5C7 /* Sources */ = { + D9004FD02BB384700060A00E /* Sources */ = { isa = PBXGroup; children = ( - D99451B92B93BE8E00FCB5C7 /* ExampleApp.swift */, - D99451BB2B93BE8E00FCB5C7 /* ContentView.swift */, - D99451BD2B93BE8F00FCB5C7 /* Assets.xcassets */, - D99451BF2B93BE8F00FCB5C7 /* Preview Content */, + D9004FD12BB384700060A00E /* ExampleApp.swift */, + D9004FD32BB384700060A00E /* ContentView.swift */, + D9004FD52BB384710060A00E /* Assets.xcassets */, + D9004FD72BB384710060A00E /* Preview Content */, ); path = Sources; sourceTree = ""; }; - D99451BF2B93BE8F00FCB5C7 /* Preview Content */ = { + D9004FD72BB384710060A00E /* Preview Content */ = { isa = PBXGroup; children = ( - D99451C02B93BE8F00FCB5C7 /* Preview Assets.xcassets */, + D9004FD82BB384710060A00E /* Preview Assets.xcassets */, ); path = "Preview Content"; sourceTree = ""; @@ -72,13 +72,13 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - D99451B52B93BE8E00FCB5C7 /* Example */ = { + D9004FCD2BB384700060A00E /* Example */ = { isa = PBXNativeTarget; - buildConfigurationList = D99451C42B93BE8F00FCB5C7 /* Build configuration list for PBXNativeTarget "Example" */; + buildConfigurationList = D9004FDC2BB384710060A00E /* Build configuration list for PBXNativeTarget "Example" */; buildPhases = ( - D99451B22B93BE8E00FCB5C7 /* Sources */, - D99451B32B93BE8E00FCB5C7 /* Frameworks */, - D99451B42B93BE8E00FCB5C7 /* Resources */, + D9004FCA2BB384700060A00E /* Sources */, + D9004FCB2BB384700060A00E /* Frameworks */, + D9004FCC2BB384700060A00E /* Resources */, ); buildRules = ( ); @@ -86,28 +86,28 @@ ); name = Example; packageProductDependencies = ( - D99451C82B93C49800FCB5C7 /* xxPROJECTxNAMExx */, + D939A6432BB385BC0049FE92 /* xxPROJECTxNAMExx */, ); productName = Example; - productReference = D99451B62B93BE8E00FCB5C7 /* Example.app */; + productReference = D9004FCE2BB384700060A00E /* Example.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D99451AE2B93BE8E00FCB5C7 /* Project object */ = { + D9004FC62BB384700060A00E /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1520; - LastUpgradeCheck = 1520; + LastSwiftUpdateCheck = 1530; + LastUpgradeCheck = 1530; TargetAttributes = { - D99451B52B93BE8E00FCB5C7 = { - CreatedOnToolsVersion = 15.2; + D9004FCD2BB384700060A00E = { + CreatedOnToolsVersion = 15.3; }; }; }; - buildConfigurationList = D99451B12B93BE8E00FCB5C7 /* Build configuration list for PBXProject "Example" */; + buildConfigurationList = D9004FC92BB384700060A00E /* Build configuration list for PBXProject "Example" */; compatibilityVersion = "Xcode 14.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -115,45 +115,45 @@ en, Base, ); - mainGroup = D99451AD2B93BE8E00FCB5C7; + mainGroup = D9004FC52BB384700060A00E; packageReferences = ( - D99451C72B93C49800FCB5C7 /* XCLocalSwiftPackageReference ".." */, + D939A6422BB385BC0049FE92 /* XCLocalSwiftPackageReference ".." */, ); - productRefGroup = D99451B72B93BE8E00FCB5C7 /* Products */; + productRefGroup = D9004FCF2BB384700060A00E /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - D99451B52B93BE8E00FCB5C7 /* Example */, + D9004FCD2BB384700060A00E /* Example */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - D99451B42B93BE8E00FCB5C7 /* Resources */ = { + D9004FCC2BB384700060A00E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D99451C12B93BE8F00FCB5C7 /* Preview Assets.xcassets in Resources */, - D99451BE2B93BE8F00FCB5C7 /* Assets.xcassets in Resources */, + D9004FD92BB384710060A00E /* Preview Assets.xcassets in Resources */, + D9004FD62BB384710060A00E /* Assets.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - D99451B22B93BE8E00FCB5C7 /* Sources */ = { + D9004FCA2BB384700060A00E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - D99451BC2B93BE8E00FCB5C7 /* ContentView.swift in Sources */, - D99451BA2B93BE8E00FCB5C7 /* ExampleApp.swift in Sources */, + D9004FD42BB384700060A00E /* ContentView.swift in Sources */, + D9004FD22BB384700060A00E /* ExampleApp.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - D99451C22B93BE8F00FCB5C7 /* Debug */ = { + D9004FDA2BB384710060A00E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -205,7 +205,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.2; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -216,7 +216,7 @@ }; name = Debug; }; - D99451C32B93BE8F00FCB5C7 /* Release */ = { + D9004FDB2BB384710060A00E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -262,7 +262,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 17.2; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -272,7 +272,7 @@ }; name = Release; }; - D99451C52B93BE8F00FCB5C7 /* Debug */ = { + D9004FDD2BB384710060A00E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -300,7 +300,7 @@ }; name = Debug; }; - D99451C62B93BE8F00FCB5C7 /* Release */ = { + D9004FDE2BB384710060A00E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -331,20 +331,20 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - D99451B12B93BE8E00FCB5C7 /* Build configuration list for PBXProject "Example" */ = { + D9004FC92BB384700060A00E /* Build configuration list for PBXProject "Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - D99451C22B93BE8F00FCB5C7 /* Debug */, - D99451C32B93BE8F00FCB5C7 /* Release */, + D9004FDA2BB384710060A00E /* Debug */, + D9004FDB2BB384710060A00E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D99451C42B93BE8F00FCB5C7 /* Build configuration list for PBXNativeTarget "Example" */ = { + D9004FDC2BB384710060A00E /* Build configuration list for PBXNativeTarget "Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - D99451C52B93BE8F00FCB5C7 /* Debug */, - D99451C62B93BE8F00FCB5C7 /* Release */, + D9004FDD2BB384710060A00E /* Debug */, + D9004FDE2BB384710060A00E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -352,18 +352,18 @@ /* End XCConfigurationList section */ /* Begin XCLocalSwiftPackageReference section */ - D99451C72B93C49800FCB5C7 /* XCLocalSwiftPackageReference ".." */ = { + D939A6422BB385BC0049FE92 /* XCLocalSwiftPackageReference ".." */ = { isa = XCLocalSwiftPackageReference; relativePath = ..; }; /* End XCLocalSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - D99451C82B93C49800FCB5C7 /* xxPROJECTxNAMExx */ = { + D939A6432BB385BC0049FE92 /* xxPROJECTxNAMExx */ = { isa = XCSwiftPackageProductDependency; productName = xxPROJECTxNAMExx; }; /* End XCSwiftPackageProductDependency section */ }; - rootObject = D99451AE2B93BE8E00FCB5C7 /* Project object */; + rootObject = D9004FC62BB384700060A00E /* Project object */; } diff --git a/xxPROJECTxNAMExx/Package.swift b/xxPROJECTxNAMExx/Package.swift index 4fb39c1..30130ce 100644 --- a/xxPROJECTxNAMExx/Package.swift +++ b/xxPROJECTxNAMExx/Package.swift @@ -1,14 +1,10 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 5.10 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "xxPROJECTxNAMExx", - platforms: [ - .iOS(.v13), // Specify iOS 13 as the minimum version - // Add any other platforms and versions if needed - ], products: [ // Products define the executables and libraries a package produces, making them visible to other packages. .library( diff --git a/xxPROJECTxNAMExx/Sources/xxPROJECTxNAMExx/ContentView.swift b/xxPROJECTxNAMExx/Sources/xxPROJECTxNAMExx/ContentView.swift deleted file mode 100644 index b104343..0000000 --- a/xxPROJECTxNAMExx/Sources/xxPROJECTxNAMExx/ContentView.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// ContentView.swift -// iOS Example -// -// Created by __AUTHOR NAME__ on __TODAYS_DATE__. -// - -import SwiftUI - -struct SwiftUIxxPROJECTxNAMExx: UIViewRepresentable { - func makeUIView(context: Context) -> UIView { - return xxPROJECTxNAMExx() - } - - func updateUIView(_ uiView: UIView, context: Context) { - } -} - -struct ContentView: View { - var body: some View { - VStack(alignment: .center) { - SwiftUIxxPROJECTxNAMExx() - } - } -} - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -}