Menu

Contributing

Translating your Swift source code to Kotlin isn’t enough. iOS apps rely heavily on the Swift standard library as well as fundamental frameworks like Foundation, Observation, and SwiftUI. SkipStack is Skip’s Android-specific reimplementations of these app building blocks as free, open source libraries. Visit them at our GitHub page.

These libraries are vital, and Skip welcomes community contributions in all forms. Each library’s README includes background information such as its current status, any important implementation strategies employed, etc. Please review the README before contributing. When you are ready to submit an update, create a standard GitHub pull request. Skip’s development team will attempt to address PRs as quickly as possible.

You are not required to donate your updates back to Skip. But we sincerely hope that you will: your improvements to Skip’s open source libraries will benefit all Skip developers, and by extension all users of Skip-backed apps.

Local Skip Libraries

If you’d like to make local changes to Skip’s libraries while working on an app - or to work on SkipUI and exercise your changes with its Showcase app - you will want to configure Xcode to use local library versions rather than the current Skip distributions. This is easily accomplished with an Xcode Workspace.

  1. Clone the repositories you’d like to work on. We find it most convenient to make the clone directory a peer of your app directory.

     > ls
     hello-skip/ skip-foundation/ skip-ui/ 
    
  2. Use Xcode to create a new Workspace in the same directory.
  3. Add your app’s .xcodeproj file to the Workspace.
  4. Add your local module directories to the Workspace. Adding these local packages should override the distributions that Xcode downloaded.
  5. Use the Workspace to iterate on your app and the libraries in tandem.

You are now set up to work on SkipStack libraries! This is a great way to fix any issues or add any missing functionality that is affecting your app, while potentially helping the entire Skip community.

Note: Launching your app from Android Studio will not use your Workspace’s updated local library. Android Studio always uses the library configured in Package.swift. We will fix this in a future update.

In the meantime, always launch your app from Xcode when testing changes to local Skip libraries. If you want to use Android Studio to help you iterate on local library code, locate the module’s settings.gradle.kts file in Xcode’s SkipStone/plugins group rather than using the application-level settings.gradle.kts in the Android folder. See Accessing Transpiled Output for details on opening Skip projects in Android Studio.


Community Libraries

Skip’s suite of free, open source libraries provides the building blocks you need to build best-in-class dual-platform apps. But Skip can’t cover every use case out of the box. We expect that many app developers will write your own dual-platform libraries to interface with iOS and Android frameworks. If you write a dual-platform library that you think might be useful to other Skip users, please consider opening it up to the Skip community. Contact us to have your library listed as a Skip community library.

When writing a dual-platform library that vends the functionality of a standard iOS framework, consider exactly mirroring that framework’s API, just as Skip mirrors Foundation, SwiftUI, etc. This follows Skip’s philosophy of transparent adoption. It also means less work for you to implement the iOS side!