Skip to content
This repository has been archived by the owner on Aug 8, 2021. It is now read-only.

Latest commit

 

History

History
43 lines (36 loc) · 2.26 KB

README.md

File metadata and controls

43 lines (36 loc) · 2.26 KB

[Deprecation] It is safe to say that this techique to share code between Android and iOS is deprecated. I would recommend looking at other means to do this technique, e.g. Kotlin Mutliplatform Mobile etc. Some of my repositories also move towards using KMM instead.

Cookpit

Flickr API implementation for Android/iOS with C++ core

Requirement

  • python (required for gyp)
  • xcode & xcodebuild
  • android ndk and ndk-build on your PATH to build for android
  • Configure the paths to your Android SDK and Android NDK in your local.properties

Installation

  • Run make lib to build xcodeproj for shared library.
  • Run make ios to build library for iOS project, located under ios/
  • Run make android to trigger ndk-build for Android project, located under android/

Building

  • Running any make command will automatically download gyp and create .xcodeproj files suitable for developing on each platform.
  • Please consult iOS and Android folder for more detail on the application layer.

Make targets:

  • clean - clean all generated files
  • ios - build library name libcookpit.a, libcookpit_ios.a suitable for iOS
  • android - build library name libcookpit_android.so suitable for Android

Tools

  • gyp - generates xcode project to develop iOS and C++ (nobody likes adding files and configure project manually)
  • djinni - generates all bridging code for C++, Java, Objective-C/C++

Folder structure

Cookpit
├── android/ # Android app (Android studio project)
├── cpp/ # Core cpp code and xcodeproj for develop C++
├── djinni/ # Djinni's interface files
├── ios/ # iOS app (open .xcworkspace)
├── utils/ # tools for tedious works, glob, clang-format etc.
├── vendors/ # 3rd party libraries and 3rd party libraries for C++ (gyp, djinni is also here)
├── common.gypi/ # gyp configuration file (common)
└── cookpit.gyp/ # gyp configuration file for this project