Swift Androidアプリ作成入門

4681 ワード

#前言Swift標準ライブラリでは、Android armv 7のカーネルをコンパイルできます.これにより、Androidモバイルデバイス上でSwift文コードを実行できます.この文書では、あなたのアンドロイド携帯電話で簡単な「hello,world」プログラムを実行する方法について説明します.このガイドをうまく使うためには、次の知識が必要です.
  • は、SwiftソースのLinux環境をコンパイルすることができる.stdlibは現在、Linux環境でのみアンドロイドで使用可能なバージョンにコンパイルできます.Androidの構築を試みる前に、SwiftプロジェクトのREADMEを参考にLinuxをコンパイルできることを確認してください.
  • Android NDKは、21以上のバージョンで、次のリンクでダウンロードできます.http://developer.android.com/ndk/downloads/index.html.
  • リモートデバッグ可能なアンドロイドデバイス.リモートデバッグでstdlibの結果をアンドロイドデバイスに配備する必要があります.次の公式ウィザードに従ってリモートデバッグできます.https://developer.chrome.com/devtools/docs/remote-debugging.Android環境でSwiftが作成したプログラム「Hello,World」を表示する方法を紹介します.

  • #Androidの「Hello,world」##1.Swift Android stdlib依存の構築
    Linuxの下のSwift stdlibを構築するにはapt-get install libicu-dev icu-devtoolsが必要であることに気づいたかもしれません.簡単に言えば、アンドロイドデバイス上で使用されるSwift stdlibを構築するにはlibiconvとlibicuが必要です.しかし、これらのライブラリのアンドロイドデバイスバージョンが必要です.アンドロイドデバイスのlibiconvとlibicuを構築します.
    1.   curl, antoconf, antomake, libtook  git。
    2.   SwiftAndroid/libiconv-libicu-android  。 :git clone [email protected]:SwiftAndroid/libiconv-libicu-android.git。
    3.   which ndk-build。 NDK ndk-build 。 , NDK PATH 。
    4.   libiconv-libicu-android  ,  build.sh。
    5.  libiconv-libicu-android  armeabi-v7a/icu/source/i18n armeabi-v7a/icu/source/common 。
    

    ##2. Androidで使用されているSwitf stdlibを構築してSwitfディレクトリを入力し、構築スクリプトを実行してAndroid NDKとlibicu/libiconvディレクトリにパスを渡します.
    $ utils/build-script \
        -R \                                           # Build in ReleaseAssert mode.
        --android \                                    # Build for Android.
        --android-ndk ~/android-ndk-r10e \             # Path to an Android NDK.
        --android-ndk-version 21 \                     # The NDK version to use. Must be 21 or greater.
        --android-icu-uc ~/libicu-android/armeabi-v7a/libicuuc.so \
        --android-icu-uc-include ~/libicu-android/armeabi-v7a/icu/source/common \
        --android-icu-i18n ~/libicu-android/armeabi-v7a/libicui18n.so \
        --android-icu-i18n-include ~/libicu-android/armeabi-v7a/icu/source/i18n/
    

    ##3. コンパイルswiftはアンドロイドデバイス上で簡単なSwiftファイルを作成し、helloと名付けた.swift:
    print("Hello, Android")
    

    ステップ2で構築したSwiftコンパイラを使用してSwiftソースコードをコンパイルし、ターゲットをアンドロイドに設定します.
    $ build/Ninja/ReleaseAssert/swift-linux-x86_64/swiftc \                   # The Swift compiler built in the previous step.
        -target armv7-none-linux-androideabi \                                # Targeting android-armv7.
        -sdk ~/android-ndk-r10e/platforms/android-21/arch-arm \               # Use the same NDK path and version as you used to build the stdlib in the previous step.
        -L ~/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a \  # Link the Android NDK's libc++ and libgcc.
        -L ~/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.8 \
        hello.swift
    

    これにより、コマンドを実行するディレクトリの下にhello実行可能ファイルが生成されるはずです.Linux環境でこの実行可能ファイルを実行しようとすると、次のエラーが表示されます.
    cannot execute binary file: Exec format error
    

    これは、Androidデバイス上で構築された実行可能ファイルを実行するためです.Linux上で実行できるはずがありません.次に、アンドロイドデバイスに配備して実行します.
    ##4. 構築された製品をデバイスに配備adb pushコマンドを使用して、構築された製品をLinux環境からアンドロイドデバイスにコピーできます.adb devicesコマンドを実行する前に、デバイスが接続されていることを確認し、リストされていることを確認し、次のコマンドを実行してSwift Android stdlibをコピーします.
    $ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftCore.so /data/local/tmp
    $ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftGlibc.so /data/local/tmp
    $ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftSwiftOnoneSupport.so /data/local/tmp
    $ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftRemoteMirror.so /data/local/tmp
    $ adb push build/Ninja-ReleaseAssert/swift-linux-x86_64/lib/swift/android/libswiftSwiftExperimental.so /data/local/tmp
    
    

    また、Android NDKのlibc++:
    $ adb push ~/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so /data/local/tmp
    
    

    最後に、前に構築したhello実行可能ファイルをコピーする必要があります.
    $ adb push hello /data/local/tmp
    

    ##5. Androidデバイスで「Hello,World」を実行すると、Androidデバイスでadb shellコマンドを使用してhello実行可能ファイルを実行できます.
    $ adb shell LD_LIBRARY_PATH=/data/local/tmp hello
    

    次の出力が表示されます.
    Hello, Android
    

    おめでとう!アンドロイドで最初のSwiftプログラムを実行したばかりです.皆さんが信じないなら、上記の手順に従って自分でやってみてください.
     : , 、 、 .
    

    英文原文:Getting Started with Swift on Androidリンク:https://github.com/apple/swift/blob/master/docs/Android.md