Slide 1

Slide 1 text

4XJGU"OEPSPJEΛ࢖ͬͯ γϛϡϨʔλͰΞϓϦΛಈ͔ͨ͠࿩ ؔ੢ϞόΠϧΞϓϦݚڀձ  !NBUVZVKJ

Slide 2

Slide 2 text

@matuyuji safx-dev.blogspot.jp

Slide 3

Slide 3 text

4XJGU"OESPJE

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Port of Apple's reference Swift toolchain to Android; doesn't quite work yet SwiftAndroid / swift forked from apple/swift

Slide 7

Slide 7 text

https://github.com/SwiftAndroid/swift/wiki/Getting-started

Slide 8

Slide 8 text

6CVOUV CJU

Slide 9

Slide 9 text

https://www.vagrantup.com

Slide 10

Slide 10 text

7BHSBOU

Slide 11

Slide 11 text

7BHSBOU vagrant init boxcutter/ubuntu1510 vagrant up vagrant ssh

Slide 12

Slide 12 text

/%,4XJGU"OESPJE curl -LO http://dl.google.com/android/ndk/android-ndk-r10e-linux- x86_64.bin chmod a+x android-ndk-r10e-linux-x86_64.bin ./android-ndk-r10e-linux-x86_64.bin > /dev/null export ANDROID_NDK_HOME=$HOME/android-ndk-r10e curl -LO https://github.com/SwiftAndroid/swift/releases/download/ swiftandroid-2016-01-06/swift_android_2016-01-06.tar.xz tar xf swift_android_2016-01-06.tar.xz export PATH=$PATH:$HOME/swiftandroid/bin

Slide 13

Slide 13 text

$PNQJMF $ echo 'print("Hello world!")' > hello.swift $ swiftc-android hello.swift $ file hello hello: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, not stripped

Slide 14

Slide 14 text

"OESPJE4%, sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install -y libncurses5:i386 \ libstdc++6:i386 \ zlib1g:i386 sudo apt-get install -y openjdk-7-jdk curl -LO http://dl.google.com/android/android-sdk_r24.4.1- linux.tgz tar xf android-sdk_r24.4.1-linux.tgz export ANDROID_HOME=$HOME/android-sdk-linux echo y | $ANDROID_HOME/tools/android update sdk \ —-no-ui —-all \ —-filter platform-tools,tools,android-23,build-tools-23.0.2

Slide 15

Slide 15 text

4XJGU"OESPJE(SBEMF git clone https://github.com/SwiftAndroid/ swift-android-gradle.git cd swift-android-gradle ./gradlew install

Slide 16

Slide 16 text

4XJGU"OESPJE4BNQMFT git clone https://github.com/SwiftAndroid/ swift-android-samples.git cd swift-android-samples/swifthello ./gradlew build cp -r build/outputs/apk/ /vagrant

Slide 17

Slide 17 text

7BHSBOU 1SPWJTJPOJOH

Slide 18

Slide 18 text

TBGY4XJGU"OESPJE7BHSBOU git clone https://github.com/safx/SwiftAndroid-Vagrant.git cd SwiftAndroid-Vagrant vagrant up ls apk vagrant halt vagrant destroy

Slide 19

Slide 19 text

4JNVMBUPS

Slide 20

Slide 20 text

4JNVMBUFPO.BD curl -LO http://dl.google.com/android/android-sdk_r24.3.4- macosx.zip unzip android-sdk_r24.3.4-macosx.zip cd android-sdk-macosx echo y | ./tools/android update sdk -a --no-ui —-filter \ android-23,sys-img-armeabi-v7a-android-23,platform-tools ./tools/android list targets ./tools/android create avd -n my_android23 -t 1 ./tools/emulator -avd my_android23 ./platform-tools/adb install swifthello-debug.apk

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

4PVSDFT

Slide 24

Slide 24 text

NBJOTXJGU @_silgen_name("Java_net_zhuoweizhang_swifthello_SwiftHello_return42") public func return42() -> Int { return 42 }

Slide 25

Slide 25 text

4XJGU)FMMPKBWB public class SwiftHello extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); loadNativeDependencies(); TextView myText = (TextView) findViewById(R.id.mytext); myText.setText("Result of swift return42() function is " + return42()); } private static void loadNativeDependencies() { System.loadLibrary("c++_shared"); System.loadLibrary("icudata"); System.loadLibrary("icui18n"); System.loadLibrary("icuuc"); // Swift System.loadLibrary("swiftCore"); System.loadLibrary("swiftGlibc"); // Our library System.loadLibrary("swifthello"); } public static native int return42(); }