Git Product home page Git Product logo

swift-java-codegen's Introduction

Swift Java Codegeneration annotation processor Maven Central

Annotation processor that generate Swift JNI code for Kotlin headers

Pre-requirements

This annotation process only generate Swift JNI code. For compiling swift code for Android please use Swift Android Gradle plugin

Setup

  1. Add the following to your root build.gradle
allprojects {
    repositories {
        mavenCentral()
    }
}
  1. Add the following to your project build.gradle
dependencies {
    kapt "com.readdle.swift.java.codegen:compiler:$swift-java-codegen-version"
    implementation "com.readdle.swift.java.codegen:annotations:$swift-java-codegen-version"
}

Usage

Documentation in progress...

Samples

There are few samples that use Swift Java Codegen:

  1. Sample in this repo
  2. Kotlin sample for Desktop
  3. Cross-platform swift weather app

FAQ

Why this project has Java in it name but doesn't support Java?

When this project was started Kotlin was in beta development. That's why we decide to move on with Java as primary language. After 4 year of development we moved to Kotlin and break Java support. If for some reason you would like to use this project with Java, latest Java support version us stil available on Maven Central.

Could I generate Swift JNI without writing Kotlin headers manually?

Very good question. Probably it's possible but it's quite complicated. We invest time to research code generation based on Swift and have a small prototype. But the development of this new tool is still at a very early stage.

swift-java-codegen's People

Contributors

albertaleksieiev avatar andriydruk avatar zayass avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

swift-java-codegen's Issues

PackageDescription not found in Package.swift

I am trying to opening and build the project. But I'm unable to get it building.
Swift Toolchain version: swift-android-5.0-8

Screenshot 2020-01-22 12 29 06

And in https://github.com/readdle/swift-android-architecture I get the following errors:

> Task :app:swiftBuildArm64Debug FAILED
Swift PM flags: --configuration debug -Xswiftc -DDEBUG
/Users/geert/Projects/SwiftAndroid/swift-android-architecture/todoapp/app/src/main/swift: error: manifest parse error(s):
/Users/geert/Projects/SwiftAndroid/swift-android-architecture/todoapp/app/src/main/swift/Package.swift:55:15: error: 'init(name:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is unavailable
let package = Package(
              ^~~~~~~
PackageDescription.Package:27:12: note: 'init(name:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' was introduced in PackageDescription 4.2
    public init(name: String, pkgConfig: String? = nil, providers: [PackageDescription.SystemPackageProvider]? = nil, products: [PackageDescription.Product] = [], dependencies: [PackageDescription.Package.Dependency] = [], targets: [PackageDescription.Target] = [], swiftLanguageVersions: [PackageDescription.SwiftVersion]? = nil, cLanguageStandard: PackageDescription.CLanguageStandard? = nil, cxxLanguageStandard: PackageDescription.CXXLanguageStandard? = nil)
           ^
/Users/geert/Projects/SwiftAndroid/swift-android-architecture/todoapp/app/src/main/swift/Package.swift:65:10: error: 'target(name:dependencies:path:exclude:sources:publicHeadersPath:)' is unavailable
        .target(name: packageName, dependencies: ["java_swift", "JavaCoder"])
         ^~~~~~
PackageDescription.Target:34:24: note: 'target(name:dependencies:path:exclude:sources:publicHeadersPath:)' was introduced in PackageDescription 4
    public static func target(name: String, dependencies: [PackageDescription.Target.Dependency] = [], path: String? = nil, exclude: [String] = [], sources: [String]? = nil, publicHeadersPath: String? = nil) -> PackageDescription.Target
                       ^
/Users/geert/Projects/SwiftAndroid/swift-android-architecture/todoapp/app/src/main/swift/Package.swift:41:10: error: 'target(name:dependencies:path:exclude:sources:publicHeadersPath:)' is unavailable
        .target(
         ^~~~~~
PackageDescription.Target:34:24: note: 'target(name:dependencies:path:exclude:sources:publicHeadersPath:)' was introduced in PackageDescription 4
    public static func target(name: String, dependencies: [PackageDescription.Target.Dependency] = [], path: String? = nil, exclude: [String] = [], sources: [String]? = nil, publicHeadersPath: String? = nil) -> PackageDescription.Target
                       ^

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:swiftBuildArm64Debug'.
> Process 'command '/Users/geert/android/swift-android-current/build-tools/1.9.6-swift5/swift-build'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s

Publish 0.7.1

@andriydruk / @zayass

Would it be possible to get the latest changes in master that fix Swift 5 warnings for generated code published?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.