DEV Community

Cover image for Finally xcode 26
ThatsMe,Joana
ThatsMe,Joana

Posted on

Finally xcode 26

About two weeks ago, I had to switch to a new machine, and I immediately felt the challenges that would come with it. Just when I thought the transition would be tough, my machine updated to Tahoe, which sent me into a panic mode. How would I manage to work in the coming days?

Fortunately, things fell into place, and I was able to successfully update my environment.

What have I done?

First, install xcodes to switch between Xcode versions. I have installed Xcode 26.0.0.

Then updated the following libs:

  • Kotline Multiplatform plugin: for that, I have followed the version compatibility from this page.
  • Android sourceset conventions: the first error that I need to fix

build.gradle.kts:123:13: 'fun dependencies(configure: KotlinDependencies.() -> Unit): Unit' can't be called in this context by implicit receiver. Use the explicit one if necessary

And I just need to update according to the conventions.

Replace:

kotlin {
   androidTarget()
   sourceSets {
     androidTarget.dependencies {}
   }
}
Enter fullscreen mode Exit fullscreen mode

by:

kotlin {
   androidTarget()
   sourceSets {
     androidMain.dependencies {}
   }
}
Enter fullscreen mode Exit fullscreen mode
  • πŸžπŸ€My luckπŸ€πŸž was on the fact that SKIE is now compatible with Kotlin versions from 2.0.0 up to 2.2.21.
  • KSP update

Last but not least, I needed to fix the error:
java.lang.NoClassDefFoundError: org/jetbrains/kotlin/konan/target/KonanTarget$IOS_ARM32

I follow this video

Nothing!!!!

I look up on the edge of the internet. And... Nothing!!!!

Until Gemini saw the error and pointed in the right direction

konantarget_iosarm32 is an identifier for the 32-bit ARM architecture target for iOS devices used in the Kotlin/Native compiler and Kotlin Multiplatform projects. It allows developers to compile Kotlin code into native binaries that can run on older 32-bit iOS devices.

Ok! But what does that mean?

The iosArm32 target is now deprecated and unsupported for new iOS app submissions

Ahh! Ok! But How can I solve it?

The error is caused by the removal of the iosArm32 target in newer Kotlin versions (it was deprecated in 1.8.20 and removed in 1.9.20). Although you have updated your source sets, an old reference to the 32-bit target likely remains in your Gradle build scripts or in a cached dependency.

And I cleaned and deleted caches (Just to be sure)!

./gradlew clean
rm -rf .gradle/caches
Enter fullscreen mode Exit fullscreen mode

But nothing! The next step was to check the dependencies.

The error occurring at generateMRiosArm64Main points to an issue with the Compose Multiplatform library or the moko-resources library (if you are using it) trying to generate resources for the now-removed iosArm32 target during the build process for iosArm64.
This confirms that even though your source sets are correct, the resource generation plugin is implicitly attempting to configure all possible iOS targets.

Moko-resources... BINGO

They had fixed a bug in the version that supported the new Kotlin release. Issue

Gemini promtp:

# User: konantarget_iosarm32

`konantarget_iosarm32` is an identifier for the **32-bit ARM architecture target for iOS devices** used in the **Kotlin/Native** compiler and Kotlin Multiplatform projects. It allows developers to compile Kotlin code into native binaries that can run on older 32-bit iOS devices.

(...)

# User: I have updatde kotlin version to 2.2.21 and now can not even compile the project, since I have that error ok arm 32 and my sourcesets are iosArm64 and iosSimulatorArm64

The error is caused by the **removal of the `iosArm32` target** in newer Kotlin versions (it was deprecated in 1.8.20 and removed in 1.9.20). Although you have updated your source sets, an old reference to the 32-bit target likely remains in your Gradle build scripts or in a cached dependency.

(...)

User: It fails here: generateMRiosArm64Main

The error occurring at generateMRiosArm64Main points to an issue with the Compose Multiplatform library or the moko-resources library (if you are using it) trying to generate resources for the now-removed iosArm32 target during the build process for iosArm64.
This confirms that even though your source sets are correct, the resource generation plugin is implicitly attempting to configure all possible iOS targets.
Enter fullscreen mode Exit fullscreen mode

And finally, it worked. And so far so good. But I will continue to update this article if necessary.

However, I have done all this, my IntelliJ continues to complain

[βœ“] Operating System
[βœ“] Java
[βœ“] Android SDK
[βœ“] Xcode
[βœ“] Gradle Project

Recommendations:
  ! macOS 26.1+ is not yet supported
Enter fullscreen mode Exit fullscreen mode

This was a joint task with Francisco Cunha, who also helped write this article

Top comments (0)