Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 19 additions & 21 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,6 @@ commands:
name: Install Android SDK platform tools
command: sdkmanager "platform-tools"

install-cocoapods-on-macos:
steps:
- run:
name: Install CocoaPods
command: bundle exec pod install --repo-update
working_directory: iosApp

save-kotlin-native-compiler-to-cache:
steps:
- run:
Expand Down Expand Up @@ -117,9 +110,9 @@ executors:
ruby3:
docker:
- image: cimg/ruby:3.3.0
xcode15:
xcode16:
macos:
xcode: 15.4.0
xcode: 16.4.0
resource_class: macos.m1.medium.gen1
environment:
# Avoid waiting for Homebrew to auto update existing packages, as everything we care about is
Expand All @@ -129,7 +122,7 @@ executors:
jobs:
update-purchases-hybrid-common-version:
description: "Opens a PR updating the purchases-hybrid-common dependency to the latest version."
executor: xcode15
executor: xcode16
steps:
- checkout
- revenuecat/install-gem-mac-dependencies:
Expand Down Expand Up @@ -174,7 +167,7 @@ jobs:
destination: detekt

validate-binary-compatibility:
executor: xcode15
executor: xcode16
steps:
- install-android-sdk-on-macos
- checkout
Expand Down Expand Up @@ -208,15 +201,14 @@ jobs:
- save-incremental-gradle-build-to-workspace

build-libraries-ios:
executor: xcode15
executor: xcode16
steps:
- checkout
- restore-gradle-user-home-directory-from-cache
- restore-kotlin-native-compiler-from-cache
- attach-workspace-at-working-directory
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- run:
name: Build libraries for iOS
command: |
Expand Down Expand Up @@ -249,23 +241,31 @@ jobs:
- save-incremental-gradle-build-to-workspace

build-sample-ios:
executor: xcode15
executor: xcode16
steps:
- checkout
- restore-gradle-user-home-directory-from-cache
- restore-kotlin-native-compiler-from-cache
- attach-workspace-at-working-directory
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- run:
name: Build sample app for iOS
name: Build Kotlin code for iOS sample app for every architecture
command: |
tasks=()
for arch in Arm64 SimulatorArm64 X64; do
tasks+=(":composeApp:compileKotlinIos$arch")
done
./gradlew "${tasks[@]}"
- run:
name: Build iOS sample app
command: |
xcodebuild \
-project iosApp/iosApp.xcodeproj \
-scheme iosApp \
-configuration Debug \
-sdk iphonesimulator \
build;
- save-gradle-user-home-directory-to-cache
- save-kotlin-native-compiler-to-cache
- save-incremental-gradle-build-to-workspace
Expand All @@ -288,15 +288,14 @@ jobs:
- save-incremental-gradle-build-to-workspace

public-api-tests-ios:
executor: xcode15
executor: xcode16
steps:
- checkout
- restore-gradle-user-home-directory-from-cache
- restore-kotlin-native-compiler-from-cache
- attach-workspace-at-working-directory
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- run:
name: Test public API for iOS
command: |
Expand Down Expand Up @@ -327,7 +326,7 @@ jobs:
- save-incremental-gradle-build-to-workspace

unit-tests-ios:
executor: xcode15
executor: xcode16
steps:
- checkout
- restore-gradle-user-home-directory-from-cache
Expand All @@ -347,7 +346,7 @@ jobs:

publish:
description: "Publishes the SDK, either a SNAPSHOT or release version."
executor: xcode15
executor: xcode16
parameters:
snapshot:
description: Whether to publish a SNAPSHOT version. Will publish a final release if set to false.
Expand All @@ -357,7 +356,6 @@ jobs:
- install-android-sdk-on-macos
- revenuecat/install-gem-mac-dependencies:
cache-version: v1
- install-cocoapods-on-macos
- restore-gradle-user-home-directory-from-cache
- restore-kotlin-native-compiler-from-cache
- when:
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ vendor/

# Share IssueNavigationConfiguration
!.idea/vcs.xml

# KMP SwiftPM import
.swiftpm
.build
6 changes: 4 additions & 2 deletions apiTester/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.android.library)
Expand All @@ -9,8 +11,8 @@ kotlin {
// Compilation targets:
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = libs.versions.java.get()
this@androidTarget.compilerOptions {
jvmTarget.value(JvmTarget.fromTarget(libs.versions.java.get()))
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@ import com.revenuecat.purchases.kmp.buildlogic.ktx.getVersion
import com.revenuecat.purchases.kmp.buildlogic.ktx.versionCatalog
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension

internal fun Project.configureKotlin() {
extensions.configure<KotlinMultiplatformExtension> {
// Compilation targets:
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = versionCatalog.getVersion("java")
this@androidTarget.compilerOptions {
jvmTarget.value(JvmTarget.fromTarget(versionCatalog.getVersion("java")))
}
}

Expand Down
1 change: 1 addition & 0 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

dependencyResolutionManagement {
repositories {
maven("https://packages.jetbrains.team/maven/p/kt/dev")
google()
mavenCentral()
}
Expand Down
7 changes: 7 additions & 0 deletions composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ kotlin {
implementation(libs.androidx.activity.compose)
}
}

swiftPMDependencies {
xcodeProjectPathForKmpIJPlugin.set(
layout.projectDirectory.file("../iosApp/iosApp.xcodeproj")
)
}

}

android {
Expand Down
20 changes: 6 additions & 14 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import com.codingfeline.buildkonfig.compiler.FieldSpec.Type.STRING

plugins {
id("revenuecat-public-library")
alias(libs.plugins.kotlin.cocoapods)
alias(libs.plugins.codingfeline.buildkonfig)
}

Expand All @@ -29,19 +28,12 @@ kotlin {
}
}

cocoapods {
version = libs.versions.revenuecat.kmp.get()
ios.deploymentTarget = libs.versions.ios.deploymentTarget.core.get()

framework {
baseName = "Purchases"
isStatic = true
}

pod("PurchasesHybridCommon") {
version = libs.versions.revenuecat.common.get()
extraOpts += listOf("-compiler-option", "-fmodules")
}
swiftPMDependencies {
`package`(
url = url("https://github.com/RevenueCat/purchases-hybrid-common.git"),
version = exact(libs.versions.revenuecat.common.get()),
products = listOf(product("PurchasesHybridCommon")),
)
}
}

Expand Down
54 changes: 0 additions & 54 deletions core/core.podspec

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.revenuecat.purchases.kmp

import cocoapods.PurchasesHybridCommon.RCLogLevel
import cocoapods.PurchasesHybridCommon.RCLogLevelDebug
import cocoapods.PurchasesHybridCommon.RCLogLevelError
import cocoapods.PurchasesHybridCommon.RCLogLevelInfo
import cocoapods.PurchasesHybridCommon.RCLogLevelVerbose
import cocoapods.PurchasesHybridCommon.RCLogLevelWarn
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevel
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelDebug
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelError
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelInfo
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelVerbose
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelWarn

private typealias IosLogHandler = (RCLogLevel, String?) -> Unit

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.revenuecat.purchases.kmp

import cocoapods.PurchasesHybridCommon.RCLogLevelDebug
import cocoapods.PurchasesHybridCommon.RCLogLevelError
import cocoapods.PurchasesHybridCommon.RCLogLevelInfo
import cocoapods.PurchasesHybridCommon.RCLogLevelVerbose
import cocoapods.PurchasesHybridCommon.RCLogLevelWarn
import cocoapods.PurchasesHybridCommon.RCLogLevel as IosLogLevel
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelDebug
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelError
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelInfo
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelVerbose
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevelWarn
import swiftPMImport.com.revenuecat.purchases.models.RCLogLevel as IosLogLevel

internal fun IosLogLevel.toLogLevel(): LogLevel =
when (this) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package com.revenuecat.purchases.kmp

import cocoapods.PurchasesHybridCommon.IOSAPIAvailabilityChecker
import cocoapods.PurchasesHybridCommon.RCCommonFunctionality
import cocoapods.PurchasesHybridCommon.RCCustomerInfo
import cocoapods.PurchasesHybridCommon.RCIntroEligibility
import cocoapods.PurchasesHybridCommon.RCPurchaseParamsBuilder
import cocoapods.PurchasesHybridCommon.RCPurchasesDelegateProtocol
import cocoapods.PurchasesHybridCommon.RCStoreProduct
import cocoapods.PurchasesHybridCommon.RCStoreTransaction
import cocoapods.PurchasesHybridCommon.RCVirtualCurrencies
import cocoapods.PurchasesHybridCommon.configureWithAPIKey
import cocoapods.PurchasesHybridCommon.isWebPurchaseRedemptionURL
import cocoapods.PurchasesHybridCommon.parseAsWebPurchaseRedemptionWithUrlString
import cocoapods.PurchasesHybridCommon.recordPurchaseForProductID
import cocoapods.PurchasesHybridCommon.setAirshipChannelID
import cocoapods.PurchasesHybridCommon.setOnesignalUserID
import cocoapods.PurchasesHybridCommon.showStoreMessagesForTypes
import swiftPMImport.com.revenuecat.purchases.models.IOSAPIAvailabilityChecker
import swiftPMImport.com.revenuecat.purchases.models.RCCommonFunctionality
import swiftPMImport.com.revenuecat.purchases.models.RCCustomerInfo
import swiftPMImport.com.revenuecat.purchases.models.RCIntroEligibility
import swiftPMImport.com.revenuecat.purchases.models.RCPurchaseParamsBuilder
import swiftPMImport.com.revenuecat.purchases.models.RCPurchasesDelegateProtocol
import swiftPMImport.com.revenuecat.purchases.models.RCStoreProduct
import swiftPMImport.com.revenuecat.purchases.models.RCStoreTransaction
import swiftPMImport.com.revenuecat.purchases.models.RCVirtualCurrencies
import swiftPMImport.com.revenuecat.purchases.models.configureWithAPIKey
import swiftPMImport.com.revenuecat.purchases.models.isWebPurchaseRedemptionURL
import swiftPMImport.com.revenuecat.purchases.models.parseAsWebPurchaseRedemptionWithUrlString
import swiftPMImport.com.revenuecat.purchases.models.recordPurchaseForProductID
import swiftPMImport.com.revenuecat.purchases.models.setAirshipChannelID
import swiftPMImport.com.revenuecat.purchases.models.setOnesignalUserID
import swiftPMImport.com.revenuecat.purchases.models.showStoreMessagesForTypes
import com.revenuecat.purchases.kmp.ktx.mapEntriesNotNull
import com.revenuecat.purchases.kmp.mappings.buildStoreTransaction
import com.revenuecat.purchases.kmp.mappings.toCustomerInfo
Expand Down Expand Up @@ -61,9 +61,9 @@ import com.revenuecat.purchases.kmp.models.WinBackOffer
import com.revenuecat.purchases.kmp.strings.ConfigureStrings
import platform.Foundation.NSError
import platform.Foundation.NSURL
import cocoapods.PurchasesHybridCommon.RCDangerousSettings as IosDangerousSettings
import cocoapods.PurchasesHybridCommon.RCPurchases as IosPurchases
import cocoapods.PurchasesHybridCommon.RCWinBackOffer as NativeIosWinBackOffer
import swiftPMImport.com.revenuecat.purchases.models.RCDangerousSettings as IosDangerousSettings
import swiftPMImport.com.revenuecat.purchases.models.RCPurchases as IosPurchases
import swiftPMImport.com.revenuecat.purchases.models.RCWinBackOffer as NativeIosWinBackOffer

public actual class Purchases private constructor(private val iosPurchases: IosPurchases) {
public actual companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.revenuecat.purchases.kmp

import cocoapods.PurchasesHybridCommon.RCCustomerInfo
import cocoapods.PurchasesHybridCommon.RCPurchases
import cocoapods.PurchasesHybridCommon.RCPurchasesDelegateProtocol
import cocoapods.PurchasesHybridCommon.RCStoreProduct
import cocoapods.PurchasesHybridCommon.RCStoreTransaction
import swiftPMImport.com.revenuecat.purchases.models.RCCustomerInfo
import swiftPMImport.com.revenuecat.purchases.models.RCPurchases
import swiftPMImport.com.revenuecat.purchases.models.RCPurchasesDelegateProtocol
import swiftPMImport.com.revenuecat.purchases.models.RCStoreProduct
import swiftPMImport.com.revenuecat.purchases.models.RCStoreTransaction
import com.revenuecat.purchases.kmp.mappings.toCustomerInfo
import com.revenuecat.purchases.kmp.mappings.toPurchasesErrorOrThrow
import com.revenuecat.purchases.kmp.mappings.toStoreProduct
Expand Down
Loading