diff --git a/.tool-versions b/.tool-versions index 8b0643d..928fe3f 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ java openjdk-17 -ruby 2.7.5 +ruby 3.2.2 diff --git a/Gemfile b/Gemfile index 80c5fc3..0166ca6 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,5 @@ source 'https://rubygems.org' -gem 'cocoapods', '~> 1.12', '>= 1.12.1' -gem 'cocoapods-generate', '~> 2.2', '>= 2.2.4' +gem 'cocoapods', '~> 1.13' +gem 'cocoapods-generate', '~> 2.2' +gem 'activesupport', '7.0.8' # Temporary workaround to fix cocoapods plugin crashing with v7.1.1 diff --git a/Gemfile.lock b/Gemfile.lock index 09f06ed..46fca56 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,22 +3,22 @@ GEM specs: CFPropertyList (3.0.6) rexml - activesupport (7.0.5) + activesupport (7.0.8) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) tzinfo (~> 2.0) - addressable (2.8.4) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) atomos (0.1.3) claide (1.1.0) - cocoapods (1.12.1) + cocoapods (1.13.0) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.12.1) + cocoapods-core (= 1.13.0) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 1.6.0, < 2.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -32,8 +32,8 @@ GEM molinillo (~> 0.8.0) nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) - xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.12.1) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.13.0) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -60,7 +60,7 @@ GEM escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - ffi (1.15.5) + ffi (1.16.3) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) @@ -68,19 +68,19 @@ GEM i18n (1.14.1) concurrent-ruby (~> 1.0) json (2.6.3) - minitest (5.18.1) + minitest (5.20.0) molinillo (0.8.0) nanaimo (0.3.0) nap (1.1.0) netrc (0.11.0) public_suffix (4.0.7) - rexml (3.2.5) + rexml (3.2.6) ruby-macho (2.5.1) typhoeus (1.4.0) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - xcodeproj (1.22.0) + xcodeproj (1.23.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) @@ -92,8 +92,9 @@ PLATFORMS ruby DEPENDENCIES - cocoapods (~> 1.12, >= 1.12.1) - cocoapods-generate (~> 2.2, >= 2.2.4) + activesupport (= 7.0.8) + cocoapods (~> 1.13) + cocoapods-generate (~> 2.2) BUNDLED WITH 2.4.8 diff --git a/README.md b/README.md index ce283f3..be9aa20 100644 --- a/README.md +++ b/README.md @@ -53,17 +53,22 @@ This boilerplate comes with batteries included, you’ll find: ### Building the project +Make sure you have [Bundler](https://rubygems.org/gems/bundler) installed (`gem install bundler`) + #### Android -1. Open the root folder using [Android Studio](https://developer.android.com/studio) -2. Run the app on your device or simulator 🚀 +1. Install shared code specific gems at the root of the project (`bundle install`) +2. Open the root folder using [Android Studio](https://developer.android.com/studio) +3. Sync Gradle dependencies +4. Build and run the app on your device or simulator 🚀 #### iOS -1. Open the [workspace](./ios/iosApp.xcworkspace) using [Xcode](https://developer.apple.com/xcode/) +1. Install iOS specific gems in the `/ios` folder (`cd ios && bundle install`) +2. Open the [workspace](./ios/iosApp.xcworkspace) using [Xcode](https://developer.apple.com/xcode/) or [AppCode](https://www.jetbrains.com/objc/) -2. Specify your Development Team under the `Signing and Capabilities` tab of the `iosApp` target -3. Run the app on your device or simulator 🚀 +3. Specify your Development Team under the `Signing and Capabilities` tab of the `iosApp` target +4. Build and run the app on your device or simulator 🚀 ## Preferred libraries diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 990202b..9d4863e 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -3,6 +3,10 @@ plugins { alias(libs.plugins.kotlin.android) } +kotlin { + jvmToolchain(17) +} + android { namespace = "com.mirego.kmp.boilerplate" compileSdk = 34 @@ -37,10 +41,6 @@ android { composeOptions { kotlinCompilerExtensionVersion = libs.versions.androidComposeCompiler.get() } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 - } packaging { // Do not include coroutines debug infrastructure in the resulting APK // See https://github.com/Kotlin/kotlinx.coroutines#avoiding-including-the-debug-infrastructure-in-the-resulting-apk diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4796deb..20dfc7f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,13 @@ [versions] androidComposeCompiler = "1.5.3" -androidGradlePlugin = "8.1.1" -androidxActivityCompose = "1.7.2" +androidGradlePlugin = "8.1.2" +androidxActivityCompose = "1.8.0" androidxAppcompat = "1.6.1" -androidxComposeBom = "2023.08.00" +androidxComposeBom = "2023.10.01" kotlin = "1.9.10" kotlinxCoroutines = "1.7.3" kotlinxSerialization = "1.6.0" -ktlint = "11.5.1" +ktlint = "11.6.1" [libraries] androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidxActivityCompose" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 86a7c96..7cd02cf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Thu Aug 31 10:40:08 EDT 2023 +#Thu Oct 12 13:41:45 EDT 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip diff --git a/ios/.tool-versions b/ios/.tool-versions new file mode 100644 index 0000000..f2a971a --- /dev/null +++ b/ios/.tool-versions @@ -0,0 +1 @@ +ruby 3.2.2 diff --git a/ios/Gemfile b/ios/Gemfile new file mode 100644 index 0000000..0927832 --- /dev/null +++ b/ios/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gem 'cocoapods', '~> 1.13' diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock new file mode 100644 index 0000000..684e139 --- /dev/null +++ b/ios/Gemfile.lock @@ -0,0 +1,95 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.6) + rexml + activesupport (7.0.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.5) + public_suffix (>= 2.0.2, < 6.0) + algoliasearch (1.27.5) + httpclient (~> 2.8, >= 2.8.3) + json (>= 1.5.1) + atomos (0.1.3) + claide (1.1.0) + cocoapods (1.13.0) + addressable (~> 2.8) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.13.0) + cocoapods-deintegrate (>= 1.0.3, < 2.0) + cocoapods-downloader (>= 1.6.0, < 2.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.6.0, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (>= 2.3.0, < 3.0) + gh_inspector (~> 1.0) + molinillo (~> 0.8.0) + nap (~> 1.0) + ruby-macho (>= 2.3.0, < 3.0) + xcodeproj (>= 1.23.0, < 2.0) + cocoapods-core (1.13.0) + activesupport (>= 5.0, < 8) + addressable (~> 2.8) + algoliasearch (~> 1.0) + concurrent-ruby (~> 1.1) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + netrc (~> 0.11) + public_suffix (~> 4.0) + typhoeus (~> 1.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (1.6.3) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) + nap (>= 0.8, < 2.0) + netrc (~> 0.11) + cocoapods-try (1.2.0) + colored2 (3.1.2) + concurrent-ruby (1.2.2) + escape (0.0.4) + ethon (0.16.0) + ffi (>= 1.15.0) + ffi (1.16.3) + fourflusher (2.3.1) + fuzzy_match (2.0.4) + gh_inspector (1.1.3) + httpclient (2.8.3) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.6.3) + minitest (5.20.0) + molinillo (0.8.0) + nanaimo (0.3.0) + nap (1.1.0) + netrc (0.11.0) + public_suffix (4.0.7) + rexml (3.2.6) + ruby-macho (2.5.1) + typhoeus (1.4.0) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + xcodeproj (1.23.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + +PLATFORMS + arm64-darwin-23 + +DEPENDENCIES + cocoapods (~> 1.13) + +BUNDLED WITH + 2.4.20 diff --git a/ios/Podfile b/ios/Podfile index 66f50af..be1bed8 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,6 +1,6 @@ target 'iosApp' do use_frameworks! - platform :ios, '14.1' + platform :ios, '15.0' pod 'Shared', :path => '../shared' pod 'SwiftLint' @@ -9,7 +9,7 @@ end post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| - config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = 15.0 end end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1b0b850..67c3147 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -15,9 +15,9 @@ EXTERNAL SOURCES: :path: "../shared" SPEC CHECKSUMS: - Shared: f2c19c0b5f6abd7ec3aa3f109d4fce5885de176b + Shared: 9cee99d7ec6f327294a149403bec06a18fc5db29 SwiftLint: 1cc5cd61ba9bacb2194e340aeb47a2a37fda00b3 -PODFILE CHECKSUM: 60e72440e01d6f912f30472ba0860fb676c0fcd5 +PODFILE CHECKSUM: 83ebf5d7b61ce65029f18160027c7392430ee27f -COCOAPODS: 1.12.1 +COCOAPODS: 1.13.0 diff --git a/ios/iosApp.xcodeproj/project.pbxproj b/ios/iosApp.xcodeproj/project.pbxproj index 5b90e95..072959b 100644 --- a/ios/iosApp.xcodeproj/project.pbxproj +++ b/ios/iosApp.xcodeproj/project.pbxproj @@ -298,7 +298,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -353,7 +353,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; diff --git a/shared/Shared.podspec b/shared/Shared.podspec index f4720a3..59d76af 100644 --- a/shared/Shared.podspec +++ b/shared/Shared.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |spec| spec.summary = 'Project summary' spec.vendored_frameworks = 'build/cocoapods/framework/Shared.framework' spec.libraries = 'c++' - spec.ios.deployment_target = '14.1' + spec.pod_target_xcconfig = { diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index ac189ab..215619f 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -1,3 +1,5 @@ +@file:Suppress("UNUSED_VARIABLE") + plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.kotlin.native.cocoapods) @@ -10,6 +12,7 @@ version = "0.1" kotlin { jvmToolchain(17) + androidTarget { publishAllLibraryVariants() } @@ -21,8 +24,6 @@ kotlin { homepage = "https://github.com/mirego/your-project" name = "Shared" - ios.deploymentTarget = "14.1" - podfile = project.file("../ios/Podfile") framework {