I enjoy hearing what happens behind the curtains at BlackBerry from friends who work there but usually there is not much I can share in terms of details without risking their jobs. That is why I was so happy to see the story behind the updated Android Runtime in BlackBerry 10.2.1 published by the Register. Its the story of two cutting edge BlackBerry engineers who were “90 per cent sure” they could get Linux extensions running natively on QNX without recompilation or pre-processing. Management took the gamble on them and now we have OS 10.2.1…
I highly recommend you read the whole story (or what The Register has of the story) but I will summarize below. Essentially when BlackBerry first introduced their Android runtime they did not support native extensions and later allowed for extension support but apps had to be recompiled by the developer which took quite a bit of persuasion and never happened… Two developers at BlackBerry pitched management that they could perform:
“a wide, labour-intensive component: dynamic cross linking, validating and shimming of the Linux APIs on QNX, and a really deep and tricky hack: catching syscalls in apps that bypassed libs, or had libs statically linked.”
In short they did some pretty impressive wizardry to allow native functions to be called and then linking them to QNX functions natively even if they were hardcoded to require specific libraries. BlackBerry did not translate the binaries to QNX but rather provided a real time “shim” from the Linux binaries to QNX. Pretty cool stuff! This is the kind of thing we want to see more of at BlackBerry!