BLE is native supported on Android from v4.3. It has been continuously improved as Android evolving. It's getting more and more complex with additional features. It's important that a Bluetooth app should work smoothly on all Android versions, from 4.3 to the latest one. One may find it's tricky to keep track of all the issues from earlier Android versions and the changes in BLE APIs of different API levels.
To help you with this, our app developers have provided a note, discussing about most important changes and added features on newer Android version 5 and 6, including some testings we have done on different Android phones regarding BLE performance.
Some interesting topic:
Required permissions for BLE app.
Scanning: different scan mode, report delay, callback type, etc
Connection: autoConnect, connection parameter update, MTU, number packets per connection parameters.
GATT server, advertising, how to set it up.
This document is strongly recommended to whom developing Android apps:
Question and issue, please post as a separated case and post the link here.
Thanks again Emil! From my side I'll just add that nRF Connect 4.11 is using connectGatt method with 4 parameters (transport set to LE) since v 4.11. I'm using reflections on Android 4.4-5.1, where this method was hidden. On 4.3 it was not accessible.