Android Studio is warning a call (from Firebase) will be deprecated end of 2019. This updates the versions of
* Frebase
* Gradle from 4.10.1 to 5.1.1
Also stubs a missing keyboard event handler in some of the sample/test projects.
Fixes#750
Currently, Keyman for Android targets SDK version 25 (Nougat).
This PR targets the latest Android API and updates all the Gradle dependencies to the latest. This will remove some lint Obsolete warnings.
Sample and Test projects needed to add
```
implementation 'com.android.support:support-v4:27.1.1'
```
to ensure all dependencies use the same version.
Consumers of KMEA need to include Firebase and Crashlytics dependencies, but don't need to run the Google services. This simplifies these projects of not neeeding google-services.json.
Also added `-no-daemon` and `-debug` options to Samples and Test `build.sh` scripts so they can be run on CI servers.
Per Android Studio 3.0 [Release Notes](https://android-developers.googleblog.com/2017/10/android-studio-30.html)
-Update gradle version
-Change deprecated `compile` dependencies to `implementation` or `api`
-Change maven repositories to google (triplet plugin still on maven)
- Update readme instructions for using the engine
`String.fromCharCode()` has a limitation to Unicode characters in the BMP. Change to `String.kmwFromCharCode()` to handle entire Unicode range.
Also clarified how default key codepoints are processed.
KeyboardHarness changes:
- Change text area font on keyboard change
- Added U_10481 to test longpress keyboard.
- Remove test tchad keyboard
Update comments explaning how control codes U_0000 to U_001F and U_0080 to U_009F are suppressed.
Also updated longpress test keyboard to test control codes.
A tchad keyboard has a diacritic rule that converts `=` (U_003D) into a combining macron (U_0304).
A longpress on `»` (U_00BB) was inadvertently triggering the diacritic rule, and outputting the macron.
The longpress code in KMEA and KMW needs to be refactored so they dont confuse key text (U_00BB is decimal 187) with underlying keyCodes (`=` is keyCode 187).
- fix KMW executePopupKey so key code is dictionary lookup instead of parsing the keyID.
- clean up JS call to executePopupKey since it only uses the keyID
Currently on the touch layout, longpress for K_SPACE causes the app to crash because it is attempting to parse `K_SPACE` as an int for generating the longpress text.
- Clean up when key text is empty how it is parsed from Id
-Change Unicode hex string delimiter from `,0x` to `\\u` which makes it easier to read `executePopupKey()` in the logs.