+ All Categories
Home > Software > Mobile Cross-Platform Development in C++

Mobile Cross-Platform Development in C++

Date post: 08-Feb-2017
Category:
Upload: ragi-burhum-espinoza
View: 552 times
Download: 2 times
Share this document with a friend
14
RAGI BURHUM Mobile Cross-platform Development in C++ RBURHUM
Transcript

PowerPoint Presentation

RAGI BURHUMMobile Cross-platform Development in C++

RBURHUM

WHAT IS AMIGOCLOUDAmigoCloud is a SaaS Enterprise Mapping Platform that is changing how organizations work with their location data.

https://www.youtube.com/watch?v=lj6OeTZgzM8

DEMO

DATA COLLECTION MOBILE APPLICATIONAMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++AndroidiOS

Map Rendering (OpenGL)Data Collection Forms are user-customizable (through HTML + JavaScript).Intensive Geospatial OperationsCommon Code between all platformsa) 95% C++ codeb) 5% platform-specific codeiOS, Android, OSX, Linux, Windows

HOW?AMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++No third party frameworkLeverage POSIXC++ 11 codebase (e.g. threads, shared pointer types, lambdas, STL)GCC or Clang/LLVMWebkitCustom Build system to handle complexity of compiling (AmigoMake)...

AMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++Yet another build system?!?!?

Y U NOT USE X

BUILD SYSTEM: AMIGOMAKEAMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++Open Source built by us for us.Python basedDownloads all external libraries (e.g. freetype, jpeg, sqlite, openssl, libcurl, etc)Trivial to add more dependenciesBuilds it for the target system (can generate shared libs, static libs or executables). Finds all the .c, .cpp, .m, .mm files and the headers and builds it according to AmigoMakefileBuilding dependencies is one of the most complex parts of pulling this off. We wanted it to be easy.

BUILD SYSTEM: AMIGOMAKEAMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++iOS build (with external dependencies)amigomake --all -a armv7 -a arm64 clean ios -v 8.1Android build (with external dependencies)amigomake --all android -n ~/android-ndk/ -v 14X86 build (with external dependencies)amigomake --all x86Generate CMake config (e.g. to use with Intellij/CLion)amigomake cmake x86

AMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++

HOW DO YOU INTERACT WITH C++ IN iOSAMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++Actually, we use Objective C++. Rename .m to .mm and you are good to go!

Example of Objective C calling C++

Example of C++ calling Objective-C

HOW DO YOU INTERACT WITH C++ in AndroidAMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++Java Native Interface (JNI)Java ClassC++ Function PrototypeC++ Implementation

HOW DO YOU INTERACT WITH WEBKIT AND JAVASCRIPTAMIGOCLOUD: MOBILE CROSS-PLATFORM DEVELOPMENT IN C++Through a bridge (i.e. implement a class in your native language and expose it to JavaScript)JavaScript and iOS Bridge (header, implementation)JavaScript and Android Bridge (implementation)

RAGI BURHUMPROFESSIONAL MAPPING. REDEFINED

[email protected]


Recommended