From dff812e5c6b768139a035576650d5121fdc80ac8 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 14:42:48 +0300 Subject: [PATCH 1/9] Migrate to cocoapods --- Cartfile | 3 - WebRTC.json | 6 - buildSrc/src/main/kotlin/FrameworkUtils.kt | 14 +- sample/app-ios/.gitignore | 2 + sample/app-ios/Podfile | 9 + sample/app-ios/Podfile.lock | 774 ++++++++++++++++++ .../app-ios/app-ios.xcodeproj/project.pbxproj | 144 ++-- .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + sample/shared/build.gradle.kts | 70 +- sample/shared/shared.podspec | 41 + .../webrtckmp/sample/shared/RoomDataSource.kt | 12 +- webrtc-kmp/build.gradle.kts | 42 +- webrtc-kmp/webrtc_kmp.podspec | 39 + 14 files changed, 1013 insertions(+), 161 deletions(-) delete mode 100644 Cartfile delete mode 100644 WebRTC.json create mode 100644 sample/app-ios/Podfile create mode 100644 sample/app-ios/Podfile.lock create mode 100644 sample/app-ios/app-ios.xcworkspace/contents.xcworkspacedata create mode 100644 sample/app-ios/app-ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 sample/shared/shared.podspec create mode 100644 webrtc-kmp/webrtc_kmp.podspec diff --git a/Cartfile b/Cartfile deleted file mode 100644 index 56b0e5b5..00000000 --- a/Cartfile +++ /dev/null @@ -1,3 +0,0 @@ -binary "WebRTC.json" == 0.114.0 -binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json" == 8.15.0 -binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFirestoreBinary.json" == 8.15.0 diff --git a/WebRTC.json b/WebRTC.json deleted file mode 100644 index 3e2e30a7..00000000 --- a/WebRTC.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "0.89": "https://github.com/react-native-webrtc/react-native-webrtc/releases/download/1.89.3/WebRTC.tar.xz", - "100.0.1": "https://github.com/jitsi/webrtc/releases/download/v100.0.1/WebRTC.xcframework.tgz", - "106.0.0": "https://github.com/jitsi/webrtc/releases/download/v106.0.0/WebRTC.xcframework.zip", - "0.114.0": "https://github.com/webrtc-sdk/Specs/releases/download/114.5735.01/WebRTC.xcframework.zip" -} diff --git a/buildSrc/src/main/kotlin/FrameworkUtils.kt b/buildSrc/src/main/kotlin/FrameworkUtils.kt index 234e05d7..4539ccdc 100644 --- a/buildSrc/src/main/kotlin/FrameworkUtils.kt +++ b/buildSrc/src/main/kotlin/FrameworkUtils.kt @@ -2,19 +2,7 @@ import org.gradle.api.Project import org.jetbrains.kotlin.konan.target.KonanTarget import java.io.File -fun Project.getFrameworks(target: KonanTarget): Map { - val cartBuildPath = rootProject.projectDir.resolve("Carthage/Build") - - val frameworks = cartBuildPath - .listFiles { _, name -> name.endsWith(".xcframework") } - ?.filter { it.isDirectory } - ?.map { it.name.substringBefore(".xcframework") } - ?: emptyList() - - return frameworks.associateWith { cartBuildPath.resolveArchPath(target, it) } -} - -private fun File.resolveArchPath(target: KonanTarget, framework: String): File { +fun File.resolveArchPath(target: KonanTarget, framework: String): File { val archPaths = resolve("$framework.xcframework") .listFiles { _, name -> target.matches(name) } ?: error("Can't find framework '$framework' for target '${target.name}'") diff --git a/sample/app-ios/.gitignore b/sample/app-ios/.gitignore index b1b9c371..7e6b5400 100644 --- a/sample/app-ios/.gitignore +++ b/sample/app-ios/.gitignore @@ -217,3 +217,5 @@ Dependencies/ **/xcshareddata/WorkspaceSettings.xcsettings # End of https://www.toptal.com/developers/gitignore/api/swift,xcode,C,objective-c,osx + +Pods/ diff --git a/sample/app-ios/Podfile b/sample/app-ios/Podfile new file mode 100644 index 00000000..b02ca605 --- /dev/null +++ b/sample/app-ios/Podfile @@ -0,0 +1,9 @@ +source 'https://cdn.cocoapods.org' +source 'https://github.com/webrtc-sdk/Specs.git' + +platform :ios, '11.0' + +target 'app-ios' do + use_frameworks! + pod 'shared', :path => '../shared' +end diff --git a/sample/app-ios/Podfile.lock b/sample/app-ios/Podfile.lock new file mode 100644 index 00000000..a8b98799 --- /dev/null +++ b/sample/app-ios/Podfile.lock @@ -0,0 +1,774 @@ +PODS: + - abseil/algorithm (1.20220623.0): + - abseil/algorithm/algorithm (= 1.20220623.0) + - abseil/algorithm/container (= 1.20220623.0) + - abseil/algorithm/algorithm (1.20220623.0): + - abseil/base/config + - abseil/algorithm/container (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/base (1.20220623.0): + - abseil/base/atomic_hook (= 1.20220623.0) + - abseil/base/base (= 1.20220623.0) + - abseil/base/base_internal (= 1.20220623.0) + - abseil/base/config (= 1.20220623.0) + - abseil/base/core_headers (= 1.20220623.0) + - abseil/base/dynamic_annotations (= 1.20220623.0) + - abseil/base/endian (= 1.20220623.0) + - abseil/base/errno_saver (= 1.20220623.0) + - abseil/base/fast_type_id (= 1.20220623.0) + - abseil/base/log_severity (= 1.20220623.0) + - abseil/base/malloc_internal (= 1.20220623.0) + - abseil/base/prefetch (= 1.20220623.0) + - abseil/base/pretty_function (= 1.20220623.0) + - abseil/base/raw_logging_internal (= 1.20220623.0) + - abseil/base/spinlock_wait (= 1.20220623.0) + - abseil/base/strerror (= 1.20220623.0) + - abseil/base/throw_delegate (= 1.20220623.0) + - abseil/base/atomic_hook (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/base (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/log_severity + - abseil/base/raw_logging_internal + - abseil/base/spinlock_wait + - abseil/meta/type_traits + - abseil/base/base_internal (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/base/config (1.20220623.0) + - abseil/base/core_headers (1.20220623.0): + - abseil/base/config + - abseil/base/dynamic_annotations (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver (1.20220623.0): + - abseil/base/config + - abseil/base/fast_type_id (1.20220623.0): + - abseil/base/config + - abseil/base/log_severity (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/malloc_internal (1.20220623.0): + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/raw_logging_internal + - abseil/base/prefetch (1.20220623.0): + - abseil/base/config + - abseil/base/pretty_function (1.20220623.0) + - abseil/base/raw_logging_internal (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/log_severity + - abseil/base/spinlock_wait (1.20220623.0): + - abseil/base/base_internal + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/strerror (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/errno_saver + - abseil/base/throw_delegate (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/cleanup/cleanup (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/cleanup/cleanup_internal + - abseil/cleanup/cleanup_internal (1.20220623.0): + - abseil/base/base_internal + - abseil/base/core_headers + - abseil/utility/utility + - abseil/container/common (1.20220623.0): + - abseil/meta/type_traits + - abseil/types/optional + - abseil/container/compressed_tuple (1.20220623.0): + - abseil/utility/utility + - abseil/container/container_memory (1.20220623.0): + - abseil/base/config + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/container/fixed_array (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/throw_delegate + - abseil/container/compressed_tuple + - abseil/memory/memory + - abseil/container/flat_hash_map (1.20220623.0): + - abseil/algorithm/container + - abseil/base/core_headers + - abseil/container/container_memory + - abseil/container/hash_function_defaults + - abseil/container/raw_hash_map + - abseil/memory/memory + - abseil/container/flat_hash_set (1.20220623.0): + - abseil/algorithm/container + - abseil/base/core_headers + - abseil/container/container_memory + - abseil/container/hash_function_defaults + - abseil/container/raw_hash_set + - abseil/memory/memory + - abseil/container/hash_function_defaults (1.20220623.0): + - abseil/base/config + - abseil/hash/hash + - abseil/strings/cord + - abseil/strings/strings + - abseil/container/hash_policy_traits (1.20220623.0): + - abseil/meta/type_traits + - abseil/container/hashtable_debug_hooks (1.20220623.0): + - abseil/base/config + - abseil/container/hashtablez_sampler (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/stacktrace + - abseil/memory/memory + - abseil/profiling/exponential_biased + - abseil/profiling/sample_recorder + - abseil/synchronization/synchronization + - abseil/utility/utility + - abseil/container/inlined_vector (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/throw_delegate + - abseil/container/inlined_vector_internal + - abseil/memory/memory + - abseil/container/inlined_vector_internal (1.20220623.0): + - abseil/base/core_headers + - abseil/container/compressed_tuple + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/types/span + - abseil/container/layout (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/strings/strings + - abseil/types/span + - abseil/utility/utility + - abseil/container/raw_hash_map (1.20220623.0): + - abseil/base/throw_delegate + - abseil/container/container_memory + - abseil/container/raw_hash_set + - abseil/container/raw_hash_set (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/prefetch + - abseil/container/common + - abseil/container/compressed_tuple + - abseil/container/container_memory + - abseil/container/hash_policy_traits + - abseil/container/hashtable_debug_hooks + - abseil/container/hashtablez_sampler + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/utility/utility + - abseil/debugging/debugging_internal (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/errno_saver + - abseil/base/raw_logging_internal + - abseil/debugging/demangle_internal (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/stacktrace (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/debugging/debugging_internal + - abseil/debugging/symbolize (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/debugging/debugging_internal + - abseil/debugging/demangle_internal + - abseil/strings/strings + - abseil/functional/any_invocable (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/functional/bind_front (1.20220623.0): + - abseil/base/base_internal + - abseil/container/compressed_tuple + - abseil/meta/type_traits + - abseil/utility/utility + - abseil/functional/function_ref (1.20220623.0): + - abseil/base/base_internal + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/hash/city (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/hash/hash (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/container/fixed_array + - abseil/functional/function_ref + - abseil/hash/city + - abseil/hash/low_level_hash + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/types/optional + - abseil/types/variant + - abseil/utility/utility + - abseil/hash/low_level_hash (1.20220623.0): + - abseil/base/config + - abseil/base/endian + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/memory (1.20220623.0): + - abseil/memory/memory (= 1.20220623.0) + - abseil/memory/memory (1.20220623.0): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/meta (1.20220623.0): + - abseil/meta/type_traits (= 1.20220623.0) + - abseil/meta/type_traits (1.20220623.0): + - abseil/base/config + - abseil/numeric/bits (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/numeric/int128 (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/numeric/bits + - abseil/numeric/representation (1.20220623.0): + - abseil/base/config + - abseil/profiling/exponential_biased (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/profiling/sample_recorder (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/synchronization/synchronization + - abseil/time/time + - abseil/random/distributions (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/random/internal/distribution_caller + - abseil/random/internal/fast_uniform_bits + - abseil/random/internal/fastmath + - abseil/random/internal/generate_real + - abseil/random/internal/iostream_state_saver + - abseil/random/internal/traits + - abseil/random/internal/uniform_helper + - abseil/random/internal/wide_multiply + - abseil/strings/strings + - abseil/random/internal/distribution_caller (1.20220623.0): + - abseil/base/config + - abseil/base/fast_type_id + - abseil/utility/utility + - abseil/random/internal/fast_uniform_bits (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/random/internal/traits + - abseil/random/internal/fastmath (1.20220623.0): + - abseil/numeric/bits + - abseil/random/internal/generate_real (1.20220623.0): + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/random/internal/fastmath + - abseil/random/internal/traits + - abseil/random/internal/iostream_state_saver (1.20220623.0): + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/random/internal/nonsecure_base (1.20220623.0): + - abseil/base/core_headers + - abseil/container/inlined_vector + - abseil/meta/type_traits + - abseil/random/internal/pool_urbg + - abseil/random/internal/salted_seed_seq + - abseil/random/internal/seed_material + - abseil/types/span + - abseil/random/internal/pcg_engine (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/random/internal/fastmath + - abseil/random/internal/iostream_state_saver + - abseil/random/internal/platform (1.20220623.0): + - abseil/base/config + - abseil/random/internal/pool_urbg (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/random/internal/randen + - abseil/random/internal/seed_material + - abseil/random/internal/traits + - abseil/random/seed_gen_exception + - abseil/types/span + - abseil/random/internal/randen (1.20220623.0): + - abseil/base/raw_logging_internal + - abseil/random/internal/platform + - abseil/random/internal/randen_hwaes + - abseil/random/internal/randen_slow + - abseil/random/internal/randen_engine (1.20220623.0): + - abseil/base/endian + - abseil/meta/type_traits + - abseil/random/internal/iostream_state_saver + - abseil/random/internal/randen + - abseil/random/internal/randen_hwaes (1.20220623.0): + - abseil/base/config + - abseil/random/internal/platform + - abseil/random/internal/randen_hwaes_impl + - abseil/random/internal/randen_hwaes_impl (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/numeric/int128 + - abseil/random/internal/platform + - abseil/random/internal/randen_slow (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/numeric/int128 + - abseil/random/internal/platform + - abseil/random/internal/salted_seed_seq (1.20220623.0): + - abseil/container/inlined_vector + - abseil/meta/type_traits + - abseil/random/internal/seed_material + - abseil/types/optional + - abseil/types/span + - abseil/random/internal/seed_material (1.20220623.0): + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/raw_logging_internal + - abseil/random/internal/fast_uniform_bits + - abseil/strings/strings + - abseil/types/optional + - abseil/types/span + - abseil/random/internal/traits (1.20220623.0): + - abseil/base/config + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/random/internal/uniform_helper (1.20220623.0): + - abseil/base/config + - abseil/meta/type_traits + - abseil/numeric/int128 + - abseil/random/internal/traits + - abseil/random/internal/wide_multiply (1.20220623.0): + - abseil/base/config + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/random/internal/traits + - abseil/random/random (1.20220623.0): + - abseil/random/distributions + - abseil/random/internal/nonsecure_base + - abseil/random/internal/pcg_engine + - abseil/random/internal/pool_urbg + - abseil/random/internal/randen_engine + - abseil/random/seed_sequences + - abseil/random/seed_gen_exception (1.20220623.0): + - abseil/base/config + - abseil/random/seed_sequences (1.20220623.0): + - abseil/base/config + - abseil/random/internal/pool_urbg + - abseil/random/internal/salted_seed_seq + - abseil/random/internal/seed_material + - abseil/random/seed_gen_exception + - abseil/types/span + - abseil/status/status (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/base/strerror + - abseil/container/inlined_vector + - abseil/debugging/stacktrace + - abseil/debugging/symbolize + - abseil/functional/function_ref + - abseil/strings/cord + - abseil/strings/str_format + - abseil/strings/strings + - abseil/types/optional + - abseil/status/statusor (1.20220623.0): + - abseil/base/base + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/meta/type_traits + - abseil/status/status + - abseil/strings/strings + - abseil/types/variant + - abseil/utility/utility + - abseil/strings/cord (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/container/fixed_array + - abseil/container/inlined_vector + - abseil/functional/function_ref + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/strings/cord_internal + - abseil/strings/cordz_functions + - abseil/strings/cordz_info + - abseil/strings/cordz_statistics + - abseil/strings/cordz_update_scope + - abseil/strings/cordz_update_tracker + - abseil/strings/internal + - abseil/strings/str_format + - abseil/strings/strings + - abseil/types/optional + - abseil/types/span + - abseil/strings/cord_internal (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/base/throw_delegate + - abseil/container/compressed_tuple + - abseil/container/inlined_vector + - abseil/container/layout + - abseil/functional/function_ref + - abseil/meta/type_traits + - abseil/strings/strings + - abseil/types/span + - abseil/strings/cordz_functions (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/profiling/exponential_biased + - abseil/strings/cordz_handle (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/synchronization/synchronization + - abseil/strings/cordz_info (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/container/inlined_vector + - abseil/debugging/stacktrace + - abseil/strings/cord_internal + - abseil/strings/cordz_functions + - abseil/strings/cordz_handle + - abseil/strings/cordz_statistics + - abseil/strings/cordz_update_tracker + - abseil/synchronization/synchronization + - abseil/types/span + - abseil/strings/cordz_statistics (1.20220623.0): + - abseil/base/config + - abseil/strings/cordz_update_tracker + - abseil/strings/cordz_update_scope (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/strings/cord_internal + - abseil/strings/cordz_info + - abseil/strings/cordz_update_tracker + - abseil/strings/cordz_update_tracker (1.20220623.0): + - abseil/base/config + - abseil/strings/internal (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/meta/type_traits + - abseil/strings/str_format (1.20220623.0): + - abseil/strings/str_format_internal + - abseil/strings/str_format_internal (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/functional/function_ref + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/numeric/representation + - abseil/strings/strings + - abseil/types/optional + - abseil/types/span + - abseil/utility/utility + - abseil/strings/strings (1.20220623.0): + - abseil/base/base + - abseil/base/config + - abseil/base/core_headers + - abseil/base/endian + - abseil/base/raw_logging_internal + - abseil/base/throw_delegate + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/numeric/bits + - abseil/numeric/int128 + - abseil/strings/internal + - abseil/synchronization/graphcycles_internal (1.20220623.0): + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/synchronization/kernel_timeout_internal (1.20220623.0): + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/time/time + - abseil/synchronization/synchronization (1.20220623.0): + - abseil/base/atomic_hook + - abseil/base/base + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/base/dynamic_annotations + - abseil/base/malloc_internal + - abseil/base/raw_logging_internal + - abseil/debugging/stacktrace + - abseil/debugging/symbolize + - abseil/synchronization/graphcycles_internal + - abseil/synchronization/kernel_timeout_internal + - abseil/time/time + - abseil/time (1.20220623.0): + - abseil/time/internal (= 1.20220623.0) + - abseil/time/time (= 1.20220623.0) + - abseil/time/internal (1.20220623.0): + - abseil/time/internal/cctz (= 1.20220623.0) + - abseil/time/internal/cctz (1.20220623.0): + - abseil/time/internal/cctz/civil_time (= 1.20220623.0) + - abseil/time/internal/cctz/time_zone (= 1.20220623.0) + - abseil/time/internal/cctz/civil_time (1.20220623.0): + - abseil/base/config + - abseil/time/internal/cctz/time_zone (1.20220623.0): + - abseil/base/config + - abseil/time/internal/cctz/civil_time + - abseil/time/time (1.20220623.0): + - abseil/base/base + - abseil/base/core_headers + - abseil/base/raw_logging_internal + - abseil/numeric/int128 + - abseil/strings/strings + - abseil/time/internal/cctz/civil_time + - abseil/time/internal/cctz/time_zone + - abseil/types (1.20220623.0): + - abseil/types/any (= 1.20220623.0) + - abseil/types/bad_any_cast (= 1.20220623.0) + - abseil/types/bad_any_cast_impl (= 1.20220623.0) + - abseil/types/bad_optional_access (= 1.20220623.0) + - abseil/types/bad_variant_access (= 1.20220623.0) + - abseil/types/compare (= 1.20220623.0) + - abseil/types/optional (= 1.20220623.0) + - abseil/types/span (= 1.20220623.0) + - abseil/types/variant (= 1.20220623.0) + - abseil/types/any (1.20220623.0): + - abseil/base/config + - abseil/base/core_headers + - abseil/base/fast_type_id + - abseil/meta/type_traits + - abseil/types/bad_any_cast + - abseil/utility/utility + - abseil/types/bad_any_cast (1.20220623.0): + - abseil/base/config + - abseil/types/bad_any_cast_impl + - abseil/types/bad_any_cast_impl (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/bad_optional_access (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/bad_variant_access (1.20220623.0): + - abseil/base/config + - abseil/base/raw_logging_internal + - abseil/types/compare (1.20220623.0): + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/types/optional (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/memory/memory + - abseil/meta/type_traits + - abseil/types/bad_optional_access + - abseil/utility/utility + - abseil/types/span (1.20220623.0): + - abseil/algorithm/algorithm + - abseil/base/core_headers + - abseil/base/throw_delegate + - abseil/meta/type_traits + - abseil/types/variant (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/base/core_headers + - abseil/meta/type_traits + - abseil/types/bad_variant_access + - abseil/utility/utility + - abseil/utility/utility (1.20220623.0): + - abseil/base/base_internal + - abseil/base/config + - abseil/meta/type_traits + - BoringSSL-GRPC (0.0.24): + - BoringSSL-GRPC/Implementation (= 0.0.24) + - BoringSSL-GRPC/Interface (= 0.0.24) + - BoringSSL-GRPC/Implementation (0.0.24): + - BoringSSL-GRPC/Interface (= 0.0.24) + - BoringSSL-GRPC/Interface (0.0.24) + - FirebaseCore (10.11.0): + - FirebaseCoreInternal (~> 10.0) + - GoogleUtilities/Environment (~> 7.8) + - GoogleUtilities/Logger (~> 7.8) + - FirebaseCoreInternal (10.11.0): + - "GoogleUtilities/NSData+zlib (~> 7.8)" + - FirebaseFirestore (10.11.0): + - abseil/algorithm (~> 1.20220623.0) + - abseil/base (~> 1.20220623.0) + - abseil/container/flat_hash_map (~> 1.20220623.0) + - abseil/memory (~> 1.20220623.0) + - abseil/meta (~> 1.20220623.0) + - abseil/strings/strings (~> 1.20220623.0) + - abseil/time (~> 1.20220623.0) + - abseil/types (~> 1.20220623.0) + - FirebaseCore (~> 10.0) + - "gRPC-C++ (~> 1.50.1)" + - leveldb-library (~> 1.22) + - nanopb (< 2.30910.0, >= 2.30908.0) + - GoogleUtilities/Environment (7.11.1): + - PromisesObjC (< 3.0, >= 1.2) + - GoogleUtilities/Logger (7.11.1): + - GoogleUtilities/Environment + - "GoogleUtilities/NSData+zlib (7.11.1)" + - "gRPC-C++ (1.50.1)": + - "gRPC-C++/Implementation (= 1.50.1)" + - "gRPC-C++/Interface (= 1.50.1)" + - "gRPC-C++/Implementation (1.50.1)": + - abseil/base/base (= 1.20220623.0) + - abseil/base/core_headers (= 1.20220623.0) + - abseil/cleanup/cleanup (= 1.20220623.0) + - abseil/container/flat_hash_map (= 1.20220623.0) + - abseil/container/flat_hash_set (= 1.20220623.0) + - abseil/container/inlined_vector (= 1.20220623.0) + - abseil/functional/any_invocable (= 1.20220623.0) + - abseil/functional/bind_front (= 1.20220623.0) + - abseil/functional/function_ref (= 1.20220623.0) + - abseil/hash/hash (= 1.20220623.0) + - abseil/memory/memory (= 1.20220623.0) + - abseil/meta/type_traits (= 1.20220623.0) + - abseil/random/random (= 1.20220623.0) + - abseil/status/status (= 1.20220623.0) + - abseil/status/statusor (= 1.20220623.0) + - abseil/strings/cord (= 1.20220623.0) + - abseil/strings/str_format (= 1.20220623.0) + - abseil/strings/strings (= 1.20220623.0) + - abseil/synchronization/synchronization (= 1.20220623.0) + - abseil/time/time (= 1.20220623.0) + - abseil/types/optional (= 1.20220623.0) + - abseil/types/span (= 1.20220623.0) + - abseil/types/variant (= 1.20220623.0) + - abseil/utility/utility (= 1.20220623.0) + - "gRPC-C++/Interface (= 1.50.1)" + - gRPC-Core (= 1.50.1) + - "gRPC-C++/Interface (1.50.1)" + - gRPC-Core (1.50.1): + - gRPC-Core/Implementation (= 1.50.1) + - gRPC-Core/Interface (= 1.50.1) + - gRPC-Core/Implementation (1.50.1): + - abseil/base/base (= 1.20220623.0) + - abseil/base/core_headers (= 1.20220623.0) + - abseil/container/flat_hash_map (= 1.20220623.0) + - abseil/container/flat_hash_set (= 1.20220623.0) + - abseil/container/inlined_vector (= 1.20220623.0) + - abseil/functional/any_invocable (= 1.20220623.0) + - abseil/functional/bind_front (= 1.20220623.0) + - abseil/functional/function_ref (= 1.20220623.0) + - abseil/hash/hash (= 1.20220623.0) + - abseil/memory/memory (= 1.20220623.0) + - abseil/meta/type_traits (= 1.20220623.0) + - abseil/random/random (= 1.20220623.0) + - abseil/status/status (= 1.20220623.0) + - abseil/status/statusor (= 1.20220623.0) + - abseil/strings/cord (= 1.20220623.0) + - abseil/strings/str_format (= 1.20220623.0) + - abseil/strings/strings (= 1.20220623.0) + - abseil/synchronization/synchronization (= 1.20220623.0) + - abseil/time/time (= 1.20220623.0) + - abseil/types/optional (= 1.20220623.0) + - abseil/types/span (= 1.20220623.0) + - abseil/types/variant (= 1.20220623.0) + - abseil/utility/utility (= 1.20220623.0) + - BoringSSL-GRPC (= 0.0.24) + - gRPC-Core/Interface (= 1.50.1) + - gRPC-Core/Interface (1.50.1) + - leveldb-library (1.22.2) + - nanopb (2.30909.0): + - nanopb/decode (= 2.30909.0) + - nanopb/encode (= 2.30909.0) + - nanopb/decode (2.30909.0) + - nanopb/encode (2.30909.0) + - PromisesObjC (2.2.0) + - shared (1.0.0): + - FirebaseCore + - FirebaseFirestore + - WebRTC-SDK (= 114.5735.01) + - WebRTC-SDK (114.5735.01) + +DEPENDENCIES: + - shared (from `../shared`) + +SPEC REPOS: + trunk: + - abseil + - BoringSSL-GRPC + - FirebaseCore + - FirebaseCoreInternal + - FirebaseFirestore + - GoogleUtilities + - "gRPC-C++" + - gRPC-Core + - leveldb-library + - nanopb + - PromisesObjC + - WebRTC-SDK + +EXTERNAL SOURCES: + shared: + :path: "../shared" + +SPEC CHECKSUMS: + abseil: 926fb7a82dc6d2b8e1f2ed7f3a718bce691d1e46 + BoringSSL-GRPC: 3175b25143e648463a56daeaaa499c6cb86dad33 + FirebaseCore: 62fd4d549f5e3f3bd52b7998721c5fa0557fb355 + FirebaseCoreInternal: 9e46c82a14a3b3a25be4e1e151ce6d21536b89c0 + FirebaseFirestore: 09be82b113fbcb225b9797d2c525ae8886abc7a3 + GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749 + "gRPC-C++": 0968bace703459fd3e5dcb0b2bed4c573dbff046 + gRPC-Core: 17108291d84332196d3c8466b48f016fc17d816d + leveldb-library: f03246171cce0484482ec291f88b6d563699ee06 + nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 + PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef + shared: 054ed1491119b52792e728f3e3b868f6226e3fbd + WebRTC-SDK: 31abfb47b8e9ed5e27a2c46baa61015587dda966 + +PODFILE CHECKSUM: 3e1aeaf026481ddd55fda33f4e383d5f946f64da + +COCOAPODS: 1.12.1 diff --git a/sample/app-ios/app-ios.xcodeproj/project.pbxproj b/sample/app-ios/app-ios.xcodeproj/project.pbxproj index 40851c2e..1272d8fb 100644 --- a/sample/app-ios/app-ios.xcodeproj/project.pbxproj +++ b/sample/app-ios/app-ios.xcodeproj/project.pbxproj @@ -7,32 +7,13 @@ objects = { /* Begin PBXBuildFile section */ + 6ACDDCE04906D276376CC975 /* Pods_app_ios.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3341A31D5C24E958B40A16B /* Pods_app_ios.framework */; }; FA11F3382899C22A00676143 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA11F3372899C22A00676143 /* AppDelegate.swift */; }; FA11F33A2899C22A00676143 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA11F3392899C22A00676143 /* SceneDelegate.swift */; }; FA11F33C2899C22A00676143 /* StartViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA11F33B2899C22A00676143 /* StartViewController.swift */; }; FA11F33F2899C22B00676143 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA11F33D2899C22B00676143 /* Main.storyboard */; }; FA11F3412899C22C00676143 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FA11F3402899C22C00676143 /* Assets.xcassets */; }; FA11F3442899C22C00676143 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FA11F3422899C22C00676143 /* LaunchScreen.storyboard */; }; - FA9BD2A228E0A17700E7A36C /* WebRTC.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2A128E0A17700E7A36C /* WebRTC.xcframework */; }; - FA9BD2A328E0A17700E7A36C /* WebRTC.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2A128E0A17700E7A36C /* WebRTC.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - FA9BD2A928E0A1CE00E7A36C /* nanopb.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2A528E0A1CD00E7A36C /* nanopb.xcframework */; }; - FA9BD2AB28E0A1CE00E7A36C /* PromisesObjC.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2A628E0A1CD00E7A36C /* PromisesObjC.xcframework */; }; - FA9BD2AD28E0A1CE00E7A36C /* leveldb-library.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2A728E0A1CD00E7A36C /* leveldb-library.xcframework */; }; - FA9BD2AF28E0A1CE00E7A36C /* Libuv-gRPC.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2A828E0A1CD00E7A36C /* Libuv-gRPC.xcframework */; }; - FA9BD2BE28E0A1E800E7A36C /* FirebaseCoreDiagnostics.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B128E0A1E800E7A36C /* FirebaseCoreDiagnostics.xcframework */; }; - FA9BD2C028E0A1E800E7A36C /* GoogleAppMeasurement.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B228E0A1E800E7A36C /* GoogleAppMeasurement.xcframework */; }; - FA9BD2C228E0A1E800E7A36C /* FirebaseAnalytics.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B328E0A1E800E7A36C /* FirebaseAnalytics.xcframework */; }; - FA9BD2C428E0A1E800E7A36C /* FirebaseCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B428E0A1E800E7A36C /* FirebaseCore.xcframework */; }; - FA9BD2C628E0A1E800E7A36C /* abseil.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B528E0A1E800E7A36C /* abseil.xcframework */; }; - FA9BD2C828E0A1E800E7A36C /* gRPC-Core.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B628E0A1E800E7A36C /* gRPC-Core.xcframework */; }; - FA9BD2CA28E0A1E800E7A36C /* GoogleUtilities.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B728E0A1E800E7A36C /* GoogleUtilities.xcframework */; }; - FA9BD2CC28E0A1E800E7A36C /* FirebaseInstallations.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B828E0A1E800E7A36C /* FirebaseInstallations.xcframework */; }; - FA9BD2CE28E0A1E800E7A36C /* FirebaseFirestore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2B928E0A1E800E7A36C /* FirebaseFirestore.xcframework */; }; - FA9BD2D028E0A1E800E7A36C /* GoogleAppMeasurementIdentitySupport.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2BA28E0A1E800E7A36C /* GoogleAppMeasurementIdentitySupport.xcframework */; }; - FA9BD2D228E0A1E800E7A36C /* gRPC-C++.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2BB28E0A1E800E7A36C /* gRPC-C++.xcframework */; }; - FA9BD2D428E0A1E900E7A36C /* BoringSSL-GRPC.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2BC28E0A1E800E7A36C /* BoringSSL-GRPC.xcframework */; }; - FA9BD2D628E0A1E900E7A36C /* GoogleDataTransport.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9BD2BD28E0A1E800E7A36C /* GoogleDataTransport.xcframework */; }; - FAA7FDE128A1441000AC5647 /* shared.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA11F3532899D36600676143 /* shared.xcframework */; }; FAAF8FF7289A988C004FB1B1 /* RoomViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAAF8FF6289A988C004FB1B1 /* RoomViewController.swift */; }; FAFB7A41289BF42C002B18FD /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = FAFB7A40289BF42C002B18FD /* GoogleService-Info.plist */; }; /* End PBXBuildFile section */ @@ -44,7 +25,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - FA9BD2A328E0A17700E7A36C /* WebRTC.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -52,6 +32,9 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 5D7E487A4CEE7EB53148FE53 /* Pods-app-ios.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-ios.debug.xcconfig"; path = "Target Support Files/Pods-app-ios/Pods-app-ios.debug.xcconfig"; sourceTree = ""; }; + 7BFC8A98B5397F3BAC737F4D /* Pods-app-ios.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-app-ios.release.xcconfig"; path = "Target Support Files/Pods-app-ios/Pods-app-ios.release.xcconfig"; sourceTree = ""; }; + F3341A31D5C24E958B40A16B /* Pods_app_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_app_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; FA11F3342899C22A00676143 /* app-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "app-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; }; FA11F3372899C22A00676143 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; FA11F3392899C22A00676143 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -60,25 +43,6 @@ FA11F3402899C22C00676143 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; FA11F3432899C22C00676143 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; FA11F3452899C22C00676143 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - FA11F3532899D36600676143 /* shared.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = shared.xcframework; path = ../shared/build/XCFrameworks/debug/shared.xcframework; sourceTree = ""; }; - FA9BD2A128E0A17700E7A36C /* WebRTC.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = WebRTC.xcframework; path = ../../Carthage/Build/WebRTC.xcframework; sourceTree = ""; }; - FA9BD2A528E0A1CD00E7A36C /* nanopb.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = nanopb.xcframework; path = ../../Carthage/Build/nanopb.xcframework; sourceTree = ""; }; - FA9BD2A628E0A1CD00E7A36C /* PromisesObjC.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PromisesObjC.xcframework; path = ../../Carthage/Build/PromisesObjC.xcframework; sourceTree = ""; }; - FA9BD2A728E0A1CD00E7A36C /* leveldb-library.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "leveldb-library.xcframework"; path = "../../Carthage/Build/leveldb-library.xcframework"; sourceTree = ""; }; - FA9BD2A828E0A1CD00E7A36C /* Libuv-gRPC.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "Libuv-gRPC.xcframework"; path = "../../Carthage/Build/Libuv-gRPC.xcframework"; sourceTree = ""; }; - FA9BD2B128E0A1E800E7A36C /* FirebaseCoreDiagnostics.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = FirebaseCoreDiagnostics.xcframework; path = ../../Carthage/Build/FirebaseCoreDiagnostics.xcframework; sourceTree = ""; }; - FA9BD2B228E0A1E800E7A36C /* GoogleAppMeasurement.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = GoogleAppMeasurement.xcframework; path = ../../Carthage/Build/GoogleAppMeasurement.xcframework; sourceTree = ""; }; - FA9BD2B328E0A1E800E7A36C /* FirebaseAnalytics.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = FirebaseAnalytics.xcframework; path = ../../Carthage/Build/FirebaseAnalytics.xcframework; sourceTree = ""; }; - FA9BD2B428E0A1E800E7A36C /* FirebaseCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = FirebaseCore.xcframework; path = ../../Carthage/Build/FirebaseCore.xcframework; sourceTree = ""; }; - FA9BD2B528E0A1E800E7A36C /* abseil.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = abseil.xcframework; path = ../../Carthage/Build/abseil.xcframework; sourceTree = ""; }; - FA9BD2B628E0A1E800E7A36C /* gRPC-Core.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "gRPC-Core.xcframework"; path = "../../Carthage/Build/gRPC-Core.xcframework"; sourceTree = ""; }; - FA9BD2B728E0A1E800E7A36C /* GoogleUtilities.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = GoogleUtilities.xcframework; path = ../../Carthage/Build/GoogleUtilities.xcframework; sourceTree = ""; }; - FA9BD2B828E0A1E800E7A36C /* FirebaseInstallations.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = FirebaseInstallations.xcframework; path = ../../Carthage/Build/FirebaseInstallations.xcframework; sourceTree = ""; }; - FA9BD2B928E0A1E800E7A36C /* FirebaseFirestore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = FirebaseFirestore.xcframework; path = ../../Carthage/Build/FirebaseFirestore.xcframework; sourceTree = ""; }; - FA9BD2BA28E0A1E800E7A36C /* GoogleAppMeasurementIdentitySupport.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = GoogleAppMeasurementIdentitySupport.xcframework; path = ../../Carthage/Build/GoogleAppMeasurementIdentitySupport.xcframework; sourceTree = ""; }; - FA9BD2BB28E0A1E800E7A36C /* gRPC-C++.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "gRPC-C++.xcframework"; path = "../../Carthage/Build/gRPC-C++.xcframework"; sourceTree = ""; }; - FA9BD2BC28E0A1E800E7A36C /* BoringSSL-GRPC.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "BoringSSL-GRPC.xcframework"; path = "../../Carthage/Build/BoringSSL-GRPC.xcframework"; sourceTree = ""; }; - FA9BD2BD28E0A1E800E7A36C /* GoogleDataTransport.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = GoogleDataTransport.xcframework; path = ../../Carthage/Build/GoogleDataTransport.xcframework; sourceTree = ""; }; FAAF8FF6289A988C004FB1B1 /* RoomViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomViewController.swift; sourceTree = ""; }; FAFB7A40289BF42C002B18FD /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -88,37 +52,29 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FA9BD2A928E0A1CE00E7A36C /* nanopb.xcframework in Frameworks */, - FA9BD2D028E0A1E800E7A36C /* GoogleAppMeasurementIdentitySupport.xcframework in Frameworks */, - FA9BD2A228E0A17700E7A36C /* WebRTC.xcframework in Frameworks */, - FA9BD2C828E0A1E800E7A36C /* gRPC-Core.xcframework in Frameworks */, - FA9BD2CA28E0A1E800E7A36C /* GoogleUtilities.xcframework in Frameworks */, - FA9BD2D228E0A1E800E7A36C /* gRPC-C++.xcframework in Frameworks */, - FA9BD2CC28E0A1E800E7A36C /* FirebaseInstallations.xcframework in Frameworks */, - FA9BD2D428E0A1E900E7A36C /* BoringSSL-GRPC.xcframework in Frameworks */, - FA9BD2CE28E0A1E800E7A36C /* FirebaseFirestore.xcframework in Frameworks */, - FAA7FDE128A1441000AC5647 /* shared.xcframework in Frameworks */, - FA9BD2AB28E0A1CE00E7A36C /* PromisesObjC.xcframework in Frameworks */, - FA9BD2AF28E0A1CE00E7A36C /* Libuv-gRPC.xcframework in Frameworks */, - FA9BD2C228E0A1E800E7A36C /* FirebaseAnalytics.xcframework in Frameworks */, - FA9BD2BE28E0A1E800E7A36C /* FirebaseCoreDiagnostics.xcframework in Frameworks */, - FA9BD2C428E0A1E800E7A36C /* FirebaseCore.xcframework in Frameworks */, - FA9BD2C628E0A1E800E7A36C /* abseil.xcframework in Frameworks */, - FA9BD2C028E0A1E800E7A36C /* GoogleAppMeasurement.xcframework in Frameworks */, - FA9BD2AD28E0A1CE00E7A36C /* leveldb-library.xcframework in Frameworks */, - FA9BD2D628E0A1E900E7A36C /* GoogleDataTransport.xcframework in Frameworks */, + 6ACDDCE04906D276376CC975 /* Pods_app_ios.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 043F32BC1BEEF67A45BD5794 /* Pods */ = { + isa = PBXGroup; + children = ( + 5D7E487A4CEE7EB53148FE53 /* Pods-app-ios.debug.xcconfig */, + 7BFC8A98B5397F3BAC737F4D /* Pods-app-ios.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; FA11F32B2899C22A00676143 = { isa = PBXGroup; children = ( FA11F3362899C22A00676143 /* app-ios */, FA11F3352899C22A00676143 /* Products */, FA11F34B2899C70E00676143 /* Frameworks */, + 043F32BC1BEEF67A45BD5794 /* Pods */, ); sourceTree = ""; }; @@ -149,25 +105,7 @@ FA11F34B2899C70E00676143 /* Frameworks */ = { isa = PBXGroup; children = ( - FA9BD2B528E0A1E800E7A36C /* abseil.xcframework */, - FA9BD2BC28E0A1E800E7A36C /* BoringSSL-GRPC.xcframework */, - FA9BD2B328E0A1E800E7A36C /* FirebaseAnalytics.xcframework */, - FA9BD2B428E0A1E800E7A36C /* FirebaseCore.xcframework */, - FA9BD2B128E0A1E800E7A36C /* FirebaseCoreDiagnostics.xcframework */, - FA9BD2B928E0A1E800E7A36C /* FirebaseFirestore.xcframework */, - FA9BD2B828E0A1E800E7A36C /* FirebaseInstallations.xcframework */, - FA9BD2B228E0A1E800E7A36C /* GoogleAppMeasurement.xcframework */, - FA9BD2BA28E0A1E800E7A36C /* GoogleAppMeasurementIdentitySupport.xcframework */, - FA9BD2BD28E0A1E800E7A36C /* GoogleDataTransport.xcframework */, - FA9BD2B728E0A1E800E7A36C /* GoogleUtilities.xcframework */, - FA9BD2BB28E0A1E800E7A36C /* gRPC-C++.xcframework */, - FA9BD2B628E0A1E800E7A36C /* gRPC-Core.xcframework */, - FA9BD2A728E0A1CD00E7A36C /* leveldb-library.xcframework */, - FA9BD2A828E0A1CD00E7A36C /* Libuv-gRPC.xcframework */, - FA9BD2A528E0A1CD00E7A36C /* nanopb.xcframework */, - FA9BD2A628E0A1CD00E7A36C /* PromisesObjC.xcframework */, - FA9BD2A128E0A17700E7A36C /* WebRTC.xcframework */, - FA11F3532899D36600676143 /* shared.xcframework */, + F3341A31D5C24E958B40A16B /* Pods_app_ios.framework */, ); name = Frameworks; sourceTree = ""; @@ -179,10 +117,12 @@ isa = PBXNativeTarget; buildConfigurationList = FA11F3482899C22C00676143 /* Build configuration list for PBXNativeTarget "app-ios" */; buildPhases = ( + C3DBAC6BF516EA57841C92C2 /* [CP] Check Pods Manifest.lock */, FA11F3302899C22A00676143 /* Sources */, FA11F3312899C22A00676143 /* Frameworks */, FA11F3322899C22A00676143 /* Resources */, FA9BD2A428E0A17700E7A36C /* Embed Frameworks */, + 12628261B270E57875EAEDFA /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -240,6 +180,48 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 12628261B270E57875EAEDFA /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-app-ios/Pods-app-ios-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-app-ios/Pods-app-ios-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-app-ios/Pods-app-ios-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + C3DBAC6BF516EA57841C92C2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-app-ios-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; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ FA11F3302899C22A00676143 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -390,6 +372,7 @@ }; FA11F3492899C22C00676143 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5D7E487A4CEE7EB53148FE53 /* Pods-app-ios.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -419,7 +402,7 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.shepeliev.webrtckmp.sample; + PRODUCT_BUNDLE_IDENTIFIER = com.shepeliev.webrtckmp.sampleapp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_EMIT_LOC_STRINGS = YES; @@ -430,6 +413,7 @@ }; FA11F34A2899C22C00676143 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7BFC8A98B5397F3BAC737F4D /* Pods-app-ios.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -459,7 +443,7 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = com.shepeliev.webrtckmp.sample; + PRODUCT_BUNDLE_IDENTIFIER = com.shepeliev.webrtckmp.sampleapp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/sample/app-ios/app-ios.xcworkspace/contents.xcworkspacedata b/sample/app-ios/app-ios.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..ad23cfa3 --- /dev/null +++ b/sample/app-ios/app-ios.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/sample/app-ios/app-ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/sample/app-ios/app-ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/sample/app-ios/app-ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts index b685b2df..898919f6 100644 --- a/sample/shared/build.gradle.kts +++ b/sample/shared/build.gradle.kts @@ -1,21 +1,39 @@ -import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework -import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFrameworkConfig +import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType plugins { id("multiplatform-setup") + kotlin("native.cocoapods") } kotlin { - val xcf = XCFramework() + cocoapods { + version = "1.0.0" + summary = "Shared framework for WebRTC KMP sample" + homepage = "not published" + ios.deploymentTarget = "11.0" + + pod("FirebaseCore") + pod("FirebaseFirestore") + pod("WebRTC-SDK") { + version = "114.5735.01" + linkOnly = true + } + + podfile = project.file("../app-ios/Podfile") - ios { configureIos(xcf) } - iosSimulatorArm64 { configureIos(xcf) } + framework { + baseName = "shared" + export(project(":webrtc-kmp")) + export(deps.decompose) + transitiveExport = true + } - sourceSets { - val iosMain by getting - val iosSimulatorArm64Main by getting - iosSimulatorArm64Main.dependsOn(iosMain) + xcodeConfigurationToNativeBuildType["CUSTOM_DEBUG"] = NativeBuildType.DEBUG + xcodeConfigurationToNativeBuildType["CUSTOM_RELEASE"] = NativeBuildType.RELEASE } + + ios() + iosSimulatorArm64() } android { @@ -32,37 +50,3 @@ dependencies { androidMainImplementation(deps.kotlin.coroutinesPlayServices) jsMainImplementation(npm("firebase", version = "9.9.1")) } - -fun org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget.configureIos(xcf: XCFrameworkConfig) { - val frameworks = getFrameworks(konanTarget).filterKeys { it != "WebRTC" } - - compilations.getByName("main") { - cinterops.create("FirebaseCore") { - frameworks.forEach { (framework, path) -> - compilerOpts("-framework", framework, "-F$path") - } - } - - cinterops.create("FirebaseFirestore") { - frameworks.forEach { (framework, path) -> - compilerOpts("-framework", framework, "-F$path") - } - } - } - - binaries.framework { - baseName = "shared" - xcf.add(this) - - export(project(":webrtc-kmp")) - export(deps.decompose) - transitiveExport = true - isStatic = true - - frameworks.forEach { (framework, path) -> - linkerOpts("-framework", framework, "-F$path") - } - - linkerOpts("-ObjC") - } -} diff --git a/sample/shared/shared.podspec b/sample/shared/shared.podspec new file mode 100644 index 00000000..2d47c2fb --- /dev/null +++ b/sample/shared/shared.podspec @@ -0,0 +1,41 @@ +Pod::Spec.new do |spec| + spec.name = 'shared' + spec.version = '1.0.0' + spec.homepage = 'not published' + spec.source = { :http=> ''} + spec.authors = '' + spec.license = '' + spec.summary = 'Shared framework for WebRTC KMP sample' + spec.vendored_frameworks = 'build/cocoapods/framework/shared.framework' + spec.libraries = 'c++' + spec.ios.deployment_target = '11.0' + spec.dependency 'FirebaseCore' + spec.dependency 'FirebaseFirestore' + spec.dependency 'WebRTC-SDK', '114.5735.01' + + spec.pod_target_xcconfig = { + 'KOTLIN_PROJECT_PATH' => ':sample:shared', + 'PRODUCT_MODULE_NAME' => 'shared', + } + + spec.script_phases = [ + { + :name => 'Build shared', + :execution_position => :before_compile, + :shell_path => '/bin/sh', + :script => <<-SCRIPT + if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then + echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED 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" + SCRIPT + } + ] + +end \ No newline at end of file diff --git a/sample/shared/src/iosMain/kotlin/com/shepeliev/webrtckmp/sample/shared/RoomDataSource.kt b/sample/shared/src/iosMain/kotlin/com/shepeliev/webrtckmp/sample/shared/RoomDataSource.kt index d0e75d84..22601538 100644 --- a/sample/shared/src/iosMain/kotlin/com/shepeliev/webrtckmp/sample/shared/RoomDataSource.kt +++ b/sample/shared/src/iosMain/kotlin/com/shepeliev/webrtckmp/sample/shared/RoomDataSource.kt @@ -1,11 +1,11 @@ package com.shepeliev.webrtckmp.sample.shared -import FirebaseCore.FIRApp -import FirebaseFirestore.FIRDocumentChange -import FirebaseFirestore.FIRDocumentChangeType -import FirebaseFirestore.FIRDocumentSnapshot -import FirebaseFirestore.FIRFirestore -import FirebaseFirestore.FIRQuerySnapshot +import cocoapods.FirebaseCore.FIRApp +import cocoapods.FirebaseFirestore.FIRDocumentChange +import cocoapods.FirebaseFirestore.FIRDocumentChangeType +import cocoapods.FirebaseFirestore.FIRDocumentSnapshot +import cocoapods.FirebaseFirestore.FIRFirestore +import cocoapods.FirebaseFirestore.FIRQuerySnapshot import com.shepeliev.webrtckmp.SessionDescription import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow diff --git a/webrtc-kmp/build.gradle.kts b/webrtc-kmp/build.gradle.kts index f775c475..10471b4b 100644 --- a/webrtc-kmp/build.gradle.kts +++ b/webrtc-kmp/build.gradle.kts @@ -1,5 +1,6 @@ plugins { id("multiplatform-setup") + kotlin("native.cocoapods") id("maven-publish") id("signing") } @@ -10,11 +11,29 @@ val webRtcKmpVersion: String by properties version = webRtcKmpVersion kotlin { + cocoapods { + version = webRtcKmpVersion + summary = "WebRTC Kotlin Multiplatform SDK" + homepage = "https://github.com/shepeliev/webrtc-kmp" + ios.deploymentTarget = "10.0" + + specRepos { + url("https://github.com/webrtc-sdk/Specs.git") + } + + pod("WebRTC-SDK") { + version = "114.5735.01" + moduleName = "WebRTC" + packageName = "WebRTC" + } + } + android { publishAllLibraryVariants() } - iosSimulatorArm64 { configureIos() } + ios { configureIos() } + iosSimulatorArm64 { configureIos() } sourceSets { val iosMain by getting @@ -93,21 +112,24 @@ signing { } fun org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget.configureIos() { - val frameworks = getFrameworks(konanTarget).filterKeys { it == "WebRTC" } - + val webRtcFrameworkPath = file("$buildDir/cocoapods/synthetic/IOS/Pods/WebRTC-SDK") + .resolveArchPath(konanTarget, "WebRTC") compilations.getByName("main") { - cinterops.create("WebRTC") { - frameworks.forEach { (framework, path) -> - compilerOpts("-framework", framework, "-F$path") - } + cinterops.getByName("WebRTC") { + compilerOpts("-framework", "WebRTC", "-F$webRtcFrameworkPath") } } binaries { getTest("DEBUG").apply { - frameworks.forEach { (framework, path) -> - linkerOpts("-framework", framework, "-F$path", "-rpath", "$path", "-ObjC") - } + linkerOpts( + "-framework", + "WebRTC", + "-F$webRtcFrameworkPath", + "-rpath", + "$webRtcFrameworkPath", + "-ObjC" + ) } } } diff --git a/webrtc-kmp/webrtc_kmp.podspec b/webrtc-kmp/webrtc_kmp.podspec new file mode 100644 index 00000000..e12b0ed1 --- /dev/null +++ b/webrtc-kmp/webrtc_kmp.podspec @@ -0,0 +1,39 @@ +Pod::Spec.new do |spec| + spec.name = 'webrtc_kmp' + spec.version = '0.114.1' + spec.homepage = 'https://github.com/shepeliev/webrtc-kmp' + spec.source = { :http=> ''} + spec.authors = '' + spec.license = '' + spec.summary = 'WebRTC Kotlin Multiplatform SDK' + spec.vendored_frameworks = 'build/cocoapods/framework/webrtc_kmp.framework' + spec.libraries = 'c++' + spec.ios.deployment_target = '10.0' + spec.dependency 'WebRTC-SDK', '114.5735.01' + + spec.pod_target_xcconfig = { + 'KOTLIN_PROJECT_PATH' => ':webrtc-kmp', + 'PRODUCT_MODULE_NAME' => 'webrtc_kmp', + } + + spec.script_phases = [ + { + :name => 'Build webrtc_kmp', + :execution_position => :before_compile, + :shell_path => '/bin/sh', + :script => <<-SCRIPT + if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then + echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED 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" + SCRIPT + } + ] + +end \ No newline at end of file From 606d3d5a1cb0123122a911534d2389d5fffe5610 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 14:49:26 +0300 Subject: [PATCH 2/9] Add caches to GitHub actions --- .github/workflows/pull_request.yml | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index a48002ec..bfd2fbad 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -13,10 +13,25 @@ jobs: steps: - uses: actions/checkout@v2 + - name: Cocoapods cache + uses: actions/cache@v3 + id: cocoapods-cache + with: + path: | + ~/.cocoapods + ~/Library/Caches/CocoaPods + */build/cocoapods + */build/classes + key: cocoapods-cache + - name: Set up JDK 17 uses: actions/setup-java@v1 with: java-version: 17 + cache: gradle + + - name: Gradle cache + uses: gradle/gradle-build-action@v2 - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -40,14 +55,8 @@ jobs: name: "Android Instrumented Tests Report HTML" path: "webrtc-kmp/build/reports/androidTests/connected" - - name: Install Carthage - run: brew list carthage || brew install carthage - - - name: Fetch xCode frameworks - run: carthage update --use-xcframeworks - - name: Run iOS tests - run: ./gradlew iosX64Test + run: ./gradlew cleanTest iosX64Test - name: Upload iOS test artifact uses: actions/upload-artifact@v2 @@ -57,7 +66,7 @@ jobs: path: "webrtc-kmp/build/reports/tests/iosX64Test" - name: Run JS tests - run: ./gradlew jsTest + run: ./gradlew cleanTest jsTest - name: Upload JS test artifact uses: actions/upload-artifact@v2 From eba4a5341c88ed2174d7f43afc7c89c8ac037a63 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 15:28:13 +0300 Subject: [PATCH 3/9] Add homepage --- sample/app-ios/Podfile | 3 --- sample/app-ios/Podfile.lock | 4 ++-- sample/app-ios/app-ios.xcodeproj/project.pbxproj | 10 ++-------- sample/shared/build.gradle.kts | 2 +- sample/shared/shared.podspec | 2 +- 5 files changed, 6 insertions(+), 15 deletions(-) diff --git a/sample/app-ios/Podfile b/sample/app-ios/Podfile index b02ca605..223b4909 100644 --- a/sample/app-ios/Podfile +++ b/sample/app-ios/Podfile @@ -1,6 +1,3 @@ -source 'https://cdn.cocoapods.org' -source 'https://github.com/webrtc-sdk/Specs.git' - platform :ios, '11.0' target 'app-ios' do diff --git a/sample/app-ios/Podfile.lock b/sample/app-ios/Podfile.lock index a8b98799..31e66503 100644 --- a/sample/app-ios/Podfile.lock +++ b/sample/app-ios/Podfile.lock @@ -766,9 +766,9 @@ SPEC CHECKSUMS: leveldb-library: f03246171cce0484482ec291f88b6d563699ee06 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef - shared: 054ed1491119b52792e728f3e3b868f6226e3fbd + shared: 4d3c129d9b2f0fb60b9f9ac4b44df7985e8d4aa8 WebRTC-SDK: 31abfb47b8e9ed5e27a2c46baa61015587dda966 -PODFILE CHECKSUM: 3e1aeaf026481ddd55fda33f4e383d5f946f64da +PODFILE CHECKSUM: 0e3d5ba6f75052d9af66e13da5a081f724211aa3 COCOAPODS: 1.12.1 diff --git a/sample/app-ios/app-ios.xcodeproj/project.pbxproj b/sample/app-ios/app-ios.xcodeproj/project.pbxproj index 1272d8fb..81e757c0 100644 --- a/sample/app-ios/app-ios.xcodeproj/project.pbxproj +++ b/sample/app-ios/app-ios.xcodeproj/project.pbxproj @@ -398,10 +398,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.shepeliev.webrtckmp.sampleapp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -439,10 +436,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0; - OTHER_LDFLAGS = ( - "-ObjC", - "-lc++", - ); + OTHER_LDFLAGS = "$(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = com.shepeliev.webrtckmp.sampleapp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts index 898919f6..520c367e 100644 --- a/sample/shared/build.gradle.kts +++ b/sample/shared/build.gradle.kts @@ -9,7 +9,7 @@ kotlin { cocoapods { version = "1.0.0" summary = "Shared framework for WebRTC KMP sample" - homepage = "not published" + homepage = "https://github.com/shepeliev/webrtc-kmp/tree/main/sample" ios.deploymentTarget = "11.0" pod("FirebaseCore") diff --git a/sample/shared/shared.podspec b/sample/shared/shared.podspec index 2d47c2fb..413290eb 100644 --- a/sample/shared/shared.podspec +++ b/sample/shared/shared.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |spec| spec.name = 'shared' spec.version = '1.0.0' - spec.homepage = 'not published' + spec.homepage = 'https://github.com/shepeliev/webrtc-kmp/tree/main/sample' spec.source = { :http=> ''} spec.authors = '' spec.license = '' From 63ed3a7af2e38e199fb8b720449ac7d8f3dc81f1 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 15:28:26 +0300 Subject: [PATCH 4/9] Remove comment --- .github/workflows/pull_request.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index bfd2fbad..16528b7d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -1,6 +1,3 @@ -# This workflow will build a Java project with Gradle -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle - name: Pull Request on: From 82c3cd14fb529bf440433350bd51b6a166104155 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 15:32:06 +0300 Subject: [PATCH 5/9] Update README.md --- README.md | 60 ++++++++++++++++++++++++---------- sample/README.md | 7 +--- sample/shared/build.gradle.kts | 4 +++ 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index b72aec03..85b5d81d 100644 --- a/README.md +++ b/README.md @@ -13,40 +13,64 @@ WebRTC Kotlin Multiplatform SDK Current revision: M114 ## Installation -Root build.gradle.kts - -```Kotlin -allprojects { - repositories { - mavenCentral() - } -} -``` +The library is published to [Maven Central](https://search.maven.org/artifact/com.shepeliev/webrtc-kmp). Shared module build.gradle.kts ```Kotlin kotlin { + cocoapods { + version = "1.0.0" + summary = "Shared module" + homepage = "not published" + ios.deploymentTarget = "10.0" - ios { - binaries - .filterIsInstance() - .forEach { - it.transitiveExport = true - it.export("com.shepeliev:webrtc-kmp:$webRtcKmmVersion") - } + specRepos { + url("https://github.com/webrtc-sdk/Specs.git") + } + + pod("WebRTC-SDK") { + version = "114.5735.01" + linkOnly = true + } + + podfile = project.file("../iosApp/Podfile") + + framework { + baseName = "shared" + export(project(":webrtc-kmp")) + transitiveExport = true + } + + xcodeConfigurationToNativeBuildType["CUSTOM_DEBUG"] = NativeBuildType.DEBUG + xcodeConfigurationToNativeBuildType["CUSTOM_RELEASE"] = NativeBuildType.RELEASE } + + android() + + ios() + + js { + useCommonJs() + browser() + } + sourceSets { val commonMain by getting { dependencies { - api("com.shepeliev:webrtc-kmp:$webRtcKmmVersion") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") + api("com.shepeliev:webrtc-kmp:$webRtcKmpVersion") } } } } ``` +Also add the following to your `Podfile` in the target section: +```Ruby +use_frameworks! +pod 'shared', :path => '../shared' +``` + ## Usage Please reffer to [sample](sample/README.md). diff --git a/sample/README.md b/sample/README.md index 39706cde..4517766c 100644 --- a/sample/README.md +++ b/sample/README.md @@ -7,7 +7,6 @@ Demo application for WebRTC KMP. ```bash git clone https://github.com/shepeliev/webrtc-kmp.git cd webrtc-kmp -carthage update --use-xcframeworks ``` ### Android @@ -20,11 +19,7 @@ Run Android emulator or connect real device. ### iOS -```bash -./gradlew assembleSharedDebugXCFramework -``` - -Then open `sample/app-ios/app-ios.xcodeproj` in XCode build and run +Open `sample/app-ios/app-ios.xcworkspace` in XCode build and run ### Web diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts index 520c367e..8d1e888d 100644 --- a/sample/shared/build.gradle.kts +++ b/sample/shared/build.gradle.kts @@ -12,6 +12,10 @@ kotlin { homepage = "https://github.com/shepeliev/webrtc-kmp/tree/main/sample" ios.deploymentTarget = "11.0" + specRepos { + url("https://github.com/webrtc-sdk/Specs.git") + } + pod("FirebaseCore") pod("FirebaseFirestore") pod("WebRTC-SDK") { From af3c6507e0b031a8d1a00d7e2f10a753656a9294 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 21:53:27 +0300 Subject: [PATCH 6/9] Fix CI --- buildSrc/src/main/kotlin/FrameworkUtils.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/kotlin/FrameworkUtils.kt b/buildSrc/src/main/kotlin/FrameworkUtils.kt index 4539ccdc..5afd214b 100644 --- a/buildSrc/src/main/kotlin/FrameworkUtils.kt +++ b/buildSrc/src/main/kotlin/FrameworkUtils.kt @@ -2,10 +2,10 @@ import org.gradle.api.Project import org.jetbrains.kotlin.konan.target.KonanTarget import java.io.File -fun File.resolveArchPath(target: KonanTarget, framework: String): File { +fun File.resolveArchPath(target: KonanTarget, framework: String): File? { val archPaths = resolve("$framework.xcframework") .listFiles { _, name -> target.matches(name) } - ?: error("Can't find framework '$framework' for target '${target.name}'") + ?: return null check(archPaths.size == 1) { "Resolving framework '$framework' arch path failed: $archPaths" } From 72161dd16e413a9fe59ef635b9f76e074c6ab1de Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Mon, 10 Jul 2023 23:38:55 +0300 Subject: [PATCH 7/9] Try without spec repo --- sample/shared/build.gradle.kts | 4 ---- webrtc-kmp/build.gradle.kts | 4 ---- 2 files changed, 8 deletions(-) diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts index 8d1e888d..520c367e 100644 --- a/sample/shared/build.gradle.kts +++ b/sample/shared/build.gradle.kts @@ -12,10 +12,6 @@ kotlin { homepage = "https://github.com/shepeliev/webrtc-kmp/tree/main/sample" ios.deploymentTarget = "11.0" - specRepos { - url("https://github.com/webrtc-sdk/Specs.git") - } - pod("FirebaseCore") pod("FirebaseFirestore") pod("WebRTC-SDK") { diff --git a/webrtc-kmp/build.gradle.kts b/webrtc-kmp/build.gradle.kts index 10471b4b..efc35fbe 100644 --- a/webrtc-kmp/build.gradle.kts +++ b/webrtc-kmp/build.gradle.kts @@ -17,10 +17,6 @@ kotlin { homepage = "https://github.com/shepeliev/webrtc-kmp" ios.deploymentTarget = "10.0" - specRepos { - url("https://github.com/webrtc-sdk/Specs.git") - } - pod("WebRTC-SDK") { version = "114.5735.01" moduleName = "WebRTC" From 291986e9a3dd3247e7460588c600ab441263f8e7 Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Tue, 11 Jul 2023 00:04:25 +0300 Subject: [PATCH 8/9] Test webrtc-kmp module only --- .github/workflows/pull_request.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 16528b7d..5328bd66 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -43,7 +43,7 @@ jobs: target: google_apis arch: x86_64 profile: Nexus 6 - script: ./gradlew connectedAndroidTest + script: ./gradlew webrtc-kmp:connectedAndroidTest - name: Upload Android test artifact uses: actions/upload-artifact@v2 @@ -53,7 +53,7 @@ jobs: path: "webrtc-kmp/build/reports/androidTests/connected" - name: Run iOS tests - run: ./gradlew cleanTest iosX64Test + run: ./gradlew cleanTest webrtc-kmp:iosX64Test - name: Upload iOS test artifact uses: actions/upload-artifact@v2 @@ -63,7 +63,7 @@ jobs: path: "webrtc-kmp/build/reports/tests/iosX64Test" - name: Run JS tests - run: ./gradlew cleanTest jsTest + run: ./gradlew cleanTest webrtc-kmp:jsTest - name: Upload JS test artifact uses: actions/upload-artifact@v2 From b45c40b96f2bbe543e57887543962283ee910bff Mon Sep 17 00:00:00 2001 From: Alex Shepeliev Date: Wed, 12 Jul 2023 00:13:52 +0300 Subject: [PATCH 9/9] Fix source sets --- sample/shared/build.gradle.kts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sample/shared/build.gradle.kts b/sample/shared/build.gradle.kts index 520c367e..85ffcb6a 100644 --- a/sample/shared/build.gradle.kts +++ b/sample/shared/build.gradle.kts @@ -34,6 +34,16 @@ kotlin { ios() iosSimulatorArm64() + + sourceSets { + val iosMain by getting + val iosSimulatorArm64Main by getting + iosSimulatorArm64Main.dependsOn(iosMain) + + val iosTest by getting + val iosSimulatorArm64Test by getting + iosSimulatorArm64Test.dependsOn(iosTest) + } } android {