Sparkは、iPhone、iPad、Mac、Apple Watchで無料で利用できる最も人気のある電子メールアプリの1つです。 Androidプラットフォーム上の何百万人ものユーザーにとって、Sparkがあなたの電子メールを愛するのに役立つ時間はそれほど遠くありません。 その間に、私たちはあなたとAndroid用Swiftでの作業の痛みと手間を取る私たちが作成した信じられないほどの新しいツールチェーンを共有したいと思います。 このツールチェーンは、開発チームがiosまたはMacプラットフォーム用に作成したコードを利用して、優れたAndroidアプリケーションを作成するのに役立ちます。

Apple Swiftコンパイラは、Androidプラットフォーム用のコードを数年前からコンパイルすることができましたが、その複雑さのために開発者コミュニティでは多くの友達を作っていませんでした。 私たちのツールチェーンは、プロセスの複雑さと頭痛を取り除くことによってこの問題を解決するように設計されているので、ユーザーのための優れたア

AndroidバージョンのSparkの開発に取り組み始めたとき、Android&iOS開発の両方に使用できるクロスプラットフォーム言語と、既存のObjective-Cコードベースからの移行も容易

Swiftがオープンソースプロジェクトになったのはこの頃であり、しばらくしてAndroidプラットフォーム用のコードをコンパイルする機能も得られました。 我々は我々のオプションを検討し、それは我々がその方向に移動する必要があることを私たちにはかなり明白でした。

Swift Android Compilerはどのように動作しますか?

それに対する答えは簡単です:低レベルの仮想マシン。

LLVMは、再ターゲット可能性を持つ三相設計の概念に基づいたコンパイラインフラストラクチャです。 簡単に言えば、これは、フロントエンドのLLVMコンパイラを持つ任意の言語を、LLVMバックエンドコンパイラを持つ任意のターゲット用にコンパイルできることを意味します。

Googleはすでに、C/C++でのネイティブAndroid開発のためのLLVMコンパイラを使用しています。 そのため、Androidデバイスの観点からは、C/C++やSwiftコードからコンパイルされたライブラリに違いはありません。 さらに、C/C++開発用に作成されたツールのほとんどを再利用できるため、開発者にとっては実際には優れています-AndroidプロファイリングツールまたはAndroid低レベ

まあ…多くはありません。 私たちはツールチェーン内のSwiftCore、Dispatch、およびSwiftFoundationにのみアクセスできます。 SwiftCoreとDispatchは、iOSとMacのバージョンとほぼ同じです。 しかし、一方でSwiftFoundationは、Appleが独自のプラットフォームで使用しているのと同じ基盤ではありません。 そのため、SwiftFoundationにはまだいくつかの機能がありませんが、ネットワーク要求の実行、JSON/XMLの解析、ディスクへのデータの保存など、すべての基本的なニーズをカバー

明らかにUIKitや高レベルのフレームワークは利用できないので、iOS用のSwiftアプリはandroid上で魔法のように実行することはできません。

Swift Androidコンパイラの制限は何ですか?

  • 現時点では、SwiftコンパイラはARM-v7a Androidプラットフォームのみをサポートしています。
  • サポートされているAndroidの最小バージョンはv5.0(Lollipop)です。ビルドにはSwiftCode、SwiftFoundation、およびlibDispatchを含める必要があるため、最も重要な制限の1つは32MB+APKファイルの生成です。

Swift Androidツールチェーンの紹介

Swift compiler For Androidを使用する上での最大のハードルの1つは、Appleからの公式サポートの欠如であり、これは継続的な統合や公式ビ Swift for Androidでの開発に存在する多くの手間を最適化すると同時に、この分野の開発者の経験を向上させることができることに気付きました。 私たちは、Android開発者がこれらのツールを使用するときに一般的に苦しむ必要があるすべての頭痛を避けたかったのです。

それが私たちがSwift Android Toolchainを持っている理由です—Android開発者がプロジェクトでSwiftを快適に、そして面倒なことなく使用できるようにするツールのコレク これは、Apple SwiftコンパイラとSwiftJavaとSwiftAndroidプロジェクトに基づいたオープンソースプロジェクトです。 ツールチェーンはBintray(Macのみ)から直接ダウンロードするか、GitHubから自分でコンパイルすることができます。

現在、フォークされたバージョンのSwiftを使用しています。 私たちのforkには、Darwin以外のプラットフォームでは正しく動作しないため、コンパイラで@objcと動的機能を無効にするオプションが含まれています。 また、いくつかのマイナーな修正が含まれています。 私たちは、将来的に公式のSwiftリポジトリを使用できるように取り組んでいます。

さらに、SwiftのビルドシステムとしてSwift Package Manager(SPM)を使用しています。 これは、Appleがコンパイラや他のSwiftライブラリで使用するビルドシステムです。 このツールは、依存関係の接続、コードのコンパイル、成果物(動的ライブラリまたは実行可能ファイル)のリンク、およびテストの実行を可能にします。 当社のツールチェーンに加えて、ANDROIDアプリの開発とテストのすべてのプロセスを自動化するSPM用のスクリプトを提供しています。もちろん、コマンドラインからSwiftコードをビルドするのは素晴らしいことですが、Android開発者がAndroid Studio IDEを使用する方が自然です。 幸いなことに、Android IDEは’Gradle’と呼ばれる非常に柔軟なビルドシステムを使用しています。

Swift compilationビルドステップを追加するためのGradleプラグインを作成しました。 これにより、Swift/Java/Kotlinの混合プロジェクトを1つのボタンで構築することができます。

JVMの相互運用性

すべてのAndroidアプリケーションはJava仮想マシンで実行されます。 開発者がネイティブコード(C/C++)を好む場合は、アプリ内にライブラリをロードし、Java Native Interface(JNI)を介して対話する必要があります。 Swiftも例外ではありません。 したがって、JVMでSwiftコードを使用するには、ライブラリをロードしてJNIブリッジを記述する必要があります。

どのJVM言語(JavaまたはKotlin)を使用し、ブリッジコードをどのように記述するかは完全にあなた次第ですが、JavaクラスとインターフェイスからすべてのJNIコードを生成するSwiftアノテーションプロセッサを見てみることをお勧めします。

Blueprint project

ReaddleのAndroidチームは、swift Androidツールチェーンを実際に試すためのサンプルSwiftアプリケーションを作成しました。 Swift for Androidを試してみたい場合、これは最初から優れたプロジェクトです。 Blueprintプロジェクトは、Swiftで書かれたビジネスロジックを備えたシンプルなto-doアプリですが、UIはJavaで作成されています。

テスト

SwiftプロジェクトにはすでにXCTestと呼ばれるテストフレームワークが含まれており、Androidプラットフォーム上でSwiftコードをテストするために既に使用 その後、開発者はAndroidデバイス上でバイナリ実行可能ファイルをアップロードし、Androidシェルを介して実行することができます。

ボーナス:当社のツールチェーンは、このテストプロセスのすべての段階を自動化します。 Blueprintプロジェクトには、いくつかの簡単なテストが含まれています。

次は何ですか?

私たちはまだSwift toolchainのために多くのことをしています:

  • ARM64コンパイラ(仮期限:2019年8月)
  • X86、X86_64コンパイラ(Chromebookサポート)
  • Lldb、Swiftサポート: クライアントとサーバー

Swift Androidツールチェーンが、開発プロセスを簡単かつ手間のかからないものにするのに役立つことを願っています。 Swift言語はここ数年で大きく進化しており、すでにSwiftを使用してiOSとMacプラットフォーム用にコードを作成している開発者は、Androidをレーダーに簡単に搭載でき

ソース

  1. Android上でSwiftを使い始めるhttps://github.com/apple/swift/blob/master/docs/Android.md
  2. オープンソースアプリケーションのアーキテクチャ: LLVM http://www.aosabook.org/en/llvm.html
  3. Swift Android Toolchain https://github.com/readdle/swift-android-toolchain
  4. Swift Android Buildtools https://github.com/readdle/swift-android-buildtools
  5. Gradle plugin for building Swift code for Android https://github.com/readdle/swift-android-gradle
  6. Swift Java Code generation annotation processor https://github.com/readdle/swift-java-codegen
  7. Swift Android Blueprint project https://github.com/readdle/swift-android-architecture

コメントを残す

メールアドレスが公開されることはありません。