From 1eec9f9cba86d6f794550f2003f1d905d0c03cd5 Mon Sep 17 00:00:00 2001 From: Veyndan Stuart Date: Mon, 11 Sep 2023 16:11:08 +0200 Subject: [PATCH] Elimate cocoapods usage in samples (#1470) --- .github/workflows/build.yaml | 8 +- .gitignore | 3 - samples/counter/README.md | 4 +- samples/counter/ios-shared/CounterKt.podspec | 45 ----------- samples/counter/ios-shared/build.gradle | 14 ++-- .../CounterApp.xcodeproj/project.pbxproj | 77 ++++++------------- samples/counter/ios-uikit/Podfile | 6 -- samples/counter/ios-uikit/Podfile.lock | 16 ---- samples/emoji-search/README.md | 4 +- .../ios-shared/EmojiSearchKt.podspec | 50 ------------ samples/emoji-search/ios-shared/build.gradle | 14 ++-- .../EmojiSearchApp.xcodeproj/project.pbxproj | 63 +++------------ samples/emoji-search/ios-uikit/Podfile | 6 -- samples/emoji-search/ios-uikit/Podfile.lock | 16 ---- 14 files changed, 51 insertions(+), 275 deletions(-) delete mode 100644 samples/counter/ios-shared/CounterKt.podspec delete mode 100644 samples/counter/ios-uikit/Podfile delete mode 100644 samples/counter/ios-uikit/Podfile.lock delete mode 100644 samples/emoji-search/ios-shared/EmojiSearchKt.podspec delete mode 100644 samples/emoji-search/ios-uikit/Podfile delete mode 100644 samples/emoji-search/ios-uikit/Podfile.lock diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 9eb0226d0f..cfed7b58ed 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -115,9 +115,7 @@ jobs: - name: Build Counter iOS (UIKit) run: | - cd samples/counter/ios-uikit - pod install - xcodebuild -workspace CounterApp.xcworkspace -scheme CounterApp -destination 'platform=iOS Simulator,name=iPhone 12,OS=latest' + xcodebuild -project samples/counter/ios-uikit/CounterApp.xcodeproj -scheme CounterApp -destination 'platform=iOS Simulator,name=iPhone 12,OS=latest' sample-emoji: runs-on: macos-latest @@ -137,9 +135,7 @@ jobs: - name: Build Emoji Search iOS (UIKit) run: | - cd samples/emoji-search/ios-uikit - pod install - xcodebuild -workspace EmojiSearchApp.xcworkspace -scheme EmojiSearchApp -destination 'platform=iOS Simulator,name=iPhone 12,OS=latest' + xcodebuild -project samples/emoji-search/ios-uikit/EmojiSearchApp.xcodeproj -scheme EmojiSearchApp -destination 'platform=iOS Simulator,name=iPhone 12,OS=latest' test-app: runs-on: macos-latest diff --git a/.gitignore b/.gitignore index f5e6aaf192..74690cd631 100644 --- a/.gitignore +++ b/.gitignore @@ -15,9 +15,6 @@ local.properties *.xcworkspace xcuserdata -# Cocoapods -Pods - # Paparazzi redwood-layout-composeui/out/failures redwood-layout-view/out/failures diff --git a/samples/counter/README.md b/samples/counter/README.md index 5eb01e67eb..dde4f24ab0 100644 --- a/samples/counter/README.md +++ b/samples/counter/README.md @@ -33,9 +33,7 @@ Running Counter on iOS Run this: ``` -cd samples/counter/ios-uikit -pod install -open CounterApp.xcworkspace +open samples/counter/ios-uikit/CounterApp.xcodeproj ``` Then build and run the app. The shared Kotlin code will be built automatically as part of building the iOS app, and also rebuilt as needed. diff --git a/samples/counter/ios-shared/CounterKt.podspec b/samples/counter/ios-shared/CounterKt.podspec deleted file mode 100644 index 51d0a6403b..0000000000 --- a/samples/counter/ios-shared/CounterKt.podspec +++ /dev/null @@ -1,45 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'CounterKt' - spec.version = '1.0' - spec.homepage = 'https://github.com/cashapp/redwood/' - spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" } - spec.authors = '' - spec.license = '' - spec.summary = 'Redwood Sample Counter' - - spec.vendored_frameworks = "build/cocoapods/framework/CounterKt.framework" - spec.libraries = "c++" - spec.module_name = "#{spec.name}_umbrella" - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':samples:counter:ios-shared', - 'PRODUCT_MODULE_NAME' => 'CounterKt', - } - - spec.prepare_command = <<-SCRIPT - ../../../gradlew :samples:counter:ios-shared:generateDummyFramework - SCRIPT - - spec.script_phases = [ - { - :name => 'Build CounterKt', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$COCOAPODS_SKIP_KOTLIN_BUILD" ]; then - echo "Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$REPO_ROOT/../../../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ - -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ - -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration=$CONFIGURATION \ - -Pkotlin.native.cocoapods.cflags="$OTHER_CFLAGS" \ - -Pkotlin.native.cocoapods.paths.headers="$HEADER_SEARCH_PATHS" \ - -Pkotlin.native.cocoapods.paths.frameworks="$FRAMEWORK_SEARCH_PATHS" - SCRIPT - } - ] -end diff --git a/samples/counter/ios-shared/build.gradle b/samples/counter/ios-shared/build.gradle index 07ace9d309..66433814bc 100644 --- a/samples/counter/ios-shared/build.gradle +++ b/samples/counter/ios-shared/build.gradle @@ -15,17 +15,15 @@ */ apply plugin: 'org.jetbrains.kotlin.multiplatform' -apply plugin: 'org.jetbrains.kotlin.native.cocoapods' apply plugin: 'app.cash.redwood' kotlin { - iosArm64() - iosX64() - iosSimulatorArm64() - - cocoapods { - noPodspec() - framework { + [ + iosArm64(), + iosX64(), + iosSimulatorArm64(), + ].each { iosTarget -> + iosTarget.binaries.framework { baseName = 'CounterKt' } } diff --git a/samples/counter/ios-uikit/CounterApp.xcodeproj/project.pbxproj b/samples/counter/ios-uikit/CounterApp.xcodeproj/project.pbxproj index d37c3c4a7e..bdc9eb9469 100644 --- a/samples/counter/ios-uikit/CounterApp.xcodeproj/project.pbxproj +++ b/samples/counter/ios-uikit/CounterApp.xcodeproj/project.pbxproj @@ -12,12 +12,10 @@ 635661DC21F12B8000DD7240 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 635661DB21F12B8000DD7240 /* Assets.xcassets */; }; 635661DF21F12B8000DD7240 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 635661DD21F12B8000DD7240 /* LaunchScreen.storyboard */; }; CB85C0B725AFE61A007A2CC7 /* CounterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB85C0B625AFE61A007A2CC7 /* CounterViewController.swift */; }; - CB85EE5426648F6900A4B218 /* Pods_CounterApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00A9C28A8FE3CCC0B75F8DBE /* Pods_CounterApp.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 00A9C28A8FE3CCC0B75F8DBE /* Pods_CounterApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CounterApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4B9986777126F871E922EFF8 /* Pods-CounterApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CounterApp.release.xcconfig"; path = "Target Support Files/Pods-CounterApp/Pods-CounterApp.release.xcconfig"; sourceTree = ""; }; + 00D5E68D2AAF3EBD00692213 /* ios-shared */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "ios-shared"; path = "../ios-shared"; sourceTree = ""; }; 635661D121F12B7E00DD7240 /* CounterApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CounterApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 635661D421F12B7E00DD7240 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 635661D921F12B7E00DD7240 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -26,7 +24,6 @@ 635661E021F12B8000DD7240 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 63E90CF521FEBBB700449E04 /* main.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = main.framework; path = "../shared/build/xcode-frameworks/main.framework"; sourceTree = ""; }; CB85C0B625AFE61A007A2CC7 /* CounterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CounterViewController.swift; sourceTree = ""; }; - FE5DC566933F8A25E4B4D71D /* Pods-CounterApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CounterApp.debug.xcconfig"; path = "Target Support Files/Pods-CounterApp/Pods-CounterApp.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -34,21 +31,27 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CB85EE5426648F6900A4B218 /* Pods_CounterApp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 00D5E68C2AAF3EBD00692213 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 00D5E68D2AAF3EBD00692213 /* ios-shared */, + ); + name = Frameworks; + sourceTree = ""; + }; 635661C821F12B7D00DD7240 = { isa = PBXGroup; children = ( 63E90CF521FEBBB700449E04 /* main.framework */, 635661D321F12B7E00DD7240 /* CounterApp */, 635661D221F12B7E00DD7240 /* Products */, - B5604532F7F0C4349EF67F9C /* Pods */, - C6AEA68F26E2A3BD052DEDBB /* Frameworks */, + 00D5E68C2AAF3EBD00692213 /* Frameworks */, ); sourceTree = ""; }; @@ -73,23 +76,6 @@ path = CounterApp; sourceTree = ""; }; - B5604532F7F0C4349EF67F9C /* Pods */ = { - isa = PBXGroup; - children = ( - FE5DC566933F8A25E4B4D71D /* Pods-CounterApp.debug.xcconfig */, - 4B9986777126F871E922EFF8 /* Pods-CounterApp.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; - C6AEA68F26E2A3BD052DEDBB /* Frameworks */ = { - isa = PBXGroup; - children = ( - 00A9C28A8FE3CCC0B75F8DBE /* Pods_CounterApp.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -97,11 +83,10 @@ isa = PBXNativeTarget; buildConfigurationList = 635661E321F12B8000DD7240 /* Build configuration list for PBXNativeTarget "CounterApp" */; buildPhases = ( - C0A74553EE688F26124F6281 /* [CP] Check Pods Manifest.lock */, + 00663F3E2AAF2F52006EA671 /* ShellScript */, 635661CD21F12B7E00DD7240 /* Sources */, 635661CE21F12B7E00DD7240 /* Frameworks */, 635661CF21F12B7E00DD7240 /* Resources */, - 5F3CFDEBC3AA573649C00FA4 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -160,24 +145,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 5F3CFDEBC3AA573649C00FA4 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CounterApp/Pods-CounterApp-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-CounterApp/Pods-CounterApp-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CounterApp/Pods-CounterApp-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - C0A74553EE688F26124F6281 /* [CP] Check Pods Manifest.lock */ = { + 00663F3E2AAF2F52006EA671 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -185,19 +153,14 @@ inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-CounterApp-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "cd \"$SRCROOT/../../..\"\n./gradlew :samples:counter:ios-shared:embedAndSignAppleFrameworkForXcode\n\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -353,18 +316,23 @@ }; 635661E421F12B8000DD7240 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FE5DC566933F8A25E4B4D71D /* Pods-CounterApp.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 2UER9BPG44; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../ios-shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"; INFOPLIST_FILE = CounterApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + CounterKt, + ); PRODUCT_BUNDLE_IDENTIFIER = com.example.treehouse.sample.counter; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -375,18 +343,23 @@ }; 635661E521F12B8000DD7240 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B9986777126F871E922EFF8 /* Pods-CounterApp.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 2UER9BPG44; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../ios-shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"; INFOPLIST_FILE = CounterApp/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-framework", + CounterKt, + ); PRODUCT_BUNDLE_IDENTIFIER = com.example.treehouse.sample.counter; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; diff --git a/samples/counter/ios-uikit/Podfile b/samples/counter/ios-uikit/Podfile deleted file mode 100644 index 97370362a8..0000000000 --- a/samples/counter/ios-uikit/Podfile +++ /dev/null @@ -1,6 +0,0 @@ -platform :ios, '9.0' -use_frameworks! - -target 'CounterApp' do - pod 'CounterKt', :path => '../ios-shared' -end diff --git a/samples/counter/ios-uikit/Podfile.lock b/samples/counter/ios-uikit/Podfile.lock deleted file mode 100644 index ca2cef7e5b..0000000000 --- a/samples/counter/ios-uikit/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - CounterKt (1.0) - -DEPENDENCIES: - - CounterKt (from `../ios-shared`) - -EXTERNAL SOURCES: - CounterKt: - :path: "../ios-shared" - -SPEC CHECKSUMS: - CounterKt: e63ce542323e598640578c9b9e5d096f0e090323 - -PODFILE CHECKSUM: bd28285977e4e4d4cd1ad7deb6d9c65d70823afb - -COCOAPODS: 1.12.0 diff --git a/samples/emoji-search/README.md b/samples/emoji-search/README.md index 3bd654a77b..31dc1dfe14 100644 --- a/samples/emoji-search/README.md +++ b/samples/emoji-search/README.md @@ -56,9 +56,7 @@ Running Emoji-Search on iOS Run this: ``` -cd samples/emoji-search/ios-uikit -pod install -open EmojiSearchApp.xcworkspace +open samples/emoji-search/ios-uikit/EmojiSearchApp.xcodeproj ``` Then build and run the app. The shared Kotlin code will be built automatically as part of building the iOS app, and also rebuilt as needed. diff --git a/samples/emoji-search/ios-shared/EmojiSearchKt.podspec b/samples/emoji-search/ios-shared/EmojiSearchKt.podspec deleted file mode 100644 index f40b1ae322..0000000000 --- a/samples/emoji-search/ios-shared/EmojiSearchKt.podspec +++ /dev/null @@ -1,50 +0,0 @@ -Pod::Spec.new do |spec| - spec.name = 'EmojiSearchKt' - spec.version = '1.0' - spec.homepage = 'https://github.com/cashapp/redwood/' - spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" } - spec.authors = '' - spec.license = '' - spec.summary = 'Redwood Sample Emoji Search' - - spec.vendored_frameworks = "build/cocoapods/framework/EmojiSearchKt.framework" - spec.libraries = "c++", "sqlite3" - spec.module_name = "#{spec.name}_umbrella" - - # Redwood is supported on iOS versions back to at least 9.0 - # We're setting to 14.0 here to squash a warning since our demo app - # uses 14.0+ UIKit features. - spec.ios.deployment_target = '14.0' - - spec.pod_target_xcconfig = { - 'KOTLIN_PROJECT_PATH' => ':samples:emoji-search:ios-shared', - 'PRODUCT_MODULE_NAME' => 'EmojiSearchKt', - } - - spec.prepare_command = <<-SCRIPT - ../../../gradlew :samples:emoji-search:ios-shared:generateDummyFramework - SCRIPT - - spec.script_phases = [ - { - :name => 'Build EmojiSearchKt', - :execution_position => :before_compile, - :shell_path => '/bin/sh', - :script => <<-SCRIPT - if [ "YES" = "$COCOAPODS_SKIP_KOTLIN_BUILD" ]; then - echo "Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"" - exit 0 - fi - set -ev - REPO_ROOT="$PODS_TARGET_SRCROOT" - "$REPO_ROOT/../../../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \ - -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \ - -Pkotlin.native.cocoapods.archs="$ARCHS" \ - -Pkotlin.native.cocoapods.configuration=$CONFIGURATION \ - -Pkotlin.native.cocoapods.cflags="$OTHER_CFLAGS" \ - -Pkotlin.native.cocoapods.paths.headers="$HEADER_SEARCH_PATHS" \ - -Pkotlin.native.cocoapods.paths.frameworks="$FRAMEWORK_SEARCH_PATHS" - SCRIPT - } - ] -end diff --git a/samples/emoji-search/ios-shared/build.gradle b/samples/emoji-search/ios-shared/build.gradle index 6d9f673d9e..aae6b0afb6 100644 --- a/samples/emoji-search/ios-shared/build.gradle +++ b/samples/emoji-search/ios-shared/build.gradle @@ -1,14 +1,12 @@ apply plugin: 'org.jetbrains.kotlin.multiplatform' -apply plugin: 'org.jetbrains.kotlin.native.cocoapods' kotlin { - iosArm64() - iosX64() - iosSimulatorArm64() - - cocoapods { - noPodspec() - framework { + [ + iosArm64(), + iosX64(), + iosSimulatorArm64(), + ].each { iosTarget -> + iosTarget.binaries.framework { baseName = 'EmojiSearchKt' } } diff --git a/samples/emoji-search/ios-uikit/EmojiSearchApp.xcodeproj/project.pbxproj b/samples/emoji-search/ios-uikit/EmojiSearchApp.xcodeproj/project.pbxproj index 3f2bb76fbf..d512487459 100644 --- a/samples/emoji-search/ios-uikit/EmojiSearchApp.xcodeproj/project.pbxproj +++ b/samples/emoji-search/ios-uikit/EmojiSearchApp.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -17,15 +17,12 @@ C2F7CE6628BEAB6C00A66A69 /* ImageBinding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F7CE6528BEAB6C00A66A69 /* ImageBinding.swift */; }; C2F7FBA228BEB54200A66A69 /* TextInputBinding.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2F7FBA128BEB54200A66A69 /* TextInputBinding.swift */; }; CB85C0B725AFE61A007A2CC7 /* EmojiSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB85C0B625AFE61A007A2CC7 /* EmojiSearchViewController.swift */; }; - CB85EE5426648F6900A4B218 /* Pods_EmojiSearchApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00A9C28A8FE3CCC0B75F8DBE /* Pods_EmojiSearchApp.framework */; }; CB9F76562810A8A8008CF457 /* IosHostApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB9F76552810A8A8008CF457 /* IosHostApi.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 00A9C28A8FE3CCC0B75F8DBE /* Pods_EmojiSearchApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_EmojiSearchApp.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 10AA3D4B28C03D32006F125E /* IosEmojiSearchWidgetFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IosEmojiSearchWidgetFactory.swift; sourceTree = ""; }; 10AA3D4D28C0EA40006F125E /* TextBinding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextBinding.swift; sourceTree = ""; }; - 4B9986777126F871E922EFF8 /* Pods-EmojiSearchApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiSearchApp.release.xcconfig"; path = "Target Support Files/Pods-EmojiSearchApp/Pods-EmojiSearchApp.release.xcconfig"; sourceTree = ""; }; 635661D121F12B7E00DD7240 /* EmojiSearchApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EmojiSearchApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 635661D421F12B7E00DD7240 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 635661D921F12B7E00DD7240 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -38,7 +35,6 @@ C2F7FBA128BEB54200A66A69 /* TextInputBinding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextInputBinding.swift; sourceTree = ""; }; CB85C0B625AFE61A007A2CC7 /* EmojiSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiSearchViewController.swift; sourceTree = ""; }; CB9F76552810A8A8008CF457 /* IosHostApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IosHostApi.swift; sourceTree = ""; }; - FE5DC566933F8A25E4B4D71D /* Pods-EmojiSearchApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-EmojiSearchApp.debug.xcconfig"; path = "Target Support Files/Pods-EmojiSearchApp/Pods-EmojiSearchApp.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -46,7 +42,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CB85EE5426648F6900A4B218 /* Pods_EmojiSearchApp.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -59,8 +54,6 @@ 63E90CF521FEBBB700449E04 /* main.framework */, 635661D321F12B7E00DD7240 /* EmojiSearchApp */, 635661D221F12B7E00DD7240 /* Products */, - B5604532F7F0C4349EF67F9C /* Pods */, - C6AEA68F26E2A3BD052DEDBB /* Frameworks */, ); sourceTree = ""; }; @@ -91,23 +84,6 @@ path = EmojiSearchApp; sourceTree = ""; }; - B5604532F7F0C4349EF67F9C /* Pods */ = { - isa = PBXGroup; - children = ( - FE5DC566933F8A25E4B4D71D /* Pods-EmojiSearchApp.debug.xcconfig */, - 4B9986777126F871E922EFF8 /* Pods-EmojiSearchApp.release.xcconfig */, - ); - path = Pods; - sourceTree = ""; - }; - C6AEA68F26E2A3BD052DEDBB /* Frameworks */ = { - isa = PBXGroup; - children = ( - 00A9C28A8FE3CCC0B75F8DBE /* Pods_EmojiSearchApp.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -115,11 +91,10 @@ isa = PBXNativeTarget; buildConfigurationList = 635661E321F12B8000DD7240 /* Build configuration list for PBXNativeTarget "EmojiSearchApp" */; buildPhases = ( - C0A74553EE688F26124F6281 /* [CP] Check Pods Manifest.lock */, + 00DD12E22AAF46C500CA3FD3 /* ShellScript */, 635661CD21F12B7E00DD7240 /* Sources */, 635661CE21F12B7E00DD7240 /* Frameworks */, 635661CF21F12B7E00DD7240 /* Resources */, - 596E05BFED0D5D6968D3601E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -178,24 +153,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 596E05BFED0D5D6968D3601E /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-EmojiSearchApp/Pods-EmojiSearchApp-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-EmojiSearchApp/Pods-EmojiSearchApp-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-EmojiSearchApp/Pods-EmojiSearchApp-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - C0A74553EE688F26124F6281 /* [CP] Check Pods Manifest.lock */ = { + 00DD12E22AAF46C500CA3FD3 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -203,19 +161,14 @@ inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-EmojiSearchApp-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "cd \"$SRCROOT/../../..\"\n./gradlew :samples:emoji-search:ios-shared:embedAndSignAppleFrameworkForXcode\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -377,13 +330,13 @@ }; 635661E421F12B8000DD7240 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FE5DC566933F8A25E4B4D71D /* Pods-EmojiSearchApp.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../ios-shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"; INFOPLIST_FILE = EmojiSearchApp/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -397,6 +350,8 @@ "-framework", "\"EmojiSearchKt\"", "-ObjC", + "-framework", + EmojiSearchKt, ); PRODUCT_BUNDLE_IDENTIFIER = com.example.zipline.sample.emojisearch; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -408,13 +363,13 @@ }; 635661E521F12B8000DD7240 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4B9986777126F871E922EFF8 /* Pods-EmojiSearchApp.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 2UER9BPG44; ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../ios-shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)"; INFOPLIST_FILE = EmojiSearchApp/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 14.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -428,6 +383,8 @@ "-framework", "\"EmojiSearchKt\"", "-ObjC", + "-framework", + EmojiSearchKt, ); PRODUCT_BUNDLE_IDENTIFIER = com.example.zipline.sample.emojisearch; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/samples/emoji-search/ios-uikit/Podfile b/samples/emoji-search/ios-uikit/Podfile deleted file mode 100644 index 6145fc9df2..0000000000 --- a/samples/emoji-search/ios-uikit/Podfile +++ /dev/null @@ -1,6 +0,0 @@ -platform :ios, '14.0' -use_frameworks! - -target 'EmojiSearchApp' do - pod 'EmojiSearchKt', :path => '../ios-shared' -end diff --git a/samples/emoji-search/ios-uikit/Podfile.lock b/samples/emoji-search/ios-uikit/Podfile.lock deleted file mode 100644 index 81c19e377e..0000000000 --- a/samples/emoji-search/ios-uikit/Podfile.lock +++ /dev/null @@ -1,16 +0,0 @@ -PODS: - - EmojiSearchKt (1.0) - -DEPENDENCIES: - - EmojiSearchKt (from `../ios-shared`) - -EXTERNAL SOURCES: - EmojiSearchKt: - :path: "../ios-shared" - -SPEC CHECKSUMS: - EmojiSearchKt: f542362486d22e2394742d2f03920807b85beaaa - -PODFILE CHECKSUM: 62788f73308eccd2148887940a388226a1f4c82b - -COCOAPODS: 1.12.1