Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sharing Code Between iOS & Android

Avatar for Ken Myers Ken Myers
September 11, 2018

Sharing Code Between iOS & Android

Avatar for Ken Myers

Ken Myers

September 11, 2018

Other Decks in Programming

Transcript

  1. Commands Responses !4 App Terminal • Commands & responses are

    byte sequences sent over Bluetooth • Driver generates commands & parses responses • Developed in-house
  2. © Coiney, Inc. Problems With Previous Setup • Separate Objective-C

    & Java implementations • Functional discrepancies • Have to maintain two separate implementations • Lots of technical debt • Limited resources !6
  3. © Coiney, Inc. What we did • Implement a C++

    library with Objective-C & Java APIs • For iOS, wrap in a Cocoa Touch Framework • For Android, write a JNI layer !7
  4. © hey, Inc. Made with fun. !12 package com.coiney.commonmpi object

    CMCommand { init { System.loadLibrary("native-mpi") } @JvmStatic external fun createDisplayImage(fileName: String): ByteArray @JvmStatic external fun createDisplayMedia(fileName: String, offsetX: Int, offsetY: Int): ByteArray @JvmStatic external fun createStartNFC(): ByteArray @JvmStatic external fun createStopNFC(): ByteArray @JvmStatic external fun createFlashLED( led1: Boolean, led2: Boolean, led3: Boolean, led4: Boolean ): ByteArray @JvmStatic external fun createIlluminateLED( led1: Boolean, led2: Boolean, led3: Boolean,
  5. © Coiney, Inc. Challenges • Coming up with a clean

    API • Objective-C • JNI • Comprehensive unit tests with CI !13
  6. © Coiney, Inc. Conclusion • Team members gained C++ experience

    • Improved modularity • Unit tests improved quality !14