All Projects β†’ touchlab β†’ Xcode Kotlin

touchlab / Xcode Kotlin

Licence: apache-2.0
Kotlin Native Xcode Plugin

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Xcode Kotlin

Gradientcircularprogress
Customizable progress indicator library in Swift
Stars: ✭ 407 (-10.94%)
Mutual labels:  xcode
Sketchcachecleaner
πŸ’» Sketch Cache Cleaner - Deletes hidden Sketch history files that can take a lot of space on your hard drive and that you would probably never use.
Stars: ✭ 435 (-4.81%)
Mutual labels:  xcode
React Native Mixpanel
A React Native wrapper for Mixpanel tracking
Stars: ✭ 451 (-1.31%)
Mutual labels:  xcode
Jyradarchart
an iOS open source Radar Chart implementation
Stars: ✭ 419 (-8.32%)
Mutual labels:  xcode
Unrealm
Unrealm is an extension on RealmCocoa, which enables Swift native types to be saved in Realm.
Stars: ✭ 425 (-7%)
Mutual labels:  xcode
Stringz
A lightweight and powerful editor for localizing iOS, macOS, tvOS, and watchOS applications.
Stars: ✭ 440 (-3.72%)
Mutual labels:  xcode
Require
Require optional values to be non-nil, or crash gracefully
Stars: ✭ 405 (-11.38%)
Mutual labels:  xcode
Xcodegen
A Swift command line tool for generating your Xcode project
Stars: ✭ 5,032 (+1001.09%)
Mutual labels:  xcode
Gradle Xcodeplugin
gradle plugin for building Xcode Projects for iOS, watchOS, macOS or tvOS
Stars: ✭ 430 (-5.91%)
Mutual labels:  xcode
Hero
Elegant transition library for iOS & tvOS
Stars: ✭ 20,547 (+4396.06%)
Mutual labels:  xcode
Agimagepickercontroller
Stars: ✭ 424 (-7.22%)
Mutual labels:  xcode
Mylinearlayout
MyLayout is a powerful iOS UI framework implemented by Objective-C. It integrates the functions with Android Layout,iOS AutoLayout,SizeClass, HTML CSS float and flexbox and bootstrap. So you can use LinearLayout,RelativeLayout,FrameLayout,TableLayout,FlowLayout,FloatLayout,PathLayout,GridLayout,LayoutSizeClass to build your App θ‡ͺεŠ¨εΈƒε±€ UIView UITab…
Stars: ✭ 4,152 (+808.53%)
Mutual labels:  xcode
Dollar
A functional tool-belt for Swift Language similar to Lo-Dash or Underscore.js in Javascript
Stars: ✭ 4,198 (+818.6%)
Mutual labels:  xcode
Wwdc2016 Xcode Color Scheme
A color scheme for Xcode based on the WWDC 2016 invitation.
Stars: ✭ 408 (-10.72%)
Mutual labels:  xcode
Sourceful
A syntax highlighting source editor for iOS and macOS using UITextView and NSTextView.
Stars: ✭ 449 (-1.75%)
Mutual labels:  xcode
Messenger Ios Chat Swift Firestore
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift
Stars: ✭ 405 (-11.38%)
Mutual labels:  xcode
Uitextfield Navigation
πŸ„β€β™‚οΈ UITextField-Navigation makes it easier to navigate between UITextFields and UITextViews
Stars: ✭ 436 (-4.6%)
Mutual labels:  xcode
Sppermissions
Ask permissions with ready-use interface. You can check status permission and if it has been requested before. Support SwiftUI.
Stars: ✭ 4,701 (+928.67%)
Mutual labels:  xcode
Downloader For Apple Developers
Download Xcode, WWDC Videos, and other developer tools up to 16 times faster.
Stars: ✭ 456 (-0.22%)
Mutual labels:  xcode
Pbxprojhelper
A macOS tool help you handling project.pbxproj files. Written in Swift 5!
Stars: ✭ 444 (-2.84%)
Mutual labels:  xcode

Kotlin Native Xcode Support

Plugin to facilitate debugging iOS applications using Kotlin Native in Xcode. Defines Kotlin files as source code, with basic highlighting. Allows you to set breakpoints and includes llvm support to view data in the debug window. Xcode does not officially support custom language definitions, but they also don't explicitly block them.

We're Hiring!

Touchlab is looking for a Mobile Developer, with Android/Kotlin experience, who is eager to dive into Kotlin Multiplatform Mobile (KMM) development. Come join the remote-first team putting KMM in production. More info here.

Installation

There are 2 parts to Kotlin support: 1) debugging support and 2) language color and style formatting.

You need to tell Xcode that *.kt files are source files, and run an lldb formatter script when debugging starts. Advanced users may want to do this manually, but if you have Xcode installed in the default place, you can run the setup script.

Xcode 11

For debugging support in Xcode 11, run the installation script:

./setup-xcode11.sh

Xcode 11 introduced several breaking changes from earlier versions, and some resolutions are still outstanding. If you're using Xcode 11, you need to move some files into a protected area. Some users may not want to do this, and may possibly not have permissions to do this. You'll need to run the formatting support script with sufficient permissions, which generally means sudo.

sudo ./colorsetup-xcode11.sh

You can still debug Kotlin without formatting support, just FYI. This step is not required.

All Other Xcode Versions

For all other versions of Xcode, the following script will install both debugging and formatting support:

./setup.sh

Kotlin 1.3.6x Issue

Using static frameworks and/or Cocoapods may remove debug info in this version. More info here

Special Note

All of that magic was sorted out by Ellen Shapiro, who understands all of this far better than I ever will.

Tracking Issue Here

Usage

If properly set up, you should be able to add Kotlin source to Xcode, set up breakpoints, and step through code.

We're deprecating the Xcode Sync plugin. Add folder reference instead! See issue. Description and video coming soon.

To help automate adding Kotlin source, check out the Kotlin Xcode Sync Gradle plugin.

Sample

The Droidcon NYC app has both the Xcode Gradle sync and Xcode projects enabled for debugging.

Sources

Setting up the Plugin has been an amalgam of various source projects, as Xcode "Plugins" are undocumented. The most significant piece, the language color file came from other color files shipped with Xcode. Xcode plugin file from GraphQL

LLDB formatting originally comes from the Kotlin/Native project, source konan_lldb.py, although the way data is grabbed has been heavily modified to better support an interactive debugger.

Possible Future Stuff

Color File

The color definition is basically Java's with minor additions. This could be better adapted to Kotlin.

Install

It's a bash script, which works, but does not take into account non-standard install directories and various other possible config options. This could be improved.

From Swift

You can see variables when you're debugging Kotlin, but when you're in a swift file that has a class that came from Kotlin you can't see much. It would be great to be able to improve that.

Better Debug Alignment

This happens in the Kotlin compiler, so it's a little deeper, but the breakpoints don't always track with the source when there are more complex structures (lambdas, etc). This should improve over time.

Xcode Updates

Every time Xcode is updated we need the UUID. It needs to be added to Kotlin.ideplugin/Contents/Info.plist. To find the UUID of your version of Xcode, run the following:

defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID

Info from here

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].