It's actually pretty amazing. C/C++ has lots and lots of well established, well tested, open source code in every possible domain. There's also a pretty large base of programmers familiar with the language. There's no dearth of tooling on any platform. And you can do pretty much anything you want to squeeze performance out of the mobile platform (think watches).
If you can write bulk of your business logic as a C/C++ library with clear API's to call into it, then you can simply compile it directly into the ObjC code on iOS and add a thin JNI wrapper on those API's on Android. It works beautifully. We do this for our mobile specific protocol code.
It's about 50K lines of code all told (using simple find | wc -l ) all library code used (except for language and posix standard libraries) is included in the repo.
"What is the build cycle time for your C++ code?"
Depending on the machine, 10-20 seconds
"Does it kill xcode's indexer?"
Not at all.
"Does it get included into the iOS project?"
Yes it does. We have it as a git sub repo and a sub project in XCode. Both those things allow us great freedom in independent development, testing, release versioning etc. Of course there are also make files for independent build/test cycles on linux etc.
Another bonus of having it as a first class XCode project, clang Analyze tool does beautiful static analysis. What a godsend that is.
Yeah at my old job, the C++ part was more around 500'000 lines of code, and it took 15 minutes to compile full cycle. And it also killed xcode's indexer.
It's actually pretty amazing. C/C++ has lots and lots of well established, well tested, open source code in every possible domain. There's also a pretty large base of programmers familiar with the language. There's no dearth of tooling on any platform. And you can do pretty much anything you want to squeeze performance out of the mobile platform (think watches).
If you can write bulk of your business logic as a C/C++ library with clear API's to call into it, then you can simply compile it directly into the ObjC code on iOS and add a thin JNI wrapper on those API's on Android. It works beautifully. We do this for our mobile specific protocol code.