Skip to content

Commit

Permalink
Move to Kotlin 2.0.0 and link iOS directly.
Browse files Browse the repository at this point in the history
* Kotlin 2.0.0 and directly linking for iOS

* Try static build

* Update build.gradle.kts

Roll back static framework config

* Update to new Compose compiler.

* Update iOS GH action.

* Update xcodebuild-action in iOS GHA workflow.

* Rollback xcodebuild-action version update.

* Run xcodebuild without xcpretty (hopefully prints more information).

* Don't require code signing on CI.

* Remove development team from signing.

* Fix empty code signing setting.

---------

Co-authored-by: Tadeas Kriz <[email protected]>
  • Loading branch information
kpgalligan and TadeasKriz authored Jun 11, 2024
1 parent f4dab27 commit 3af2a9f
Show file tree
Hide file tree
Showing 39 changed files with 39 additions and 1,476 deletions.
9 changes: 4 additions & 5 deletions .github/workflows/KaMPKit-iOS.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,17 @@ jobs:
distribution: corretto
java-version: 17

- name: Build
- name: Run tests
run: ./gradlew :shared:iosX64Test

- name: Build
uses: sersoft-gmbh/xcodebuild-action@v1
with:
workspace: ios/KaMPKitiOS.xcworkspace
project: ios/KaMPKitiOS.xcodeproj
scheme: KaMPKitiOS
destination: name=iPhone 8
sdk: iphoneos
configuration: Debug
action: build



use-xcpretty: false
build-settings: CODE_SIGN_IDENTITY= CODE_SIGNING_REQUIRED=NO
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@
*.xcbkptlist
!/.idea/codeStyles/*
!/.idea/inspectionProfiles/*
.kotlin
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ The central part of the "Kit" is the starter app. It includes a set of libraries
You will need the following:

- JVM 17
- Android SDK and the latest stable Android Studio (2022.3+) or IntelliJ(2023.2+)
- Mac with Xcode 14+ for the iOS build
- Android SDK and the latest stable Android Studio (2023.3+) or IntelliJ(2024.1+)
- Mac with Xcode 15+ for the iOS build

For a more detailed guide targeted at iOS developers, see [DETAILED_DEV_SETUP](docs/DETAILED_DEV_SETUP.md).

Expand Down
5 changes: 1 addition & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.compose.compiler)
}

android {
Expand Down Expand Up @@ -41,10 +42,6 @@ android {
compose = true
buildConfig = true
}

composeOptions {
kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get()
}
}

dependencies {
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.skie) apply false
alias(libs.plugins.cocoapods) apply false
alias(libs.plugins.compose.compiler) apply false
}

subprojects {
Expand Down
27 changes: 12 additions & 15 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,30 @@ targetSdk = "34"
compileSdk = "34"

# Dependencies
kotlin = "1.9.22"
kotlin = "2.0.0"

android-gradle-plugin = "8.2.2"
android-gradle-plugin = "8.2.0"
ktlint-gradle = "12.1.0"

compose = "1.5.4"
composeCompiler = "1.5.8"
compose = "1.6.7"

android-desugaring = "2.0.4"
androidx-core = "1.12.0"
androidx-core = "1.13.1"
androidx-test-junit = "1.1.5"
androidx-activity-compose = "1.8.2"
androidx-activity-compose = "1.9.0"
# TODO: Update to 2.8.+ when updating to Compose 1.7.+
androidx-lifecycle = "2.7.0"

junit = "4.13.2"

coroutines = "1.7.3"
kotlinx-datetime = "0.5.0"
ktor = "2.3.7"
coroutines = "1.8.1"
kotlinx-datetime = "0.6.0"
ktor = "2.3.11"

robolectric = "4.10.3"

kermit = "2.0.2"
skie = "0.6.1"
kermit = "2.0.3"
skie = "0.8.0"

koin = "3.5.3"
multiplatformSettings = "1.1.1"
Expand All @@ -43,7 +43,6 @@ androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmode
androidx-lifecycle-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
androidx-test-junit = { module = "androidx.test.ext:junit-ktx", version.ref = "androidx-test-junit" }

compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "composeCompiler" }
compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose" }
compose-tooling = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" }
compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "compose" }
Expand Down Expand Up @@ -95,11 +94,10 @@ android-application = { id = "com.android.application", version.ref = "android-g
android-library = { id = "com.android.library", version.ref = "android-gradle-plugin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
skie = { id = "co.touchlab.skie", version.ref = "skie" }
cocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" }
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }

[bundles]
app-ui = [
"compose-compiler",
"androidx-core",
"androidx-lifecycle-runtime",
"androidx-lifecycle-viewmodel",
Expand All @@ -125,4 +123,3 @@ shared-androidTest = [
"roboelectric",
"sqlDelight-jvm"
]

2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
76 changes: 6 additions & 70 deletions ios/KaMPKitiOS.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 50;
objects = {

/* Begin PBXBuildFile section */
3DFF917C64A18A83DA010EE1 /* Pods_KaMPKitiOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B859F3FB23133D22AB9DD835 /* Pods_KaMPKitiOS.framework */; };
46A5B5EF26AF54F7002EFEAA /* BreedListScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A5B5EE26AF54F7002EFEAA /* BreedListScreen.swift */; };
46A5B60826B04921002EFEAA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 46A5B60626B04920002EFEAA /* Main.storyboard */; };
46B5284D249C5CF400A7725D /* Koin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46B5284C249C5CF400A7725D /* Koin.swift */; };
Expand Down Expand Up @@ -36,13 +35,9 @@
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
1DFCC00C8DAA719770A18D1A /* Pods-KaMPKitiOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaMPKitiOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS.release.xcconfig"; sourceTree = "<group>"; };
2A1ED6A4A2A53F5F75C58E5F /* Pods-KaMPKitiOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaMPKitiOS.release.xcconfig"; path = "Pods/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS.release.xcconfig"; sourceTree = "<group>"; };
46A5B5EE26AF54F7002EFEAA /* BreedListScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreedListScreen.swift; sourceTree = "<group>"; };
46A5B60726B04920002EFEAA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
46B5284C249C5CF400A7725D /* Koin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Koin.swift; sourceTree = "<group>"; };
B859F3FB23133D22AB9DD835 /* Pods_KaMPKitiOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KaMPKitiOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
ED1F782AF3705197012D0C33 /* Pods-KaMPKitiOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaMPKitiOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS.debug.xcconfig"; sourceTree = "<group>"; };
F1465EFD23AA94BF0055F7C3 /* KaMPKitiOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = KaMPKitiOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
F1465F0023AA94BF0055F7C3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
F1465F0923AA94BF0055F7C3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
Expand All @@ -54,15 +49,13 @@
F1465F1E23AA94C00055F7C3 /* KaMPKitiOSUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KaMPKitiOSUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
F1465F2223AA94C00055F7C3 /* KaMPKitiOSUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KaMPKitiOSUITests.swift; sourceTree = "<group>"; };
F1465F2423AA94C00055F7C3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
F9C259C83C689DF8F4602F38 /* Pods-KaMPKitiOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaMPKitiOS.debug.xcconfig"; path = "Pods/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
F1465EFA23AA94BF0055F7C3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
3DFF917C64A18A83DA010EE1 /* Pods_KaMPKitiOS.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -86,30 +79,17 @@
6278498AD96A4D949D39BF44 /* Frameworks */ = {
isa = PBXGroup;
children = (
B859F3FB23133D22AB9DD835 /* Pods_KaMPKitiOS.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
DF9BBECBCD175B90105DA8D9 /* Pods */ = {
isa = PBXGroup;
children = (
F9C259C83C689DF8F4602F38 /* Pods-KaMPKitiOS.debug.xcconfig */,
1DFCC00C8DAA719770A18D1A /* Pods-KaMPKitiOS.release.xcconfig */,
ED1F782AF3705197012D0C33 /* Pods-KaMPKitiOS.debug.xcconfig */,
2A1ED6A4A2A53F5F75C58E5F /* Pods-KaMPKitiOS.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
F1465EF423AA94BF0055F7C3 = {
isa = PBXGroup;
children = (
F1465EFF23AA94BF0055F7C3 /* KaMPKitiOS */,
F1465F1623AA94C00055F7C3 /* KaMPKitiOSTests */,
F1465F2123AA94C00055F7C3 /* KaMPKitiOSUITests */,
F1465EFE23AA94BF0055F7C3 /* Products */,
DF9BBECBCD175B90105DA8D9 /* Pods */,
6278498AD96A4D949D39BF44 /* Frameworks */,
);
sourceTree = "<group>";
Expand Down Expand Up @@ -163,12 +143,10 @@
isa = PBXNativeTarget;
buildConfigurationList = F1465F2723AA94C00055F7C3 /* Build configuration list for PBXNativeTarget "KaMPKitiOS" */;
buildPhases = (
DE3B37D33D11C1968D62DBBA /* [CP] Check Pods Manifest.lock */,
9C16E6F82C0618F100154B87 /* ShellScript */,
F1465EF923AA94BF0055F7C3 /* Sources */,
451A87F626D69EA40013D7F8 /* SwiftLint */,
F1465EFA23AA94BF0055F7C3 /* Frameworks */,
F1465EFB23AA94BF0055F7C3 /* Resources */,
9927C3E3A82FD5756098EAC1 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
Expand Down Expand Up @@ -286,62 +264,22 @@
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
451A87F626D69EA40013D7F8 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = SwiftLint;
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# For reference: https://github.com/realm/SwiftLint\n\n${PODS_ROOT}/SwiftLint/swiftlint\n";
};
9927C3E3A82FD5756098EAC1 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-KaMPKitiOS/Pods-KaMPKitiOS-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
DE3B37D33D11C1968D62DBBA /* [CP] Check Pods Manifest.lock */ = {
9C16E6F82C0618F100154B87 /* ShellScript */ = {
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-KaMPKitiOS-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\ncd \"$SRCROOT/..\"\n./gradlew embedAndSignAppleFrameworkForXcode\n";
};
/* End PBXShellScriptBuildPhase section */

Expand Down Expand Up @@ -531,12 +469,11 @@
};
F1465F2823AA94C00055F7C3 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = ED1F782AF3705197012D0C33 /* Pods-KaMPKitiOS.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 8UD86646U9;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = KaMPKitiOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
Expand All @@ -560,12 +497,11 @@
};
F1465F2923AA94C00055F7C3 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 2A1ED6A4A2A53F5F75C58E5F /* Pods-KaMPKitiOS.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 8UD86646U9;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = KaMPKitiOS/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
LD_RUNPATH_SEARCH_PATHS = (
Expand Down
20 changes: 0 additions & 20 deletions ios/KaMPKitiOS.xcworkspace/contents.xcworkspacedata

This file was deleted.

This file was deleted.

10 changes: 0 additions & 10 deletions ios/Podfile

This file was deleted.

23 changes: 0 additions & 23 deletions ios/Podfile.lock

This file was deleted.

Loading

2 comments on commit 3af2a9f

@erjseals
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there changes to the documentation to make following this commit? Specifically I ask regarding iOS, where APP_BUILD.md recommends opening the KaMPKitiOS.xcworkspace file which no longer exists with this commit.

Am I missing a step to generate this file now? I get errors in XCode, but this is probably to be expected given I'm opening ios/KaMPKitiOS.xcodeproj.

@TadeasKriz
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @erjseals, thanks for bringing that up. Seems I've forgot to update the documentation, I'll do that in a separate PR.

Please sign in to comment.