diff --git a/android/KMAPro/kMAPro/build.gradle b/android/KMAPro/kMAPro/build.gradle index 444de4a962..458e78ba9e 100644 --- a/android/KMAPro/kMAPro/build.gradle +++ b/android/KMAPro/kMAPro/build.gradle @@ -18,7 +18,7 @@ java { } android { - compileSdk 35 + compileSdk 36 namespace="com.tavultesoft.kmapro" // Don't compress kmp files so they can be copied via AssetManager @@ -33,7 +33,7 @@ android { defaultConfig { applicationId "com.tavultesoft.kmapro" minSdkVersion 21 - targetSdkVersion 35 + targetSdkVersion 36 //println "===DUMPING PROPERTIES===" //dumpProperties(project) // Use this to dump all external properties for debugging TeamCity integration diff --git a/android/KMEA/app/build.gradle b/android/KMEA/app/build.gradle index 4c0bf7dd0a..3577463ca4 100644 --- a/android/KMEA/app/build.gradle +++ b/android/KMEA/app/build.gradle @@ -19,7 +19,7 @@ java { } android { - compileSdk 35 + compileSdk 36 namespace "com.keyman.engine" buildFeatures { @@ -29,7 +29,7 @@ android { defaultConfig { minSdkVersion 21 - targetSdkVersion 35 + targetSdkVersion 36 // VERSION_CODE and VERSION_NAME from version.gradle but Gradle removes them for libraries buildConfigField "String", "KEYMAN_ENGINE_VERSION_NAME", "\""+VERSION_NAME+"\"" diff --git a/android/README.md b/android/README.md index 76ebf90b22..36a3727075 100644 --- a/android/README.md +++ b/android/README.md @@ -79,8 +79,10 @@ analytics for Debug are associated with an App Bundle ID Replace `SERIAL` with the device serial number listed in step 2. ### Compiling the app's offline help + Keyman for Android help is maintained in the Markdown files in android/docs/help. -The script `/resources/build/build-help.inc.sh` uses the `pandoc` tool to convert the Markdown files into html. +The script `/resources/build/build-help.inc.sh` uses the `pandoc` tool to convert +the Markdown files into html. ```bash # Convert markdown to html for offline help @@ -95,7 +97,9 @@ There are two included sample projects that can be modified to test a keyboard. **android/Samples/KMSample1** app runs a bare Keyman app for testing a keyboard. -**android/Samples/KMSample2** app provides prompts for setting KMSample2 as a system level keyboard. +**android/Samples/KMSample2** app provides prompts for setting KMSample2 as a +system level keyboard. + Both sample apps include a default Tamil keyboard and sample dictionary. Building the debug versions of these projects follow the same steps as KMAPro: @@ -106,12 +110,16 @@ Building the debug versions of these projects follow the same steps as KMAPro: ### Tests: KeyboardHarness -**android/Tests/KeyboardHarness** app is a test harness for developers to troubleshoot keyboards. +**android/Tests/KeyboardHarness** app is a test harness for developers to +troubleshoot keyboards. 1. Copy the keyboard js file and applicable ttf fonts to *android/Tests/KeyboardHarness/app/src/main/assets/*. 2. In Keyman Developer - * Open the `keyboardharness.kpj` project and add your keyboard files to the keyboard package. - * Build the keyboardharness.kmp keyboard package + + * Open the `keyboardharness.kpj` project and add your keyboard files to the + keyboard package. + * Build the keyboardharness.kmp keyboard package + 3. Add the keyboard in *android/Tests/KeyboardHarness/app/src/main/java/com/keyman/android/tests/keyboardHarness/MainActivity.java* 4. cd to android/Tests/KeyboardHarness/ 5. `./build.sh configure build` @@ -120,62 +128,74 @@ Building the debug versions of these projects follow the same steps as KMAPro: -------------------------------------------------------------- ## How to Build Keyman Engine for Android -1. Open a terminal or Git Bash prompt and go to the Android project folder (e.g. `cd ~/keyman/android/`) + +1. Open a terminal or Git Bash prompt and go to the Android project folder + (e.g. `cd ~/keyman/android/`) 2. Run `./build.sh build:engine` -Keyman Engine for Android library (**keyman-engine.aar**) is now ready to be imported in any project. +Keyman Engine for Android library (**keyman-engine.aar**) is now ready to be +imported in any project. ## How to Use Keyman Engine for Android Library 1. Add **keyman-engine.aar** into **[Your project folder]/app/libs/** folder. - a. We recommend [downloading](https://keyman.com/downloads/#android-engine) the the latest stable release of Keyman Engine and extracting the .aar file. - b. If you choose to use your own build of the Keyman Engine, get the library from **android/Samples/KMSample1/app/libs/keyman-engine.aar** + + a. We recommend [downloading](https://keyman.com/downloads/#android-engine) + the the latest stable release of Keyman Engine and extracting the .aar file. + + b. If you choose to use your own build of the Keyman Engine, get the library + from **android/Samples/KMSample1/app/libs/keyman-engine.aar** 2. Open your project in Android Studio. 3. Open **build.gradle** (Module: app) in "Gradle Scripts". 4. Check that the `android{}` object, includes the following: -```gradle -android { - compileSdkVersion 35 - // Don't compress kmp files so they can be copied via AssetManager - aaptOptions { - noCompress "kmp" - } + ```gradle + android { + compileSdkVersion 36 + + // Don't compress kmp files so they can be copied via AssetManager + aaptOptions { + noCompress "kmp" + } + + buildFeatures { + buildConfig = true + } + ``` - buildFeatures { - buildConfig = true - } -``` 5. After the `android {}` object, include the following: -````gradle -repositories { - flatDir { - dirs 'libs' + + ````gradle + repositories { + flatDir { + dirs 'libs' + } + google() + mavenCentral() } - google() - mavenCentral() -} -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.7.0' - implementation 'androidx.constraintlayout:constraintlayout:2.2.1' - implementation 'com.google.android.material:material:1.12.0' - api (name:'keyman-engine', ext:'aar') - implementation 'androidx.preference:preference:1.2.1' + dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.constraintlayout:constraintlayout:2.2.1' + implementation 'com.google.android.material:material:1.12.0' + api (name:'keyman-engine', ext:'aar') + implementation 'androidx.preference:preference:1.2.1' - // Include this if you want to have QR Codes displayed on Keyboard Info - implementation ('com.github.kenglxn.QRGen:android:3.0.1') { - transitive = true + // Include this if you want to have QR Codes displayed on Keyboard Info + implementation ('com.github.kenglxn.QRGen:android:3.0.1') { + transitive = true + } } -} + ```` -```` -5. include `import com.keyman.engine.*;` to use Keyman Engine in a class. +6. include `import com.keyman.engine.*;` to use Keyman Engine in a class. ### Keyman Engine for Android help content + Keyman Engine for Android help is maintained in the Markdown files in android/docs/engine/. ## Design Documentation -Internal design documents about features pertaining to Keyman for Android and Keyman Engine for Android are maintained in the Markdown files in android/docs/internal/. +Internal design documents about features pertaining to Keyman for Android and +Keyman Engine for Android are maintained in the Markdown files in android/docs/internal/. diff --git a/android/Samples/KMSample1/app/build.gradle b/android/Samples/KMSample1/app/build.gradle index 6428f3480f..65c0ecb8c9 100644 --- a/android/Samples/KMSample1/app/build.gradle +++ b/android/Samples/KMSample1/app/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdk 35 + compileSdk 36 namespace="com.keyman.kmsample1" // Don't compress kmp files so they can be copied via AssetManager @@ -14,7 +14,7 @@ android { defaultConfig { applicationId "com.keyman.kmsample1" minSdkVersion 21 - targetSdkVersion 35 + targetSdkVersion 36 versionCode 1 versionName "1.0" } diff --git a/android/Samples/KMSample2/app/build.gradle b/android/Samples/KMSample2/app/build.gradle index fded775e18..a7e4739320 100644 --- a/android/Samples/KMSample2/app/build.gradle +++ b/android/Samples/KMSample2/app/build.gradle @@ -3,7 +3,7 @@ plugins { } android { - compileSdk 35 + compileSdk 36 namespace="com.keyman.kmsample2" // Don't compress kmp files so they can be copied via AssetManager @@ -14,7 +14,7 @@ android { defaultConfig { applicationId "com.keyman.kmsample2" minSdkVersion 21 - targetSdkVersion 35 + targetSdkVersion 36 versionCode 1 versionName "1.0" } diff --git a/android/Tests/KeyboardHarness/app/build.gradle b/android/Tests/KeyboardHarness/app/build.gradle index 857b89564c..c53d3e9739 100644 --- a/android/Tests/KeyboardHarness/app/build.gradle +++ b/android/Tests/KeyboardHarness/app/build.gradle @@ -6,7 +6,7 @@ ext.rootPath = '../../../' apply from: "$rootPath/version.gradle" android { - compileSdk 34 + compileSdk 36 namespace="com.keyman.android.tests.keyboardHarness" // Don't compress kmp files so they can be copied via AssetManager @@ -21,7 +21,7 @@ android { defaultConfig { applicationId "com.keyman.android.tests.keyboardHarness" minSdkVersion 21 - targetSdkVersion 34 + targetSdkVersion 36 // VERSION_CODE and VERSION_NAME from version.gradle versionCode VERSION_CODE as Integer diff --git a/android/Tests/keycode/app/build.gradle b/android/Tests/keycode/app/build.gradle index bd2aa2b105..a208150e8a 100644 --- a/android/Tests/keycode/app/build.gradle +++ b/android/Tests/keycode/app/build.gradle @@ -4,7 +4,7 @@ ext.rootPath = '../../../' apply from: "$rootPath/version.gradle" android { - compileSdk 35 + compileSdk 36 namespace="com.keyman.android.tests.keycode" buildFeatures { @@ -15,7 +15,7 @@ android { defaultConfig { applicationId "com.keyman.android.tests.keycode" minSdkVersion 21 - targetSdkVersion 35 + targetSdkVersion 36 // VERSION_CODE and VERSION_NAME from version.gradle versionCode VERSION_CODE as Integer diff --git a/oem/firstvoices/android/app/build.gradle b/oem/firstvoices/android/app/build.gradle index 2b3f589320..d341db7a80 100644 --- a/oem/firstvoices/android/app/build.gradle +++ b/oem/firstvoices/android/app/build.gradle @@ -8,7 +8,7 @@ ext.rootPath = '../../../../android' apply from: "$rootPath/version.gradle" android { - compileSdk 35 + compileSdk 36 namespace="com.firstvoices.keyboards" buildFeatures { @@ -18,7 +18,7 @@ android { defaultConfig { applicationId "com.firstvoices.keyboards" minSdkVersion 21 - targetSdkVersion 35 + targetSdkVersion 36 // VERSION_CODE and VERSION_NAME from version.gradle versionCode VERSION_CODE as Integer