I chose the Crosswalk project, which sounded right, because it supports mobile platforms, and they claimed they keep up with the chromium source changes. The problem with the whole project is that it is designed as a plug-n-play tool. If you download their packages, there are convenient tools to create an android app from the ground up and only write HTML5 stuff. It also integrates really well with Cordova, which is a project designed to support web applications on all platforms with an easy-to-use API. It provides access to platform features (for example GPS, Contacts…) for the HTML5 apps. And although we also use Cordova in our web apps, this was not enough for our needs.
I needed to create an android app that can connect to our API through a JNI bridge and I needed to use custom chromium to display/run our webapps. I could reuse our patchfiles from CEF because both of them built on the chromium source but of course I also needed to patch the crosswalk part of the code and build everything on Android which was done just enough that I could have a slight idea of what to do, but far from complete.
The main problem was to configure every element to use the same toolchain, which meant 5 different configuration: OpenSSL, ICU, Boost, CMAKE, GYP/GN. I almost needed to configure scons as well, but luckily the android client didn’t need that library. Some project needed to standalone-toolchain version of the NDK, other needed the whole stuff. In the end I managed to build everything with GCC and linking it against the LLVM C++ library, which seems like a crazy idea, but chromium somehow worked better with that library and our project compiled better with GCC, so I had to compromise. The only price was patching LLVM library in the NDK itself (llvm-gcc bug), apart from the weeks of trying out different configuration options.
To be continued…