UIKit-based iOS app for Kotlin Multiplatform
- Created with Xcode 15.0.1
- UIKit based with
SceneDelegate
andMain
storyboard, plus unit tests and UI tests - Updated settings to work with KMP gradle project
- Replace the
iosApp
folder of the KMP project by this repo!
- Create new Xcode iOS application with name
iosApp
- Select the iosApp target -> Build Phases -> Create New Run Script Phase, move it just below Compile Source phase, set Shell and content as:
/bin/sh
cd "$SRCROOT/.."
./gradlew :shared:embedAndSignAppleFrameworkForXcode
New | Script |
---|---|
![]() |
![]() |
- Update Other Linker Flags of the iosApp target to:
-framework shared
![Screenshot 2023-11-04 at 12 16 24 PM](https://private-user-images.githubusercontent.com/5253933/280447323-74a69a82-6231-4d68-b14b-b2c110ba224f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg3NjA2OTAsIm5iZiI6MTcxODc2MDM5MCwicGF0aCI6Ii81MjUzOTMzLzI4MDQ0NzMyMy03NGE2OWE4Mi02MjMxLTRkNjgtYjE0Yi1iMmMxMTBiYTIyNGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTlUMDEyNjMwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OWZiZmQxZTJjNGYxZmM5NjQ0NTYzZDA4NWQ3ODZmMzhjODc2NmRlYzM1OGRjODcyYjExOWIyNGMyNTkwMWMwYSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.Z0hth75Kqic-T2BeIBnyQj_10U_HGqtcEpn1lP5zPq0)
- Update FRAMEWORK_SEARCH_PATHS to
$(SRCROOT)/../shared/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)
![Screenshot 2023-11-04 at 12 18 19 PM](https://private-user-images.githubusercontent.com/5253933/280447433-221cd040-8c98-4475-9a9d-f17d06ac02a4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg3NjA2OTAsIm5iZiI6MTcxODc2MDM5MCwicGF0aCI6Ii81MjUzOTMzLzI4MDQ0NzQzMy0yMjFjZDA0MC04Yzk4LTQ0NzUtOWE5ZC1mMTdkMDZhYzAyYTQucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA2MTlUMDEyNjMwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YTg4ZjI1NTMwZTM4OTc4OWUzMjc2MjhhMGNiMTY1MTBjNTcyNTEyMzZkMTQ4YzU2YzcyYzc3ZjQyM2UxNmIwYSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.lMPII2oPNuW6hy2cmjtN474g6hTSHqpa5X6jUX7Dnf8)