aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMenny Even Danan <menny@evendanan.net>2020-01-29 03:46:03 +0000
committerMenny Even Danan <menny@evendanan.net>2020-01-30 16:44:01 +0000
commit6d5481428b7eecfe0c2d00e8aa7ec4fe6cff411c (patch)
tree457dbd6e2e612f93b226134ce50b2f3320af6000
parent082f1459e97f6243857dd4c23831ff2568ec1cf4 (diff)
downloadAnySoftKeyboard-6d5481428b7eecfe0c2d00e8aa7ec4fe6cff411c.tar.gz
AnySoftKeyboard-6d5481428b7eecfe0c2d00e8aa7ec4fe6cff411c.tar.bz2
Initial language-packs merge
-rwxr-xr-x[-rw-r--r--].github/actions/codecov/upload_coverage.sh1
-rwxr-xr-x[-rw-r--r--].github/actions/collect-reports/collect.sh1
-rwxr-xr-x[-rw-r--r--].github/actions/deploy/deploy.sh1
-rwxr-xr-x[-rw-r--r--].github/actions/test-shard-run/run_tests.sh1
-rw-r--r--.gitignore5
-rw-r--r--addons/.generated_pack_version1
-rw-r--r--addons/.gitignore18
-rw-r--r--addons/.java-version1
-rw-r--r--addons/LICENSE201
-rw-r--r--addons/api/build.gradle11
-rw-r--r--addons/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java12
-rw-r--r--addons/base/build.gradle14
-rw-r--r--addons/base/src/main/AndroidManifest.xml6
-rw-r--r--addons/base/src/main/java/com/anysoftkeyboard/addon/PackBroadcastReceiverBase.java5
-rw-r--r--addons/build.gradle70
-rw-r--r--addons/buildSrc/build.gradle20
-rw-r--r--addons/buildSrc/src/main/java/MakeDictionaryPlugin.java120
-rw-r--r--addons/circle.yml139
-rw-r--r--addons/gradle.properties23
-rw-r--r--addons/gradle/all_android.gradle66
-rw-r--r--addons/gradle/language_pack_lib.gradle5
-rw-r--r--addons/gradle/publish_maven.gradle16
-rw-r--r--addons/gradle/versioning_add_on.gradle11
-rw-r--r--addons/gradle/versioning_root.gradle19
-rw-r--r--addons/gradle/wrapper/gradle-wrapper.jarbin58695 -> 0 bytes
-rw-r--r--addons/gradle/wrapper/gradle-wrapper.properties5
-rwxr-xr-xaddons/gradlew183
-rw-r--r--addons/gradlew.bat100
-rw-r--r--addons/key.storebin1348 -> 0 bytes
-rw-r--r--addons/languages/afrikaans_oss/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_qwerty.xml0
-rw-r--r--addons/languages/arabic/pack/src/main/java/com/anysoftkeyboard/languagepack/arabic/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/apk/src/main/res/values-hy/strings.xml0
-rw-r--r--addons/languages/armenian2/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_1.dictbin1003520 -> 1003520 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_2.dictbin1003520 -> 1003520 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_3.dictbin1003520 -> 1003520 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_4.dictbin509126 -> 509126 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/values-hy/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/values/armenian2_words_dict_array.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/values/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/ar_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v2.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v3.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/armenian2_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/armenian2/pack/src/main/res/xml/armenian2_keyboards.xml0
-rw-r--r--addons/languages/basque/pack/src/main/java/com/anysoftkeyboard/languagepack/basque/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/apk/src/main/res/values-pt/strings.xml0
-rw-r--r--addons/languages/brazilian/pack/src/main/java/com/anysoftkeyboard/languagepack/brazilian/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/pack/src/main/res/values/brazilian_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/pack/src/main/res/xml/brazilian_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/pack/src/main/res/xml/brazilian_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/pack/src/main/res/xml/brazilian_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty_with_symbols.xml0
-rw-r--r--addons/languages/build.gradle3
-rw-r--r--addons/languages/bulgarian/pack/src/main/java/com/anysoftkeyboard/languagepack/bulgarian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/catalan/pack/src/main/java/com/anysoftkeyboard/languagepack/catalan/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/croatian/pack/src/main/java/com/anysoftkeyboard/languagepack/croatian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/czech/pack/src/main/java/com/anysoftkeyboard/languagepack/czech/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/danish/pack/src/main/java/com/anysoftkeyboard/languagepack/danish/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/dutch/pack/src/main/java/com/anysoftkeyboard/languagepack/dutch/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/english/pack/build.gradle2
-rw-r--r--addons/languages/english/pack/src/main/java/com/anysoftkeyboard/languagepack/english/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/finnish/pack/src/main/java/com/anysoftkeyboard/languagepack/finnish/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/build.gradle0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/AndroidManifest.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/mipmap-hdpi/ic_launcher.pngbin2597 -> 2597 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/mipmap-mdpi/ic_launcher.pngbin1733 -> 1733 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/mipmap-xhdpi/ic_launcher.pngbin3444 -> 3444 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin5203 -> 5203 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin6790 -> 6790 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/values-fr/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/apk/src/main/res/values/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/build.gradle0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/build.gradle0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/dictionary/aosp.combined.gzbin1108437 -> 1108437 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/AndroidManifest.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/java/com/anysoftkeyboard/languagepack/french/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/values-fr/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/values/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/azerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/azerty_accents.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/azerty_with_hyphen.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/bepo.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/french_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/french_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/french_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/french/pack/src/main/res/xml/qwerty_with_symbols.xml0
-rw-r--r--addons/languages/georgian/pack/src/main/java/com/anysoftkeyboard/languagepack/georgian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/german/pack/src/main/java/com/anysoftkeyboard/languagepack/german/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/greek/pack/src/main/java/com/anysoftkeyboard/languagepack/greek/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/greek/pack/src/main/res/values/greek_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/greek/pack/src/main/res/xml/greek_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/greek/pack/src/main/res/xml/greek_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/greek/pack/src/main/res/xml/greek_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/greek/pack/src/main/res/xml/greek_qwerty.xml0
-rw-r--r--addons/languages/hebrew/pack/src/main/java/com/anysoftkeyboard/languagepack/hebrew/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/he_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_16keys.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_phonetic.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_physical.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_physical_for_moto_pro.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud_shin.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqquds.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/hebrew_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/hebrew/pack/src/main/res/xml/hebrew_keyboards.xml0
-rw-r--r--addons/languages/hungarian/pack/src/main/java/com/anysoftkeyboard/languagepack/hungarian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/indonesian/pack/src/main/java/com/anysoftkeyboard/languagepack/indonesian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/italian/pack/src/main/java/com/anysoftkeyboard/languagepack/italian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/kachin/pack/src/main/java/com/anysoftkeyboard/languagepack/kachin/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/kurdish/pack/src/main/java/com/anysoftkeyboard/languagepack/kurdish/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/latvian/pack/src/main/java/com/anysoftkeyboard/languagepack/latvian/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_16keys_portrait.pngbin185752 -> 185752 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_landscape.pngbin217950 -> 217950 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_portrait.pngbin208301 -> 208301 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_landscape.pngbin221787 -> 221787 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_portrait.pngbin206171 -> 206171 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_landscape.pngbin209647 -> 209647 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_portrait.pngbin199133 -> 199133 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_16keys.pngbin69641 -> 69641 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_landscape.pngbin87081 -> 87081 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_portrait.pngbin81623 -> 81623 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_landscape.pngbin89535 -> 89535 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_portrait.pngbin84085 -> 84085 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_landscape.pngbin82011 -> 82011 bytes
-rw-r--r--[-rwxr-xr-x]addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_portrait.pngbin77065 -> 77065 bytes
-rw-r--r--addons/languages/lithuanian/pack/src/main/java/com/anysoftkeyboard/languagepack/lithuanian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/luxembourgish/pack/src/main/java/com/anysoftkeyboard/languagepack/luxembourgish/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/nias/pack/src/main/java/com/anysoftkeyboard/languagepack/nias/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/norwegian/pack/src/main/java/com/anysoftkeyboard/languagepack/norwegian/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/dictionary/inputs/ebook1.txt0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/dictionary/inputs/ebook2.txt0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/dictionary/inputs/kelime-listesi-ilk.txt0
-rw-r--r--addons/languages/ossturkish/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/values/ossturkish_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/xml/turkish_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/xml/turkish_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/xml/turkish_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty_terminal.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwertymorepopup.xml0
-rw-r--r--addons/languages/persian/pack/src/main/java/com/anysoftkeyboard/languagepack/persian/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/persian/pack/src/main/res/values/strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/persian/pack/src/main/res/xml/persian_qwerty.xml0
-rw-r--r--addons/languages/polish/pack/src/main/java/com/anysoftkeyboard/languagepack/polish/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/romanian/pack/src/main/java/com/anysoftkeyboard/languagepack/romanian/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/romanian/pack/src/main/res/values/romanian_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/romanian/pack/src/main/res/xml/romanian_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/romanian/pack/src/main/res/xml/romanian_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/romanian/pack/src/main/res/xml/romanian_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/romanian/pack/src/main/res/xml/romanian_qwerty.xml0
-rw-r--r--addons/languages/russian2/pack/src/main/java/com/anysoftkeyboard/languagepack/russian2/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/sardinian/pack/src/main/java/com/anysoftkeyboard/languagepack/sardinian/PackBroadcastReceiver.java4
-rw-r--r--addons/languages/serbian/pack/src/main/java/com/anysoftkeyboard/languagepack/serbian/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/dictionary/aosp.combined0
-rw-r--r--addons/languages/spain/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/src/main/res/values/spanish_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/src/main/res/xml/es_dvorak.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/src/main/res/xml/es_qwerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/src/main/res/xml/spanish_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/src/main/res/xml/spanish_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/spain/pack/src/main/res/xml/spanish_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/dictionary/prebuilt/ayaspell.xml0
-rw-r--r--addons/languages/tamazight/pack/src/main/java/com/anysoftkeyboard/languagepack/tamazight/PackBroadcastReceiver.java4
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/values-ar/tamazight_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/values-fr/tamazight_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/values-kab/tamazight_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/values/tamazight_strings.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_arabic_qwerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ar.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ber.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_kab.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_16keys.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_physical.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_dictionaries.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_keyboards.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_taqbaylit_azerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/languages/tamazight/pack/src/main/res/xml/tamazight_tifinagh_azerty.xml0
-rw-r--r--[-rwxr-xr-x]addons/quicktexts/bbcodes/apk/flag/flag.pngbin7522 -> 7522 bytes
-rw-r--r--addons/quicktexts/bbcodes/pack/src/main/java/com/anysoftkeyboard/quicktextkeys/bbcodeskeykey/KeyBroadcastReceiver.java3
-rw-r--r--addons/settings.gradle1
-rw-r--r--addons/themes/classic_pc/pack/src/main/java/PackBroadcastReceiver.java3
-rw-r--r--addons/themes/ics/pack/src/main/java/PackBroadcastReceiver.java3
-rw-r--r--addons/themes/israel64/pack/src/main/java/PackBroadcastReceiver.java3
-rw-r--r--addons/themes/main/pack/src/main/java/com/anysoftkeyboard/theme/main/PackBroadcastReceiver.java4
-rw-r--r--addons/themes/three_d/pack/src/main/java/PackBroadcastReceiver.java3
-rw-r--r--api/build.gradle7
-rw-r--r--api/src/main/AndroidManifest.xml (renamed from addons/api/src/main/AndroidManifest.xml)0
-rw-r--r--api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java (renamed from addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java)3
-rw-r--r--api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java19
-rw-r--r--api/src/main/res/values/attrs.xml (renamed from addons/api/src/main/res/values/attrs.xml)0
-rw-r--r--api/src/main/res/values/extension_keyboard_types.xml (renamed from addons/api/src/main/res/values/extension_keyboard_types.xml)0
-rw-r--r--api/src/main/res/values/functional_key_codes.xml (renamed from addons/api/src/main/res/values/functional_key_codes.xml)0
-rw-r--r--api/src/main/res/values/key_heights.xml (renamed from addons/api/src/main/res/values/key_heights.xml)0
-rw-r--r--api/src/main/res/values/keyboard_layout_api.xml (renamed from addons/api/src/main/res/values/keyboard_layout_api.xml)0
-rw-r--r--api/src/main/res/values/keyboard_modes.xml (renamed from addons/api/src/main/res/values/keyboard_modes.xml)0
-rw-r--r--api/src/main/res/values/keyboard_theme_api.xml (renamed from addons/api/src/main/res/values/keyboard_theme_api.xml)0
-rw-r--r--api/src/main/res/values/strings.xml (renamed from addons/api/src/main/res/values/strings.xml)0
-rw-r--r--api/src/main/res/values/version.xml (renamed from addons/api/src/main/res/values/version.xml)0
-rw-r--r--api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java (renamed from addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java)63
-rw-r--r--app/build.gradle4
-rw-r--r--[-rwxr-xr-x]app/src/canary/res/drawable-hdpi/ic_watermark_beta_build.pngbin717 -> 717 bytes
-rw-r--r--[-rwxr-xr-x]app/src/canary/res/drawable-mdpi/ic_watermark_beta_build.pngbin405 -> 405 bytes
-rw-r--r--[-rwxr-xr-x]app/src/canary/res/drawable-xhdpi/ic_watermark_beta_build.pngbin840 -> 840 bytes
-rw-r--r--[-rwxr-xr-x]app/src/canary/res/drawable-xxhdpi/ic_watermark_beta_build.pngbin1452 -> 1452 bytes
-rw-r--r--[-rwxr-xr-x]app/src/canary/res/drawable-xxxhdpi/ic_watermark_beta_build.pngbin1669 -> 1669 bytes
-rw-r--r--[-rwxr-xr-x]app/src/debug/res/drawable-hdpi/ic_watermark_dev_build.pngbin440 -> 440 bytes
-rw-r--r--[-rwxr-xr-x]app/src/debug/res/drawable-mdpi/ic_watermark_dev_build.pngbin273 -> 273 bytes
-rw-r--r--[-rwxr-xr-x]app/src/debug/res/drawable-xhdpi/ic_watermark_dev_build.pngbin500 -> 500 bytes
-rw-r--r--[-rwxr-xr-x]app/src/debug/res/drawable-xxhdpi/ic_watermark_dev_build.pngbin875 -> 875 bytes
-rw-r--r--[-rwxr-xr-x]app/src/debug/res/drawable-xxxhdpi/ic_watermark_dev_build.pngbin1056 -> 1056 bytes
-rw-r--r--base/build.gradle2
-rw-r--r--build.gradle4
-rw-r--r--buildSrc/build.gradle11
-rw-r--r--buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java (renamed from addons/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java)25
-rw-r--r--buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java (renamed from addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java)26
-rw-r--r--buildSrc/src/main/java/GenerateWordsListTask.java (renamed from addons/buildSrc/src/main/java/GenerateWordsListTask.java)42
-rw-r--r--buildSrc/src/main/java/MainClass.java (renamed from addons/buildSrc/src/main/java/MainClass.java)35
-rw-r--r--buildSrc/src/main/java/MakeBinaryDictionary.java (renamed from addons/buildSrc/src/main/java/MakeBinaryDictionary.java)91
-rw-r--r--buildSrc/src/main/java/MakeDictionaryPlugin.java189
-rw-r--r--buildSrc/src/main/java/MakeDictionaryTask.java (renamed from addons/buildSrc/src/main/java/MakeDictionaryTask.java)14
-rw-r--r--buildSrc/src/main/java/MergeWordsListTask.java (renamed from addons/buildSrc/src/main/java/MergeWordsListTask.java)67
-rw-r--r--buildSrc/src/main/java/Parser.java (renamed from addons/buildSrc/src/main/java/Parser.java)71
-rw-r--r--buildSrc/src/main/java/WordListWriter.java (renamed from addons/buildSrc/src/main/java/WordListWriter.java)11
-rw-r--r--buildSrc/src/main/java/WordWithCount.java (renamed from addons/buildSrc/src/main/java/WordWithCount.java)7
-rw-r--r--buildSrc/src/main/java/XmlWriter.java (renamed from addons/buildSrc/src/main/java/XmlWriter.java)52
-rw-r--r--buildSrc/src/main/java/emoji/EmojiCollection.java (renamed from buildSrc/src/main/groovy/emoji/EmojiCollection.java)0
-rw-r--r--buildSrc/src/main/java/emoji/EmojiCollector.java (renamed from buildSrc/src/main/groovy/emoji/EmojiCollector.java)0
-rw-r--r--buildSrc/src/main/java/emoji/EmojiData.java (renamed from buildSrc/src/main/groovy/emoji/EmojiData.java)0
-rw-r--r--buildSrc/src/main/java/emoji/EmojiKeyboardCreator.java (renamed from buildSrc/src/main/groovy/emoji/EmojiKeyboardCreator.java)0
-rw-r--r--buildSrc/src/main/java/emoji/EmojiKeyboardsExtractor.java (renamed from buildSrc/src/main/groovy/emoji/EmojiKeyboardsExtractor.java)0
-rw-r--r--buildSrc/src/main/java/emoji/UnicodeOrgEmojiTestDataParser.java (renamed from buildSrc/src/main/groovy/emoji/UnicodeOrgEmojiTestDataParser.java)0
-rw-r--r--configs/checkstyle/suppressions.xml1
-rw-r--r--gradle/root_all_projects_ext.gradle2
-rw-r--r--[-rwxr-xr-x]overlay/src/debug/res/drawable/test_image_1.pngbin252 -> 252 bytes
-rw-r--r--[-rwxr-xr-x]overlay/src/debug/res/drawable/test_image_2.pngbin291 -> 291 bytes
-rw-r--r--[-rwxr-xr-x]overlay/src/debug/res/drawable/test_image_3.pngbin291 -> 291 bytes
-rw-r--r--settings.gradle5
247 files changed, 604 insertions, 1375 deletions
diff --git a/.github/actions/codecov/upload_coverage.sh b/.github/actions/codecov/upload_coverage.sh
index 77c75f943..74df0df5d 100644..100755
--- a/.github/actions/codecov/upload_coverage.sh
+++ b/.github/actions/codecov/upload_coverage.sh
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
+set -e
./scripts/retry.sh 5 curl --fail https://codecov.io/bash -o codecov.sh
chmod +x codecov.sh
diff --git a/.github/actions/collect-reports/collect.sh b/.github/actions/collect-reports/collect.sh
index ffe4f1108..6b641f0c2 100644..100755
--- a/.github/actions/collect-reports/collect.sh
+++ b/.github/actions/collect-reports/collect.sh
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
+set -e
OUTPUT=${1}
PATTERN=${2}
diff --git a/.github/actions/deploy/deploy.sh b/.github/actions/deploy/deploy.sh
index 6ba126df1..b9b8a09f1 100644..100755
--- a/.github/actions/deploy/deploy.sh
+++ b/.github/actions/deploy/deploy.sh
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
+set -e
RELEASE_BUILD=${1}
GITHUB_REF=${2}
diff --git a/.github/actions/test-shard-run/run_tests.sh b/.github/actions/test-shard-run/run_tests.sh
index 631444f95..cd6aa68b9 100644..100755
--- a/.github/actions/test-shard-run/run_tests.sh
+++ b/.github/actions/test-shard-run/run_tests.sh
@@ -1,4 +1,5 @@
#!/usr/bin/env bash
+set -e
export TEST_GROUPS_COUNT=${1}
export TEST_GROUP_INDEX=${2}
diff --git a/.gitignore b/.gitignore
index 2e1b199e1..def7078dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,8 @@ outputs/
.settings/
.classpath
.vscode/
+
+#generated files
+*_words_*.dict
+*_words_dict_array.xml
+*.apk \ No newline at end of file
diff --git a/addons/.generated_pack_version b/addons/.generated_pack_version
new file mode 100644
index 000000000..e33692ab6
--- /dev/null
+++ b/addons/.generated_pack_version
@@ -0,0 +1 @@
+1.10.1 \ No newline at end of file
diff --git a/addons/.gitignore b/addons/.gitignore
deleted file mode 100644
index 22692a035..000000000
--- a/addons/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-*.iml
-.gradle
-/local.properties
-.idea
-/key.store
-.DS_Store
-build/
-/captures
-*_words_*.dict
-*_words_dict_array.xml
-*.apk
-.classpath
-.project
-.settings/
-bin/
-.generated_pack_version
-
-language-packs-apk/ \ No newline at end of file
diff --git a/addons/.java-version b/addons/.java-version
deleted file mode 100644
index 2f52450b3..000000000
--- a/addons/.java-version
+++ /dev/null
@@ -1 +0,0 @@
-10.0
diff --git a/addons/LICENSE b/addons/LICENSE
deleted file mode 100644
index 90b015327..000000000
--- a/addons/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2017 Menny Even-Danan
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/addons/api/build.gradle b/addons/api/build.gradle
deleted file mode 100644
index 0d2ec5506..000000000
--- a/addons/api/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-group = 'com.anysoftkeyboard'
-
-apply plugin: 'com.android.library'
-
-apply from: "$rootDir/gradle/all_android.gradle"
-//apply from: "$rootDir/gradle/publish_maven.gradle"
-//
-//publish {
-// artifactId = 'api'
-// desc = "API library for AnySoftKeyboard add-ons"
-//}
diff --git a/addons/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java b/addons/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java
deleted file mode 100644
index 81240a1eb..000000000
--- a/addons/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.anysoftkeyboard.api;
-
-public class MediaInsertion {
- public final static String INTENT_MEDIA_INSERTION_REQUEST_ACTION = "com.anysoftkeyboard.api.INTENT_MEDIA_INSERTION_REQUEST_ACTION";
- public final static String INTENT_MEDIA_INSERTION_REQUEST_MEDIA_REQUEST_ID_KEY = "com.anysoftkeyboard.api.INTENT_MEDIA_INSERTION_REQUEST_MEDIA_REQUEST_ID_KEY";
- public final static String INTENT_MEDIA_INSERTION_REQUEST_MEDIA_MIMES_KEY = "com.anysoftkeyboard.api.INTENT_MEDIA_INSERTION_REQUEST_MEDIA_MIMES_KEY";
-
- public final static String BROADCAST_INTENT_MEDIA_INSERTION_AVAILABLE_ACTION = "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_AVAILABLE_ACTION";
- public final static String BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_URI_KEY = "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_URI_KEY";
- public final static String BROADCAST_INTENT_MEDIA_INSERTION_REQUEST_ID_KEY = "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_REQUEST_ID_KEY";
- public final static String BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_MIMES_KEY = "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_MIMES_KEY";
-}
diff --git a/addons/base/build.gradle b/addons/base/build.gradle
index 4270ee9fe..ec6c811e9 100644
--- a/addons/base/build.gradle
+++ b/addons/base/build.gradle
@@ -1,11 +1,7 @@
-group = 'com.anysoftkeyboard'
-
apply plugin: 'com.android.library'
-apply from: "$rootDir/gradle/all_android.gradle"
-//apply from: "$rootDir/gradle/publish_maven.gradle"
-//
-//publish {
-// artifactId = 'base'
-// desc = "Base library for AnySoftKeyboard packs"
-//}
+apply from: "${rootDir}/gradle/android_general.gradle"
+
+dependencies {
+ api project(path: ':api')
+}
diff --git a/addons/base/src/main/AndroidManifest.xml b/addons/base/src/main/AndroidManifest.xml
index 35b477100..bc98fceca 100644
--- a/addons/base/src/main/AndroidManifest.xml
+++ b/addons/base/src/main/AndroidManifest.xml
@@ -1,5 +1 @@
-<manifest xmlns:tools="http://schemas.android.com/tools"
- package="com.anysoftkeyboard.addon">
-
- <uses-sdk tools:overrideLibrary="androidx.test,androidx.test.core" />
-</manifest>
+<manifest package="com.anysoftkeyboard.addon"/>
diff --git a/addons/base/src/main/java/com/anysoftkeyboard/addon/PackBroadcastReceiverBase.java b/addons/base/src/main/java/com/anysoftkeyboard/addon/PackBroadcastReceiverBase.java
index bd90c8761..6acb55dea 100644
--- a/addons/base/src/main/java/com/anysoftkeyboard/addon/PackBroadcastReceiverBase.java
+++ b/addons/base/src/main/java/com/anysoftkeyboard/addon/PackBroadcastReceiverBase.java
@@ -7,8 +7,5 @@ import android.content.Intent;
public class PackBroadcastReceiverBase extends BroadcastReceiver {
@Override
- public void onReceive(Context arg0, Intent arg1) {
-
- }
-
+ public void onReceive(Context arg0, Intent arg1) {}
}
diff --git a/addons/build.gradle b/addons/build.gradle
index 79a535af8..0ac2deea2 100644
--- a/addons/build.gradle
+++ b/addons/build.gradle
@@ -1,24 +1,16 @@
-System.setProperty("file.encoding", "UTF-8")
-buildscript {
- repositories {
- google()
- mavenCentral()
- mavenLocal()
- maven { url "https://plugins.gradle.org/m2/" }
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:3.5.3'
- classpath 'net.evendanan.autoversion:gradle-plugin:0.2.2'
-
- classpath 'com.github.triplet.gradle:play-publisher:2.4.2'
- //not compatible with gradle 6+
- //classpath 'com.novoda:bintray-release:0.9.1'
- }
+autoVersioning {
+ enabled = rootProject.hasProperty("withAutoVersioning")
+ buildCounterEnvKey = "BUILD_COUNT_FOR_VERSION"
+ major = 4
+ minor = 0
+ buildCounterOffset = 1570/*adding to version. Should never change*/
+ patchOffset = -5170 /*decrementing due to minor, every minor/major bump, this should be decremented*/
}
-apply from: "$rootDir/gradle/versioning_root.gradle"
+afterEvaluate {
+ file('.generated_pack_version').write(autoVersioning.versionData.versionName)
+}
tasks.register("generateMarkDownOfLanguagePacks") {
group "AnySoftKeyboard"
@@ -49,45 +41,3 @@ tasks.register("generateMarkDownOfLanguagePacks") {
}
}
}
-
-tasks.register("clean") {
- delete 'buildSrc/build'
-}
-
-tasks.register("copyAnySoftKeyboardBaseLib") {
- group "AnySoftKeyboard"
- description 'Copies several of base aars from this repo into AnySoftKeyboard local repo. Use -PanysoftkeyboardPath=[path/to/AnySoftKeyboard/]'
-
- def libsToCopy = [':api', ':base', ':languages:english:pack']
- def targets = ['external/api/libs', 'external/packs/libs', 'external/packs/libs']
- libsToCopy.forEach {
- dependsOn rootProject.findProject(it).tasks.named('assembleRelease')
- }
-
- doLast {
- if (!project.hasProperty('anysoftkeyboardPath')) {
- throw new IllegalArgumentException("Please provide path to AnySoftKeyboard code as an argument: -PanysoftkeyboardPath=[path/to/AnySoftKeyboard/]")
- }
-
- File askPath = file(project.getProperties().get('anysoftkeyboardPath'))
-
- if (!askPath.exists() || !askPath.isDirectory()) {
- throw new IllegalArgumentException("The path ${askPath.absolutePath} does not exist or is not a folder. This should point to where you have the local copy of AnySoftKeyboard code.")
- }
- (0..libsToCopy.size()-1).each { outputIndex ->
- def libProject = rootProject.findProject(libsToCopy.get(outputIndex))
- def targetFolder = "${askPath.absolutePath}/${targets[outputIndex]}/"
- println "will copy ${libProject.projectDir.absolutePath} to ${targetFolder}"
- delete {
- delete "${targetFolder}/*"
- }
- copy {
- from("${libProject.buildDir.absolutePath}/outputs/aar/") {
- include '**/*.aar'
- rename '.*', "${libProject.path.substring(1).replace(':', '-')}.aar"
- }
- into "${targetFolder}/"
- }
- }
- }
-}
diff --git a/addons/buildSrc/build.gradle b/addons/buildSrc/build.gradle
deleted file mode 100644
index 2d7f26930..000000000
--- a/addons/buildSrc/build.gradle
+++ /dev/null
@@ -1,20 +0,0 @@
-apply plugin: 'java'
-apply plugin: 'java-gradle-plugin'
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- compile gradleApi()
- compile 'org.jsoup:jsoup:1.9.1'
-}
-
-gradlePlugin {
- plugins {
- simplePlugin {
- id = 'make-dictionary'
- implementationClass = 'MakeDictionaryPlugin'
- }
- }
-} \ No newline at end of file
diff --git a/addons/buildSrc/src/main/java/MakeDictionaryPlugin.java b/addons/buildSrc/src/main/java/MakeDictionaryPlugin.java
deleted file mode 100644
index da85069b6..000000000
--- a/addons/buildSrc/src/main/java/MakeDictionaryPlugin.java
+++ /dev/null
@@ -1,120 +0,0 @@
-import org.gradle.api.Plugin;
-import org.gradle.api.Project;
-import org.gradle.api.tasks.TaskProvider;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-public class MakeDictionaryPlugin implements Plugin<Project> {
-
- private static <T> T getExtValue(Project project, String key, T defaultValue) {
- if (project.hasProperty(key)) {
- return (T) project.getProperties().get(key);
- } else {
- return defaultValue;
- }
- }
-
- private static Object getExtValue(Project proj, String key) {
- return getExtValue(proj, key, null);
- }
-
- private <T> T[] arrayPlus(T[] source, T... addition) {
- List<T> list = new ArrayList<>(Arrays.asList((T[]) source));
- list.addAll(Arrays.asList((T[]) addition));
- return list.toArray(source);
- }
-
- @Override
- public void apply(Project project) {
- final String languageName = project.getParent().getName();
- final File dictionaryOutputDir = new File(project.getBuildDir(), "dictionary");
-
- //adding dictionary making tasks
- TaskProvider<MergeWordsListTask> mergingTask = project.getTasks().register("mergeAllWordLists", MergeWordsListTask.class, task -> {
- task.setInputWordsListFiles(new File[0]);
- task.setOutputWordsListFile(new File(dictionaryOutputDir, "words_merged.xml"));
- task.setMaxWordsInList(300000);
- });
-
- TaskProvider<MakeDictionaryTask> makeTask = project.getTasks().register("makeDictionary", MakeDictionaryTask.class, task -> {
- task.dependsOn(mergingTask);
- task.setInputWordsListFile(new File(dictionaryOutputDir, "words_merged.xml"));
- task.setPrefix(languageName);
- task.setResourcesFolder(project.file("src/main/res/"));
- });
-
- //if AOSP file exists (under language/pack/dictionary/aosp.combined)
- //we'll create the generation task
- //download the words-list from AOSP at https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/dictionaries/
- // make sure that you are using an unzipped file. The XX_wordlist.combined file should be a plain text file.
- // you can also use the GZ version
- if (project.file("dictionary").exists()) {
- File[] aospFiles = project.file("dictionary").listFiles((dir, name) -> name.contains(".combined"));
- if (aospFiles != null && aospFiles.length > 0) {
- for (File aospFile : aospFiles) {
- TaskProvider<GenerateWordsListFromAOSPTask> aosp = project.getTasks().register("parseAospDictionary_" + aospFile.getName().replace('.', '_'), GenerateWordsListFromAOSPTask.class,
- task -> {
- task.setInputFile(aospFile);
- task.setOutputWordsListFile(new File(dictionaryOutputDir, aospFile.getName() + ".xml"));
- task.setMaxWordsInList(300000);
- });
-
- mergingTask.configure(task -> {
- task.dependsOn(aosp);
- task.setInputWordsListFiles(arrayPlus(task.getInputWordsListFiles(), aosp.get().getOutputWordsListFile()));
- });
- }
- }
-
- //we can also parse text files and generate word-list based on that.
- if (project.file("dictionary/inputs").exists()) {
- TaskProvider<GenerateWordsListTask> inputs = project.getTasks().register("parseTextInputFiles", GenerateWordsListTask.class, task -> {
- task.setInputFiles(project.file("dictionary/inputs").listFiles());
- task.setOutputWordsListFile(new File(dictionaryOutputDir, "inputs.xml"));
-
- System.out.println("Found text inputs for " + project.getPath() + " with " + task.getInputFiles().length + " files.");
-
- char[] dictionaryInputPossibleCharacters = getExtValue(project, "dictionaryInputPossibleCharacters", null);
- if (dictionaryInputPossibleCharacters != null) {
- task.setWordCharacters(dictionaryInputPossibleCharacters);
- System.out.println("Overriding input-text files possible characters to " + new String(dictionaryInputPossibleCharacters));
- }
- char[] dictionaryInputAdditionalInnerCharacters = getExtValue(project, "dictionaryInputAdditionalInnerCharacters", null);
- if (dictionaryInputAdditionalInnerCharacters != null) {
- task.setAdditionalInnerCharacters(dictionaryInputAdditionalInnerCharacters);
- System.out.println("Overriding input-text files possible additional inner characters to " + new String(dictionaryInputAdditionalInnerCharacters));
- }
- });
-
- mergingTask.configure(task -> {
- task.dependsOn(inputs);
- task.setInputWordsListFiles(arrayPlus(task.getInputWordsListFiles(), inputs.get().getOutputWordsListFile()));
- });
- }
-
- //you can also provide pre-built word-list XMLs
- if (project.file("dictionary/prebuilt").exists()) {
- File[] prebuiltFiles = project.file("dictionary/prebuilt").listFiles((dir, name) -> name.endsWith(".xml"));
- if (prebuiltFiles != null && prebuiltFiles.length > 0) {
- mergingTask.configure(task -> {
- task.setInputWordsListFiles(arrayPlus(task.getInputWordsListFiles(), prebuiltFiles));
- System.out.println("Found prebuilt word-list folder for " + project.getPath() + " with " + prebuiltFiles.length + " files.");
- });
- }
- }
- }
-
- project.afterEvaluate(evalProject -> {
- if (getExtValue(project, "shouldGenerateDictionary", true)) {
- project.getTasks().named("preBuild").configure(preBuildTask -> preBuildTask.dependsOn(makeTask));
- } else {
- makeTask.configure(task -> task.setEnabled(false));
- mergingTask.configure(task -> task.setEnabled(false));
- }
- });
- }
-
-}
diff --git a/addons/circle.yml b/addons/circle.yml
deleted file mode 100644
index d232c9849..000000000
--- a/addons/circle.yml
+++ /dev/null
@@ -1,139 +0,0 @@
-version: 2.0
-
-references:
-
- workspace_root: &workspace_root
- /opt/workspace/
-
- container_config: &container_config
- docker:
- - image: menny/android:1.12.1
-
- working_directory: *workspace_root
-
- environment:
- TERM: dumb
- EXTRA_GRADLE_ARGS: "--no-daemon --max-workers=2 --stacktrace"
-
- attach_workspace: &attach_workspace
- attach_workspace:
- at: *workspace_root
-
- general_cache_key: &general_cache_key
- key: anysoftkeyboard-{{ checksum "build.gradle" }}-{{ checksum "circle.yml" }}-{{ checksum "gradle.properties" }}-{{ checksum "settings.gradle" }}-{{ checksum "gradle/wrapper/gradle-wrapper.properties" }}
-jobs:
-
- build:
- <<: *container_config
- steps:
- - checkout
-
- - restore_cache:
- <<: *general_cache_key
-
- - run:
- name: Setup environment
- command: scripts/ci_setup.sh
-
- - run:
- name: Initial build
- command: scripts/ci_assemble.sh
-
- - store_artifacts:
- path: /opt/workspace/add_ons_apks/debug/
- destination: debug-apks/
-
- - persist_to_workspace:
- root: *workspace_root
- paths:
- - .
-
- - save_cache:
- <<: *general_cache_key
- paths:
- - "~/.gradle"
- - "~/.m2"
- - "~/.android"
- - "/opt/android-sdk-linux/licenses"
-
- check:
- <<: *container_config
- steps:
- - *attach_workspace
-
- - restore_cache:
- <<: *general_cache_key
-
- - run:
- name: Run Checks
- command: ./scripts/ci_check.sh
-
- - store_artifacts:
- path: /opt/workspace/**/build/reports/lint/*-lint-results.html
- destination: lint_reports/
-
- deploy:
- <<: *container_config
- steps:
- - *attach_workspace
-
- - restore_cache:
- <<: *general_cache_key
-
- - run:
- name: Deploy to Play Store
- command: |
- ./scripts/ci_deploy.sh ${PACKS_ALL_KEY_STORE_FILE_URL} ${PUBLISH_CERT_FILE_URL}
-
- - store_artifacts:
- path: /opt/workspace/add_ons_apks/release/
- destination: release-apks/
-
- deploy_maven:
- <<: *container_config
- steps:
- - *attach_workspace
-
- - restore_cache:
- <<: *general_cache_key
-
- - run:
- name: Deploy to Bintray
- command: |
- ./scripts/ci_deploy_maven.sh
-
- tag_at_repo:
- <<: *container_config
- steps:
- - *attach_workspace
-
- - run:
- name: Tagging successful build
- command: |
- git config --global user.email "circleci@evendanan.net"
- git config --global user.name "Circle CI"
- git tag -a `cat .generated_pack_version` -m "Deployed"
- git push --tags origin
-workflows:
- version: 2
-
- build_check_deploy:
- jobs:
- - build
- - check:
- requires:
- - build
- - deploy:
- filters:
- branches:
- only:
- - master
- requires:
- - check
- - deploy_maven:
- filters:
- branches:
- only:
- - master
- requires:
- - check \ No newline at end of file
diff --git a/addons/gradle.properties b/addons/gradle.properties
deleted file mode 100644
index 43accedb6..000000000
--- a/addons/gradle.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx10248m -XX:MaxPermSize=256m
-# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-org.gradle.parallel=false
-org.gradle.jvmargs=-Xms740m -Xmx800m -Dfile.encoding=UTF-8
-org.gradle.configureondemand=false
-org.gradle.caching=true
-android.enableUnitTestBinaryResources=false
-android.testConfig.useRelativePath=true
diff --git a/addons/gradle/all_android.gradle b/addons/gradle/all_android.gradle
deleted file mode 100644
index e298e8ae0..000000000
--- a/addons/gradle/all_android.gradle
+++ /dev/null
@@ -1,66 +0,0 @@
-
-android {
- compileSdkVersion 28
- buildToolsVersion '29.0.2'
-
- defaultConfig {
- minSdkVersion 9
- targetSdkVersion 28
- }
-
- lintOptions {
- htmlOutput file("${buildDir.absolutePath}/reports/lint/${path.substring(1).replace(':', '-')}-lint-results.html")
- lintConfig rootProject.file('configs/lint.xml')
- }
-
-
- buildTypes {
- release {
- minifyEnabled false
- }
- }
-
- aaptOptions {
- //does not compress any asset
- noCompress ''
- }
-
- testOptions {
- unitTests {
- includeAndroidResources = true
-
- all {
- testLogging {
- showCauses true
- showExceptions true
- showStackTraces true
- }
-
- systemProperty 'java.awt.headless', true
- systemProperty 'robolectric.logging', 'stdout'
- //disabling since there is just too much logging happening in the Robolectric layer.
- systemProperty 'robolectric.logging.enabled', false
-
- systemProperty 'robolectric.dependency.repo.url', 'https://repo1.maven.org/maven2'
- }
- }
- }
-}
-
-apply from: "$rootDir/gradle/versioning_add_on.gradle"
-
-dependencies {
- repositories {
- google()
- jcenter()
- maven { url 'https://repo1.maven.org/maven2' /*maven-central with HTTPS*/}
- maven { url "https://jitpack.io" }
- }
-
- if (path != ':api') {
- api project(path: ':api')
- }
-
- testImplementation 'org.robolectric:robolectric:4.3.1'
- testImplementation 'junit:junit:4.13'
-}
diff --git a/addons/gradle/language_pack_lib.gradle b/addons/gradle/language_pack_lib.gradle
index bf3231a14..2b698a145 100644
--- a/addons/gradle/language_pack_lib.gradle
+++ b/addons/gradle/language_pack_lib.gradle
@@ -1,11 +1,12 @@
apply plugin: 'com.android.library'
-apply from: "$rootDir/gradle/all_android.gradle"
+apply from: "$rootDir/gradle/android_general.gradle"
apply plugin: 'make-dictionary'
dependencies {
- api project(path: ':base')
+ api project(path: ':api')
+ api project(path: ':addons:base')
}
def languageName = parent.name
diff --git a/addons/gradle/publish_maven.gradle b/addons/gradle/publish_maven.gradle
deleted file mode 100644
index 62e63028d..000000000
--- a/addons/gradle/publish_maven.gradle
+++ /dev/null
@@ -1,16 +0,0 @@
-//not compatible with gradle 6+
-//apply plugin: 'com.novoda.bintray-release'
-//
-//publish {
-// userOrg = 'anysoftkeyboard'
-// repoName = 'AnySoftKeyboard'
-// groupId = group
-// publishVersion = version
-// website = "https://github.com/AnySoftKeyboard/LanguagePack/${projectDir}"
-// licences = ['Apache-2.0']
-// issueTracker = 'https://github.com/AnySoftKeyboard/LanguagePack/issues'
-// autoPublish = true
-//
-// bintrayUser = 'menny'
-// bintrayKey = System.getenv('BINTRAY_API_KEY')
-//} \ No newline at end of file
diff --git a/addons/gradle/versioning_add_on.gradle b/addons/gradle/versioning_add_on.gradle
index b954b4bc4..c9858d287 100644
--- a/addons/gradle/versioning_add_on.gradle
+++ b/addons/gradle/versioning_add_on.gradle
@@ -1,9 +1,8 @@
-//this should only be applied on the non-root project
-if (path == rootProject.path) {
- throw new IllegalStateException("versioning script should never be applied on the root project")
-}
android.defaultConfig {
- versionCode rootProject.autoVersioning.versionData.versionCode
- versionName rootProject.autoVersioning.versionData.versionName
+ def addonsProject = rootProject.findProject(':addons')
+ versionCode addonsProject.autoVersioning.versionData.versionCode
+ versionName addonsProject.autoVersioning.versionData.versionName
+
+ println "Building ${project.path} ${versionName} (or ${project.version}), code ${versionCode}."
}
diff --git a/addons/gradle/versioning_root.gradle b/addons/gradle/versioning_root.gradle
deleted file mode 100644
index 00873d366..000000000
--- a/addons/gradle/versioning_root.gradle
+++ /dev/null
@@ -1,19 +0,0 @@
-//this should only be applied on the root project
-if (path != rootProject.path) {
- throw new IllegalStateException("versioning script should only be applied on the root project")
-}
-
-apply plugin: 'net.evendanan.autoversion.simple'
-
-autoVersioning {
- enabled = rootProject.hasProperty("withAutoVersioning")
- buildCounterEnvKey = "CIRCLE_BUILD_NUM"
- major = 4
- minor = 0
- buildCounterOffset = 1000
- patchOffset = -1600
-}
-
-rootProject.afterEvaluate {
- file('.generated_pack_version').write(autoVersioning.versionData.versionName)
-}
diff --git a/addons/gradle/wrapper/gradle-wrapper.jar b/addons/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index f3d88b1c2..000000000
--- a/addons/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/addons/gradle/wrapper/gradle-wrapper.properties b/addons/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 1b16c34a7..000000000
--- a/addons/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/addons/gradlew b/addons/gradlew
deleted file mode 100755
index 2fe81a7d9..000000000
--- a/addons/gradlew
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/addons/gradlew.bat b/addons/gradlew.bat
deleted file mode 100644
index 24467a141..000000000
--- a/addons/gradlew.bat
+++ /dev/null
@@ -1,100 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windows variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/addons/key.store b/addons/key.store
deleted file mode 100644
index a5f35c1d7..000000000
--- a/addons/key.store
+++ /dev/null
Binary files differ
diff --git a/addons/languages/afrikaans_oss/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java b/addons/languages/afrikaans_oss/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java
index ff526fea8..7e74209ac 100644
--- a/addons/languages/afrikaans_oss/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java
+++ b/addons/languages/afrikaans_oss/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.afrikaans_oss;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_autotext.xml b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_autotext.xml
index abc2916d4..abc2916d4 100755..100644
--- a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_autotext.xml
+++ b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_autotext.xml
diff --git a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_dictionaries.xml b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_dictionaries.xml
index a15e57521..a15e57521 100755..100644
--- a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_dictionaries.xml
+++ b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_dictionaries.xml
diff --git a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_keyboards.xml b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_keyboards.xml
index 1e943e085..1e943e085 100755..100644
--- a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_keyboards.xml
+++ b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_keyboards.xml
diff --git a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_qwerty.xml b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_qwerty.xml
index c89be9fc2..c89be9fc2 100755..100644
--- a/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_qwerty.xml
+++ b/addons/languages/afrikaans_oss/pack/src/main/res/xml/afrikaans_qwerty.xml
diff --git a/addons/languages/arabic/pack/src/main/java/com/anysoftkeyboard/languagepack/arabic/PackBroadcastReceiver.java b/addons/languages/arabic/pack/src/main/java/com/anysoftkeyboard/languagepack/arabic/PackBroadcastReceiver.java
index 2e7b154ba..b39c5565c 100644
--- a/addons/languages/arabic/pack/src/main/java/com/anysoftkeyboard/languagepack/arabic/PackBroadcastReceiver.java
+++ b/addons/languages/arabic/pack/src/main/java/com/anysoftkeyboard/languagepack/arabic/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.arabic;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/armenian2/apk/src/main/res/values-hy/strings.xml b/addons/languages/armenian2/apk/src/main/res/values-hy/strings.xml
index e5129d03e..e5129d03e 100755..100644
--- a/addons/languages/armenian2/apk/src/main/res/values-hy/strings.xml
+++ b/addons/languages/armenian2/apk/src/main/res/values-hy/strings.xml
diff --git a/addons/languages/armenian2/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java b/addons/languages/armenian2/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java
index ff526fea8..7e74209ac 100644
--- a/addons/languages/armenian2/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java
+++ b/addons/languages/armenian2/pack/src/main/java/com/anysoftkeyboard/languagepack/afrikaans_oss/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.afrikaans_oss;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_1.dict b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_1.dict
index 23073cf94..23073cf94 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_1.dict
+++ b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_1.dict
Binary files differ
diff --git a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_2.dict b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_2.dict
index 12b20437d..12b20437d 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_2.dict
+++ b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_2.dict
Binary files differ
diff --git a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_3.dict b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_3.dict
index b31fd29e6..b31fd29e6 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_3.dict
+++ b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_3.dict
Binary files differ
diff --git a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_4.dict b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_4.dict
index a1c3f0428..a1c3f0428 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_4.dict
+++ b/addons/languages/armenian2/pack/src/main/res/raw/armenian2_words_4.dict
Binary files differ
diff --git a/addons/languages/armenian2/pack/src/main/res/values-hy/strings.xml b/addons/languages/armenian2/pack/src/main/res/values-hy/strings.xml
index eae84534c..eae84534c 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/values-hy/strings.xml
+++ b/addons/languages/armenian2/pack/src/main/res/values-hy/strings.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/values/armenian2_words_dict_array.xml b/addons/languages/armenian2/pack/src/main/res/values/armenian2_words_dict_array.xml
index e3871267c..e3871267c 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/values/armenian2_words_dict_array.xml
+++ b/addons/languages/armenian2/pack/src/main/res/values/armenian2_words_dict_array.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/values/strings.xml b/addons/languages/armenian2/pack/src/main/res/values/strings.xml
index d468526b9..d468526b9 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/values/strings.xml
+++ b/addons/languages/armenian2/pack/src/main/res/values/strings.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/ar_autotext.xml b/addons/languages/armenian2/pack/src/main/res/xml/ar_autotext.xml
index cd6348b23..cd6348b23 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/ar_autotext.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/ar_autotext.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty.xml b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty.xml
index f86cdccd6..f86cdccd6 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows.xml b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows.xml
index 610959352..610959352 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v2.xml b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v2.xml
index e9bf3f7ea..e9bf3f7ea 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v2.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v2.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v3.xml b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v3.xml
index fb5c41208..fb5c41208 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v3.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/ar_qwerty_4_rows_v3.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/armenian2_dictionaries.xml b/addons/languages/armenian2/pack/src/main/res/xml/armenian2_dictionaries.xml
index 193c66930..193c66930 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/armenian2_dictionaries.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/armenian2_dictionaries.xml
diff --git a/addons/languages/armenian2/pack/src/main/res/xml/armenian2_keyboards.xml b/addons/languages/armenian2/pack/src/main/res/xml/armenian2_keyboards.xml
index b0c0d1858..b0c0d1858 100755..100644
--- a/addons/languages/armenian2/pack/src/main/res/xml/armenian2_keyboards.xml
+++ b/addons/languages/armenian2/pack/src/main/res/xml/armenian2_keyboards.xml
diff --git a/addons/languages/basque/pack/src/main/java/com/anysoftkeyboard/languagepack/basque/PackBroadcastReceiver.java b/addons/languages/basque/pack/src/main/java/com/anysoftkeyboard/languagepack/basque/PackBroadcastReceiver.java
index 7ae60d3e2..78390884c 100644
--- a/addons/languages/basque/pack/src/main/java/com/anysoftkeyboard/languagepack/basque/PackBroadcastReceiver.java
+++ b/addons/languages/basque/pack/src/main/java/com/anysoftkeyboard/languagepack/basque/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.basque;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/brazilian/apk/src/main/res/values-pt/strings.xml b/addons/languages/brazilian/apk/src/main/res/values-pt/strings.xml
index 178462d49..178462d49 100755..100644
--- a/addons/languages/brazilian/apk/src/main/res/values-pt/strings.xml
+++ b/addons/languages/brazilian/apk/src/main/res/values-pt/strings.xml
diff --git a/addons/languages/brazilian/pack/src/main/java/com/anysoftkeyboard/languagepack/brazilian/PackBroadcastReceiver.java b/addons/languages/brazilian/pack/src/main/java/com/anysoftkeyboard/languagepack/brazilian/PackBroadcastReceiver.java
index 241c4737b..0ed39e5e0 100644
--- a/addons/languages/brazilian/pack/src/main/java/com/anysoftkeyboard/languagepack/brazilian/PackBroadcastReceiver.java
+++ b/addons/languages/brazilian/pack/src/main/java/com/anysoftkeyboard/languagepack/brazilian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.brazilian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/brazilian/pack/src/main/res/values/brazilian_strings.xml b/addons/languages/brazilian/pack/src/main/res/values/brazilian_strings.xml
index 4ed6b7ba5..4ed6b7ba5 100755..100644
--- a/addons/languages/brazilian/pack/src/main/res/values/brazilian_strings.xml
+++ b/addons/languages/brazilian/pack/src/main/res/values/brazilian_strings.xml
diff --git a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_autotext.xml b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_autotext.xml
index cd6348b23..cd6348b23 100755..100644
--- a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_autotext.xml
+++ b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_autotext.xml
diff --git a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_dictionaries.xml b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_dictionaries.xml
index 1740daefc..1740daefc 100755..100644
--- a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_dictionaries.xml
+++ b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_dictionaries.xml
diff --git a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_keyboards.xml b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_keyboards.xml
index b65b72aeb..b65b72aeb 100755..100644
--- a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_keyboards.xml
+++ b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_keyboards.xml
diff --git a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty.xml b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty.xml
index 94b0c9d18..94b0c9d18 100755..100644
--- a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty.xml
+++ b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty.xml
diff --git a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty_with_symbols.xml b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty_with_symbols.xml
index ae3fb6348..ae3fb6348 100755..100644
--- a/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty_with_symbols.xml
+++ b/addons/languages/brazilian/pack/src/main/res/xml/brazilian_qwerty_with_symbols.xml
diff --git a/addons/languages/build.gradle b/addons/languages/build.gradle
index 61ed872bc..e69de29bb 100644
--- a/addons/languages/build.gradle
+++ b/addons/languages/build.gradle
@@ -1,3 +0,0 @@
-subprojects {
- it.group "com.anysoftkeybaord.languagepack.${it.parent.name}"
-} \ No newline at end of file
diff --git a/addons/languages/bulgarian/pack/src/main/java/com/anysoftkeyboard/languagepack/bulgarian/PackBroadcastReceiver.java b/addons/languages/bulgarian/pack/src/main/java/com/anysoftkeyboard/languagepack/bulgarian/PackBroadcastReceiver.java
index b9fd393fe..83e23c2bc 100644
--- a/addons/languages/bulgarian/pack/src/main/java/com/anysoftkeyboard/languagepack/bulgarian/PackBroadcastReceiver.java
+++ b/addons/languages/bulgarian/pack/src/main/java/com/anysoftkeyboard/languagepack/bulgarian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.bulgarian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/catalan/pack/src/main/java/com/anysoftkeyboard/languagepack/catalan/PackBroadcastReceiver.java b/addons/languages/catalan/pack/src/main/java/com/anysoftkeyboard/languagepack/catalan/PackBroadcastReceiver.java
index ce56b4399..d7759e438 100644
--- a/addons/languages/catalan/pack/src/main/java/com/anysoftkeyboard/languagepack/catalan/PackBroadcastReceiver.java
+++ b/addons/languages/catalan/pack/src/main/java/com/anysoftkeyboard/languagepack/catalan/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.catalan;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/croatian/pack/src/main/java/com/anysoftkeyboard/languagepack/croatian/PackBroadcastReceiver.java b/addons/languages/croatian/pack/src/main/java/com/anysoftkeyboard/languagepack/croatian/PackBroadcastReceiver.java
index e6c473815..d53d49a50 100644
--- a/addons/languages/croatian/pack/src/main/java/com/anysoftkeyboard/languagepack/croatian/PackBroadcastReceiver.java
+++ b/addons/languages/croatian/pack/src/main/java/com/anysoftkeyboard/languagepack/croatian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.croatian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/czech/pack/src/main/java/com/anysoftkeyboard/languagepack/czech/PackBroadcastReceiver.java b/addons/languages/czech/pack/src/main/java/com/anysoftkeyboard/languagepack/czech/PackBroadcastReceiver.java
index f87af96c0..93de95cdf 100644
--- a/addons/languages/czech/pack/src/main/java/com/anysoftkeyboard/languagepack/czech/PackBroadcastReceiver.java
+++ b/addons/languages/czech/pack/src/main/java/com/anysoftkeyboard/languagepack/czech/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.czech;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/danish/pack/src/main/java/com/anysoftkeyboard/languagepack/danish/PackBroadcastReceiver.java b/addons/languages/danish/pack/src/main/java/com/anysoftkeyboard/languagepack/danish/PackBroadcastReceiver.java
index 274418117..d75d0933d 100644
--- a/addons/languages/danish/pack/src/main/java/com/anysoftkeyboard/languagepack/danish/PackBroadcastReceiver.java
+++ b/addons/languages/danish/pack/src/main/java/com/anysoftkeyboard/languagepack/danish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.danish;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/dutch/pack/src/main/java/com/anysoftkeyboard/languagepack/dutch/PackBroadcastReceiver.java b/addons/languages/dutch/pack/src/main/java/com/anysoftkeyboard/languagepack/dutch/PackBroadcastReceiver.java
index f76a583a7..424355ac3 100644
--- a/addons/languages/dutch/pack/src/main/java/com/anysoftkeyboard/languagepack/dutch/PackBroadcastReceiver.java
+++ b/addons/languages/dutch/pack/src/main/java/com/anysoftkeyboard/languagepack/dutch/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.dutch;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/english/pack/build.gradle b/addons/languages/english/pack/build.gradle
index 100cbf421..a67b01baf 100644
--- a/addons/languages/english/pack/build.gradle
+++ b/addons/languages/english/pack/build.gradle
@@ -3,7 +3,7 @@ ext.status_icon_text = "en"
ext.dictionaryInputPossibleCharacters = null//"".toCharArray()
ext.dictionaryInputAdditionalInnerCharacters = null//"".toCharArray()
-apply from: "$rootDir/gradle/language_pack_lib.gradle"
+apply from: "$rootDir/addons/gradle/language_pack_lib.gradle"
//apply from: "$rootDir/gradle/publish_maven.gradle"
//
//publish {
diff --git a/addons/languages/english/pack/src/main/java/com/anysoftkeyboard/languagepack/english/PackBroadcastReceiver.java b/addons/languages/english/pack/src/main/java/com/anysoftkeyboard/languagepack/english/PackBroadcastReceiver.java
index 0df972068..89fb773b4 100644
--- a/addons/languages/english/pack/src/main/java/com/anysoftkeyboard/languagepack/english/PackBroadcastReceiver.java
+++ b/addons/languages/english/pack/src/main/java/com/anysoftkeyboard/languagepack/english/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.english;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/finnish/pack/src/main/java/com/anysoftkeyboard/languagepack/finnish/PackBroadcastReceiver.java b/addons/languages/finnish/pack/src/main/java/com/anysoftkeyboard/languagepack/finnish/PackBroadcastReceiver.java
index 87c8d707b..55e469aee 100644
--- a/addons/languages/finnish/pack/src/main/java/com/anysoftkeyboard/languagepack/finnish/PackBroadcastReceiver.java
+++ b/addons/languages/finnish/pack/src/main/java/com/anysoftkeyboard/languagepack/finnish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.finnish;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/french/apk/build.gradle b/addons/languages/french/apk/build.gradle
index 3d273a69d..3d273a69d 100755..100644
--- a/addons/languages/french/apk/build.gradle
+++ b/addons/languages/french/apk/build.gradle
diff --git a/addons/languages/french/apk/src/main/AndroidManifest.xml b/addons/languages/french/apk/src/main/AndroidManifest.xml
index 57a12ee73..57a12ee73 100755..100644
--- a/addons/languages/french/apk/src/main/AndroidManifest.xml
+++ b/addons/languages/french/apk/src/main/AndroidManifest.xml
diff --git a/addons/languages/french/apk/src/main/res/mipmap-hdpi/ic_launcher.png b/addons/languages/french/apk/src/main/res/mipmap-hdpi/ic_launcher.png
index 2ad31e38f..2ad31e38f 100755..100644
--- a/addons/languages/french/apk/src/main/res/mipmap-hdpi/ic_launcher.png
+++ b/addons/languages/french/apk/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/addons/languages/french/apk/src/main/res/mipmap-mdpi/ic_launcher.png b/addons/languages/french/apk/src/main/res/mipmap-mdpi/ic_launcher.png
index f3f6648b1..f3f6648b1 100755..100644
--- a/addons/languages/french/apk/src/main/res/mipmap-mdpi/ic_launcher.png
+++ b/addons/languages/french/apk/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/addons/languages/french/apk/src/main/res/mipmap-xhdpi/ic_launcher.png b/addons/languages/french/apk/src/main/res/mipmap-xhdpi/ic_launcher.png
index 52ab50c14..52ab50c14 100755..100644
--- a/addons/languages/french/apk/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ b/addons/languages/french/apk/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/addons/languages/french/apk/src/main/res/mipmap-xxhdpi/ic_launcher.png b/addons/languages/french/apk/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 7a8701d8a..7a8701d8a 100755..100644
--- a/addons/languages/french/apk/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/addons/languages/french/apk/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/addons/languages/french/apk/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/addons/languages/french/apk/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 241ea18a8..241ea18a8 100755..100644
--- a/addons/languages/french/apk/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ b/addons/languages/french/apk/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/addons/languages/french/apk/src/main/res/values-fr/strings.xml b/addons/languages/french/apk/src/main/res/values-fr/strings.xml
index 2d6ca24f2..2d6ca24f2 100755..100644
--- a/addons/languages/french/apk/src/main/res/values-fr/strings.xml
+++ b/addons/languages/french/apk/src/main/res/values-fr/strings.xml
diff --git a/addons/languages/french/apk/src/main/res/values/strings.xml b/addons/languages/french/apk/src/main/res/values/strings.xml
index 47a7fa839..47a7fa839 100755..100644
--- a/addons/languages/french/apk/src/main/res/values/strings.xml
+++ b/addons/languages/french/apk/src/main/res/values/strings.xml
diff --git a/addons/languages/french/build.gradle b/addons/languages/french/build.gradle
index e69de29bb..e69de29bb 100755..100644
--- a/addons/languages/french/build.gradle
+++ b/addons/languages/french/build.gradle
diff --git a/addons/languages/french/pack/build.gradle b/addons/languages/french/pack/build.gradle
index 53088affc..53088affc 100755..100644
--- a/addons/languages/french/pack/build.gradle
+++ b/addons/languages/french/pack/build.gradle
diff --git a/addons/languages/french/pack/dictionary/aosp.combined.gz b/addons/languages/french/pack/dictionary/aosp.combined.gz
index 19c0e3172..19c0e3172 100755..100644
--- a/addons/languages/french/pack/dictionary/aosp.combined.gz
+++ b/addons/languages/french/pack/dictionary/aosp.combined.gz
Binary files differ
diff --git a/addons/languages/french/pack/src/main/AndroidManifest.xml b/addons/languages/french/pack/src/main/AndroidManifest.xml
index e5bf0234a..e5bf0234a 100755..100644
--- a/addons/languages/french/pack/src/main/AndroidManifest.xml
+++ b/addons/languages/french/pack/src/main/AndroidManifest.xml
diff --git a/addons/languages/french/pack/src/main/java/com/anysoftkeyboard/languagepack/french/PackBroadcastReceiver.java b/addons/languages/french/pack/src/main/java/com/anysoftkeyboard/languagepack/french/PackBroadcastReceiver.java
index e4601e8b8..4c49119e6 100755..100644
--- a/addons/languages/french/pack/src/main/java/com/anysoftkeyboard/languagepack/french/PackBroadcastReceiver.java
+++ b/addons/languages/french/pack/src/main/java/com/anysoftkeyboard/languagepack/french/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.french;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/french/pack/src/main/res/values-fr/strings.xml b/addons/languages/french/pack/src/main/res/values-fr/strings.xml
index ce6936559..ce6936559 100755..100644
--- a/addons/languages/french/pack/src/main/res/values-fr/strings.xml
+++ b/addons/languages/french/pack/src/main/res/values-fr/strings.xml
diff --git a/addons/languages/french/pack/src/main/res/values/strings.xml b/addons/languages/french/pack/src/main/res/values/strings.xml
index c4a15aa3a..c4a15aa3a 100755..100644
--- a/addons/languages/french/pack/src/main/res/values/strings.xml
+++ b/addons/languages/french/pack/src/main/res/values/strings.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/azerty.xml b/addons/languages/french/pack/src/main/res/xml/azerty.xml
index e8db58c47..e8db58c47 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/azerty.xml
+++ b/addons/languages/french/pack/src/main/res/xml/azerty.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/azerty_accents.xml b/addons/languages/french/pack/src/main/res/xml/azerty_accents.xml
index a5224db07..a5224db07 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/azerty_accents.xml
+++ b/addons/languages/french/pack/src/main/res/xml/azerty_accents.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/azerty_with_hyphen.xml b/addons/languages/french/pack/src/main/res/xml/azerty_with_hyphen.xml
index c07c87680..c07c87680 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/azerty_with_hyphen.xml
+++ b/addons/languages/french/pack/src/main/res/xml/azerty_with_hyphen.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/bepo.xml b/addons/languages/french/pack/src/main/res/xml/bepo.xml
index 5c0a13bf7..5c0a13bf7 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/bepo.xml
+++ b/addons/languages/french/pack/src/main/res/xml/bepo.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/french_autotext.xml b/addons/languages/french/pack/src/main/res/xml/french_autotext.xml
index 1ecd3b35f..1ecd3b35f 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/french_autotext.xml
+++ b/addons/languages/french/pack/src/main/res/xml/french_autotext.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/french_dictionaries.xml b/addons/languages/french/pack/src/main/res/xml/french_dictionaries.xml
index 50b1d6196..50b1d6196 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/french_dictionaries.xml
+++ b/addons/languages/french/pack/src/main/res/xml/french_dictionaries.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/french_keyboards.xml b/addons/languages/french/pack/src/main/res/xml/french_keyboards.xml
index b8c2ac526..b8c2ac526 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/french_keyboards.xml
+++ b/addons/languages/french/pack/src/main/res/xml/french_keyboards.xml
diff --git a/addons/languages/french/pack/src/main/res/xml/qwerty_with_symbols.xml b/addons/languages/french/pack/src/main/res/xml/qwerty_with_symbols.xml
index 3428c94f1..3428c94f1 100755..100644
--- a/addons/languages/french/pack/src/main/res/xml/qwerty_with_symbols.xml
+++ b/addons/languages/french/pack/src/main/res/xml/qwerty_with_symbols.xml
diff --git a/addons/languages/georgian/pack/src/main/java/com/anysoftkeyboard/languagepack/georgian/PackBroadcastReceiver.java b/addons/languages/georgian/pack/src/main/java/com/anysoftkeyboard/languagepack/georgian/PackBroadcastReceiver.java
index 9b470a86c..856aa1477 100644
--- a/addons/languages/georgian/pack/src/main/java/com/anysoftkeyboard/languagepack/georgian/PackBroadcastReceiver.java
+++ b/addons/languages/georgian/pack/src/main/java/com/anysoftkeyboard/languagepack/georgian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.georgian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/german/pack/src/main/java/com/anysoftkeyboard/languagepack/german/PackBroadcastReceiver.java b/addons/languages/german/pack/src/main/java/com/anysoftkeyboard/languagepack/german/PackBroadcastReceiver.java
index 8b36ca9e2..d6386eaaa 100644
--- a/addons/languages/german/pack/src/main/java/com/anysoftkeyboard/languagepack/german/PackBroadcastReceiver.java
+++ b/addons/languages/german/pack/src/main/java/com/anysoftkeyboard/languagepack/german/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.german;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/greek/pack/src/main/java/com/anysoftkeyboard/languagepack/greek/PackBroadcastReceiver.java b/addons/languages/greek/pack/src/main/java/com/anysoftkeyboard/languagepack/greek/PackBroadcastReceiver.java
index 8cd561d0f..540f938f3 100644
--- a/addons/languages/greek/pack/src/main/java/com/anysoftkeyboard/languagepack/greek/PackBroadcastReceiver.java
+++ b/addons/languages/greek/pack/src/main/java/com/anysoftkeyboard/languagepack/greek/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.greek;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/greek/pack/src/main/res/values/greek_strings.xml b/addons/languages/greek/pack/src/main/res/values/greek_strings.xml
index 3003be8e4..3003be8e4 100755..100644
--- a/addons/languages/greek/pack/src/main/res/values/greek_strings.xml
+++ b/addons/languages/greek/pack/src/main/res/values/greek_strings.xml
diff --git a/addons/languages/greek/pack/src/main/res/xml/greek_autotext.xml b/addons/languages/greek/pack/src/main/res/xml/greek_autotext.xml
index cd6348b23..cd6348b23 100755..100644
--- a/addons/languages/greek/pack/src/main/res/xml/greek_autotext.xml
+++ b/addons/languages/greek/pack/src/main/res/xml/greek_autotext.xml
diff --git a/addons/languages/greek/pack/src/main/res/xml/greek_dictionaries.xml b/addons/languages/greek/pack/src/main/res/xml/greek_dictionaries.xml
index 629175043..629175043 100755..100644
--- a/addons/languages/greek/pack/src/main/res/xml/greek_dictionaries.xml
+++ b/addons/languages/greek/pack/src/main/res/xml/greek_dictionaries.xml
diff --git a/addons/languages/greek/pack/src/main/res/xml/greek_keyboards.xml b/addons/languages/greek/pack/src/main/res/xml/greek_keyboards.xml
index cfe12eae1..cfe12eae1 100755..100644
--- a/addons/languages/greek/pack/src/main/res/xml/greek_keyboards.xml
+++ b/addons/languages/greek/pack/src/main/res/xml/greek_keyboards.xml
diff --git a/addons/languages/greek/pack/src/main/res/xml/greek_qwerty.xml b/addons/languages/greek/pack/src/main/res/xml/greek_qwerty.xml
index 9a6fedcfa..9a6fedcfa 100755..100644
--- a/addons/languages/greek/pack/src/main/res/xml/greek_qwerty.xml
+++ b/addons/languages/greek/pack/src/main/res/xml/greek_qwerty.xml
diff --git a/addons/languages/hebrew/pack/src/main/java/com/anysoftkeyboard/languagepack/hebrew/PackBroadcastReceiver.java b/addons/languages/hebrew/pack/src/main/java/com/anysoftkeyboard/languagepack/hebrew/PackBroadcastReceiver.java
index a5923b349..3c4c13f73 100644
--- a/addons/languages/hebrew/pack/src/main/java/com/anysoftkeyboard/languagepack/hebrew/PackBroadcastReceiver.java
+++ b/addons/languages/hebrew/pack/src/main/java/com/anysoftkeyboard/languagepack/hebrew/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.hebrew;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/he_autotext.xml b/addons/languages/hebrew/pack/src/main/res/xml/he_autotext.xml
index 2b35f3f39..2b35f3f39 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/he_autotext.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/he_autotext.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_16keys.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_16keys.xml
index 2750997c9..2750997c9 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_16keys.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_16keys.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_phonetic.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_phonetic.xml
index 55ce5ed53..55ce5ed53 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_phonetic.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_phonetic.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_physical.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_physical.xml
index cdc49f014..cdc49f014 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_physical.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_physical.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_physical_for_moto_pro.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_physical_for_moto_pro.xml
index f980f0b48..f980f0b48 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_physical_for_moto_pro.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_physical_for_moto_pro.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty.xml
index acfd27062..acfd27062 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud.xml
index 1f4177326..1f4177326 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud_shin.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud_shin.xml
index 40cd8465b..40cd8465b 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud_shin.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqqud_shin.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqquds.xml b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqquds.xml
index 16ac27f62..16ac27f62 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqquds.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/heb_qwerty_niqquds.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/hebrew_dictionaries.xml b/addons/languages/hebrew/pack/src/main/res/xml/hebrew_dictionaries.xml
index cd63a211f..cd63a211f 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/hebrew_dictionaries.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/hebrew_dictionaries.xml
diff --git a/addons/languages/hebrew/pack/src/main/res/xml/hebrew_keyboards.xml b/addons/languages/hebrew/pack/src/main/res/xml/hebrew_keyboards.xml
index c12c4b873..c12c4b873 100755..100644
--- a/addons/languages/hebrew/pack/src/main/res/xml/hebrew_keyboards.xml
+++ b/addons/languages/hebrew/pack/src/main/res/xml/hebrew_keyboards.xml
diff --git a/addons/languages/hungarian/pack/src/main/java/com/anysoftkeyboard/languagepack/hungarian/PackBroadcastReceiver.java b/addons/languages/hungarian/pack/src/main/java/com/anysoftkeyboard/languagepack/hungarian/PackBroadcastReceiver.java
index 3cfef31cc..3ee07173c 100644
--- a/addons/languages/hungarian/pack/src/main/java/com/anysoftkeyboard/languagepack/hungarian/PackBroadcastReceiver.java
+++ b/addons/languages/hungarian/pack/src/main/java/com/anysoftkeyboard/languagepack/hungarian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.hungarian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/indonesian/pack/src/main/java/com/anysoftkeyboard/languagepack/indonesian/PackBroadcastReceiver.java b/addons/languages/indonesian/pack/src/main/java/com/anysoftkeyboard/languagepack/indonesian/PackBroadcastReceiver.java
index 7bec1a3ad..d8f677252 100644
--- a/addons/languages/indonesian/pack/src/main/java/com/anysoftkeyboard/languagepack/indonesian/PackBroadcastReceiver.java
+++ b/addons/languages/indonesian/pack/src/main/java/com/anysoftkeyboard/languagepack/indonesian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.indonesian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/italian/pack/src/main/java/com/anysoftkeyboard/languagepack/italian/PackBroadcastReceiver.java b/addons/languages/italian/pack/src/main/java/com/anysoftkeyboard/languagepack/italian/PackBroadcastReceiver.java
index 37ea9c0fa..a6f2bcb0d 100644
--- a/addons/languages/italian/pack/src/main/java/com/anysoftkeyboard/languagepack/italian/PackBroadcastReceiver.java
+++ b/addons/languages/italian/pack/src/main/java/com/anysoftkeyboard/languagepack/italian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.italian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/kachin/pack/src/main/java/com/anysoftkeyboard/languagepack/kachin/PackBroadcastReceiver.java b/addons/languages/kachin/pack/src/main/java/com/anysoftkeyboard/languagepack/kachin/PackBroadcastReceiver.java
index 1b1c186c4..7e1606d73 100644
--- a/addons/languages/kachin/pack/src/main/java/com/anysoftkeyboard/languagepack/kachin/PackBroadcastReceiver.java
+++ b/addons/languages/kachin/pack/src/main/java/com/anysoftkeyboard/languagepack/kachin/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.kachin;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/kurdish/pack/src/main/java/com/anysoftkeyboard/languagepack/kurdish/PackBroadcastReceiver.java b/addons/languages/kurdish/pack/src/main/java/com/anysoftkeyboard/languagepack/kurdish/PackBroadcastReceiver.java
index 233ed602d..94ada6d48 100644
--- a/addons/languages/kurdish/pack/src/main/java/com/anysoftkeyboard/languagepack/kurdish/PackBroadcastReceiver.java
+++ b/addons/languages/kurdish/pack/src/main/java/com/anysoftkeyboard/languagepack/kurdish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.kurdish;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/latvian/pack/src/main/java/com/anysoftkeyboard/languagepack/latvian/PackBroadcastReceiver.java b/addons/languages/latvian/pack/src/main/java/com/anysoftkeyboard/languagepack/latvian/PackBroadcastReceiver.java
index c5bc8399e..b62c241db 100644
--- a/addons/languages/latvian/pack/src/main/java/com/anysoftkeyboard/languagepack/latvian/PackBroadcastReceiver.java
+++ b/addons/languages/latvian/pack/src/main/java/com/anysoftkeyboard/languagepack/latvian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.latvian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_16keys_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_16keys_portrait.png
index 5b13e183e..5b13e183e 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_16keys_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_16keys_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_landscape.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_landscape.png
index 62aeca90d..62aeca90d 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_landscape.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_landscape.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_portrait.png
index 29d012e5a..29d012e5a 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_azerty_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_landscape.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_landscape.png
index 1851cf002..1851cf002 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_landscape.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_landscape.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_portrait.png
index 38da37644..38da37644 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_landscape.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_landscape.png
index 20da16721..20da16721 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_landscape.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_landscape.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_portrait.png
index 039c2c8a2..039c2c8a2 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/phone-screenshots/Lithuanian_qwerty_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_16keys.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_16keys.png
index b5c200114..b5c200114 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_16keys.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_16keys.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_landscape.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_landscape.png
index e3e7200e1..e3e7200e1 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_landscape.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_landscape.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_portrait.png
index 56f924ae5..56f924ae5 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_azerty_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_landscape.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_landscape.png
index dcacd33eb..dcacd33eb 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_landscape.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_landscape.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_portrait.png
index cb168ab01..cb168ab01 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_landscape.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_landscape.png
index 4afa1df22..4afa1df22 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_landscape.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_landscape.png
Binary files differ
diff --git a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_portrait.png b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_portrait.png
index 2ef79f56a..2ef79f56a 100755..100644
--- a/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_portrait.png
+++ b/addons/languages/lithuanian/apk/src/main/play/listings/en-US/graphics/tablet-screenshots/Lithuanian_qwerty_portrait.png
Binary files differ
diff --git a/addons/languages/lithuanian/pack/src/main/java/com/anysoftkeyboard/languagepack/lithuanian/PackBroadcastReceiver.java b/addons/languages/lithuanian/pack/src/main/java/com/anysoftkeyboard/languagepack/lithuanian/PackBroadcastReceiver.java
index 98a53b20a..49120b297 100644
--- a/addons/languages/lithuanian/pack/src/main/java/com/anysoftkeyboard/languagepack/lithuanian/PackBroadcastReceiver.java
+++ b/addons/languages/lithuanian/pack/src/main/java/com/anysoftkeyboard/languagepack/lithuanian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.lithuanian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/luxembourgish/pack/src/main/java/com/anysoftkeyboard/languagepack/luxembourgish/PackBroadcastReceiver.java b/addons/languages/luxembourgish/pack/src/main/java/com/anysoftkeyboard/languagepack/luxembourgish/PackBroadcastReceiver.java
index 90735b048..d714166cb 100644
--- a/addons/languages/luxembourgish/pack/src/main/java/com/anysoftkeyboard/languagepack/luxembourgish/PackBroadcastReceiver.java
+++ b/addons/languages/luxembourgish/pack/src/main/java/com/anysoftkeyboard/languagepack/luxembourgish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.luxembourgish;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/nias/pack/src/main/java/com/anysoftkeyboard/languagepack/nias/PackBroadcastReceiver.java b/addons/languages/nias/pack/src/main/java/com/anysoftkeyboard/languagepack/nias/PackBroadcastReceiver.java
index a6ea463d6..474fefdb3 100644
--- a/addons/languages/nias/pack/src/main/java/com/anysoftkeyboard/languagepack/nias/PackBroadcastReceiver.java
+++ b/addons/languages/nias/pack/src/main/java/com/anysoftkeyboard/languagepack/nias/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.nias;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/norwegian/pack/src/main/java/com/anysoftkeyboard/languagepack/norwegian/PackBroadcastReceiver.java b/addons/languages/norwegian/pack/src/main/java/com/anysoftkeyboard/languagepack/norwegian/PackBroadcastReceiver.java
index c2d09e65f..9e89e4389 100644
--- a/addons/languages/norwegian/pack/src/main/java/com/anysoftkeyboard/languagepack/norwegian/PackBroadcastReceiver.java
+++ b/addons/languages/norwegian/pack/src/main/java/com/anysoftkeyboard/languagepack/norwegian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.norwegian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/ossturkish/pack/dictionary/inputs/ebook1.txt b/addons/languages/ossturkish/pack/dictionary/inputs/ebook1.txt
index 7c2569be3..7c2569be3 100755..100644
--- a/addons/languages/ossturkish/pack/dictionary/inputs/ebook1.txt
+++ b/addons/languages/ossturkish/pack/dictionary/inputs/ebook1.txt
diff --git a/addons/languages/ossturkish/pack/dictionary/inputs/ebook2.txt b/addons/languages/ossturkish/pack/dictionary/inputs/ebook2.txt
index 90c9a55f6..90c9a55f6 100755..100644
--- a/addons/languages/ossturkish/pack/dictionary/inputs/ebook2.txt
+++ b/addons/languages/ossturkish/pack/dictionary/inputs/ebook2.txt
diff --git a/addons/languages/ossturkish/pack/dictionary/inputs/kelime-listesi-ilk.txt b/addons/languages/ossturkish/pack/dictionary/inputs/kelime-listesi-ilk.txt
index 70644e3eb..70644e3eb 100755..100644
--- a/addons/languages/ossturkish/pack/dictionary/inputs/kelime-listesi-ilk.txt
+++ b/addons/languages/ossturkish/pack/dictionary/inputs/kelime-listesi-ilk.txt
diff --git a/addons/languages/ossturkish/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java b/addons/languages/ossturkish/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java
index cf581d1a2..c4a2b23c3 100644
--- a/addons/languages/ossturkish/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java
+++ b/addons/languages/ossturkish/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.spain;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/ossturkish/pack/src/main/res/values/ossturkish_strings.xml b/addons/languages/ossturkish/pack/src/main/res/values/ossturkish_strings.xml
index 3ae9b93df..3ae9b93df 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/values/ossturkish_strings.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/values/ossturkish_strings.xml
diff --git a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_autotext.xml b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_autotext.xml
index cd6348b23..cd6348b23 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_autotext.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_autotext.xml
diff --git a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_dictionaries.xml b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_dictionaries.xml
index 6b780f0b4..6b780f0b4 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_dictionaries.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_dictionaries.xml
diff --git a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_keyboards.xml b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_keyboards.xml
index be8d7f02f..be8d7f02f 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_keyboards.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_keyboards.xml
diff --git a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty.xml b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty.xml
index 8d51ee03c..8d51ee03c 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty.xml
diff --git a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty_terminal.xml b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty_terminal.xml
index 9db05468b..9db05468b 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty_terminal.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwerty_terminal.xml
diff --git a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwertymorepopup.xml b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwertymorepopup.xml
index eb5577e1c..eb5577e1c 100755..100644
--- a/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwertymorepopup.xml
+++ b/addons/languages/ossturkish/pack/src/main/res/xml/turkish_qwertymorepopup.xml
diff --git a/addons/languages/persian/pack/src/main/java/com/anysoftkeyboard/languagepack/persian/PackBroadcastReceiver.java b/addons/languages/persian/pack/src/main/java/com/anysoftkeyboard/languagepack/persian/PackBroadcastReceiver.java
index a6153fdac..ac24424fc 100644
--- a/addons/languages/persian/pack/src/main/java/com/anysoftkeyboard/languagepack/persian/PackBroadcastReceiver.java
+++ b/addons/languages/persian/pack/src/main/java/com/anysoftkeyboard/languagepack/persian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.persian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/persian/pack/src/main/res/values/strings.xml b/addons/languages/persian/pack/src/main/res/values/strings.xml
index 5c12a4c07..5c12a4c07 100755..100644
--- a/addons/languages/persian/pack/src/main/res/values/strings.xml
+++ b/addons/languages/persian/pack/src/main/res/values/strings.xml
diff --git a/addons/languages/persian/pack/src/main/res/xml/persian_qwerty.xml b/addons/languages/persian/pack/src/main/res/xml/persian_qwerty.xml
index 05785cf82..05785cf82 100755..100644
--- a/addons/languages/persian/pack/src/main/res/xml/persian_qwerty.xml
+++ b/addons/languages/persian/pack/src/main/res/xml/persian_qwerty.xml
diff --git a/addons/languages/polish/pack/src/main/java/com/anysoftkeyboard/languagepack/polish/PackBroadcastReceiver.java b/addons/languages/polish/pack/src/main/java/com/anysoftkeyboard/languagepack/polish/PackBroadcastReceiver.java
index 37c864356..ac1167ddb 100644
--- a/addons/languages/polish/pack/src/main/java/com/anysoftkeyboard/languagepack/polish/PackBroadcastReceiver.java
+++ b/addons/languages/polish/pack/src/main/java/com/anysoftkeyboard/languagepack/polish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.polish;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/romanian/pack/src/main/java/com/anysoftkeyboard/languagepack/romanian/PackBroadcastReceiver.java b/addons/languages/romanian/pack/src/main/java/com/anysoftkeyboard/languagepack/romanian/PackBroadcastReceiver.java
index 5e9496f45..08b45ee76 100644
--- a/addons/languages/romanian/pack/src/main/java/com/anysoftkeyboard/languagepack/romanian/PackBroadcastReceiver.java
+++ b/addons/languages/romanian/pack/src/main/java/com/anysoftkeyboard/languagepack/romanian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.romanian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/romanian/pack/src/main/res/values/romanian_strings.xml b/addons/languages/romanian/pack/src/main/res/values/romanian_strings.xml
index 8ebe09c96..8ebe09c96 100755..100644
--- a/addons/languages/romanian/pack/src/main/res/values/romanian_strings.xml
+++ b/addons/languages/romanian/pack/src/main/res/values/romanian_strings.xml
diff --git a/addons/languages/romanian/pack/src/main/res/xml/romanian_autotext.xml b/addons/languages/romanian/pack/src/main/res/xml/romanian_autotext.xml
index cd6348b23..cd6348b23 100755..100644
--- a/addons/languages/romanian/pack/src/main/res/xml/romanian_autotext.xml
+++ b/addons/languages/romanian/pack/src/main/res/xml/romanian_autotext.xml
diff --git a/addons/languages/romanian/pack/src/main/res/xml/romanian_dictionaries.xml b/addons/languages/romanian/pack/src/main/res/xml/romanian_dictionaries.xml
index 666b00502..666b00502 100755..100644
--- a/addons/languages/romanian/pack/src/main/res/xml/romanian_dictionaries.xml
+++ b/addons/languages/romanian/pack/src/main/res/xml/romanian_dictionaries.xml
diff --git a/addons/languages/romanian/pack/src/main/res/xml/romanian_keyboards.xml b/addons/languages/romanian/pack/src/main/res/xml/romanian_keyboards.xml
index d3544fc2a..d3544fc2a 100755..100644
--- a/addons/languages/romanian/pack/src/main/res/xml/romanian_keyboards.xml
+++ b/addons/languages/romanian/pack/src/main/res/xml/romanian_keyboards.xml
diff --git a/addons/languages/romanian/pack/src/main/res/xml/romanian_qwerty.xml b/addons/languages/romanian/pack/src/main/res/xml/romanian_qwerty.xml
index 5bdbcaef9..5bdbcaef9 100755..100644
--- a/addons/languages/romanian/pack/src/main/res/xml/romanian_qwerty.xml
+++ b/addons/languages/romanian/pack/src/main/res/xml/romanian_qwerty.xml
diff --git a/addons/languages/russian2/pack/src/main/java/com/anysoftkeyboard/languagepack/russian2/PackBroadcastReceiver.java b/addons/languages/russian2/pack/src/main/java/com/anysoftkeyboard/languagepack/russian2/PackBroadcastReceiver.java
index 4bb83c72c..f2b64b34b 100644
--- a/addons/languages/russian2/pack/src/main/java/com/anysoftkeyboard/languagepack/russian2/PackBroadcastReceiver.java
+++ b/addons/languages/russian2/pack/src/main/java/com/anysoftkeyboard/languagepack/russian2/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.russian2;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/sardinian/pack/src/main/java/com/anysoftkeyboard/languagepack/sardinian/PackBroadcastReceiver.java b/addons/languages/sardinian/pack/src/main/java/com/anysoftkeyboard/languagepack/sardinian/PackBroadcastReceiver.java
index 2c38c7b23..1f9684490 100644
--- a/addons/languages/sardinian/pack/src/main/java/com/anysoftkeyboard/languagepack/sardinian/PackBroadcastReceiver.java
+++ b/addons/languages/sardinian/pack/src/main/java/com/anysoftkeyboard/languagepack/sardinian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.sardinian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/serbian/pack/src/main/java/com/anysoftkeyboard/languagepack/serbian/PackBroadcastReceiver.java b/addons/languages/serbian/pack/src/main/java/com/anysoftkeyboard/languagepack/serbian/PackBroadcastReceiver.java
index 36e90c467..89ed9c34e 100644
--- a/addons/languages/serbian/pack/src/main/java/com/anysoftkeyboard/languagepack/serbian/PackBroadcastReceiver.java
+++ b/addons/languages/serbian/pack/src/main/java/com/anysoftkeyboard/languagepack/serbian/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.serbian;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/spain/pack/dictionary/aosp.combined b/addons/languages/spain/pack/dictionary/aosp.combined
index fdfeeb986..fdfeeb986 100755..100644
--- a/addons/languages/spain/pack/dictionary/aosp.combined
+++ b/addons/languages/spain/pack/dictionary/aosp.combined
diff --git a/addons/languages/spain/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java b/addons/languages/spain/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java
index cf581d1a2..c4a2b23c3 100644
--- a/addons/languages/spain/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java
+++ b/addons/languages/spain/pack/src/main/java/com/anysoftkeyboard/languagepack/spanish/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.spain;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/spain/pack/src/main/res/values/spanish_strings.xml b/addons/languages/spain/pack/src/main/res/values/spanish_strings.xml
index ba5a47b97..ba5a47b97 100755..100644
--- a/addons/languages/spain/pack/src/main/res/values/spanish_strings.xml
+++ b/addons/languages/spain/pack/src/main/res/values/spanish_strings.xml
diff --git a/addons/languages/spain/pack/src/main/res/xml/es_dvorak.xml b/addons/languages/spain/pack/src/main/res/xml/es_dvorak.xml
index 649222b90..649222b90 100755..100644
--- a/addons/languages/spain/pack/src/main/res/xml/es_dvorak.xml
+++ b/addons/languages/spain/pack/src/main/res/xml/es_dvorak.xml
diff --git a/addons/languages/spain/pack/src/main/res/xml/es_qwerty.xml b/addons/languages/spain/pack/src/main/res/xml/es_qwerty.xml
index 22519592e..22519592e 100755..100644
--- a/addons/languages/spain/pack/src/main/res/xml/es_qwerty.xml
+++ b/addons/languages/spain/pack/src/main/res/xml/es_qwerty.xml
diff --git a/addons/languages/spain/pack/src/main/res/xml/spanish_autotext.xml b/addons/languages/spain/pack/src/main/res/xml/spanish_autotext.xml
index 433f06cd0..433f06cd0 100755..100644
--- a/addons/languages/spain/pack/src/main/res/xml/spanish_autotext.xml
+++ b/addons/languages/spain/pack/src/main/res/xml/spanish_autotext.xml
diff --git a/addons/languages/spain/pack/src/main/res/xml/spanish_dictionaries.xml b/addons/languages/spain/pack/src/main/res/xml/spanish_dictionaries.xml
index 0266e914f..0266e914f 100755..100644
--- a/addons/languages/spain/pack/src/main/res/xml/spanish_dictionaries.xml
+++ b/addons/languages/spain/pack/src/main/res/xml/spanish_dictionaries.xml
diff --git a/addons/languages/spain/pack/src/main/res/xml/spanish_keyboards.xml b/addons/languages/spain/pack/src/main/res/xml/spanish_keyboards.xml
index 74938cbab..74938cbab 100755..100644
--- a/addons/languages/spain/pack/src/main/res/xml/spanish_keyboards.xml
+++ b/addons/languages/spain/pack/src/main/res/xml/spanish_keyboards.xml
diff --git a/addons/languages/tamazight/pack/dictionary/prebuilt/ayaspell.xml b/addons/languages/tamazight/pack/dictionary/prebuilt/ayaspell.xml
index 3d7db4a25..3d7db4a25 100755..100644
--- a/addons/languages/tamazight/pack/dictionary/prebuilt/ayaspell.xml
+++ b/addons/languages/tamazight/pack/dictionary/prebuilt/ayaspell.xml
diff --git a/addons/languages/tamazight/pack/src/main/java/com/anysoftkeyboard/languagepack/tamazight/PackBroadcastReceiver.java b/addons/languages/tamazight/pack/src/main/java/com/anysoftkeyboard/languagepack/tamazight/PackBroadcastReceiver.java
index ac5bc1ecd..b33d9114f 100644
--- a/addons/languages/tamazight/pack/src/main/java/com/anysoftkeyboard/languagepack/tamazight/PackBroadcastReceiver.java
+++ b/addons/languages/tamazight/pack/src/main/java/com/anysoftkeyboard/languagepack/tamazight/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.languagepack.tamazight;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/languages/tamazight/pack/src/main/res/values-ar/tamazight_strings.xml b/addons/languages/tamazight/pack/src/main/res/values-ar/tamazight_strings.xml
index ec7259105..ec7259105 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/values-ar/tamazight_strings.xml
+++ b/addons/languages/tamazight/pack/src/main/res/values-ar/tamazight_strings.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/values-fr/tamazight_strings.xml b/addons/languages/tamazight/pack/src/main/res/values-fr/tamazight_strings.xml
index 3b8e75213..3b8e75213 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/values-fr/tamazight_strings.xml
+++ b/addons/languages/tamazight/pack/src/main/res/values-fr/tamazight_strings.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/values-kab/tamazight_strings.xml b/addons/languages/tamazight/pack/src/main/res/values-kab/tamazight_strings.xml
index 9cda9e4b5..9cda9e4b5 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/values-kab/tamazight_strings.xml
+++ b/addons/languages/tamazight/pack/src/main/res/values-kab/tamazight_strings.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/values/tamazight_strings.xml b/addons/languages/tamazight/pack/src/main/res/values/tamazight_strings.xml
index 9bbe661c7..9bbe661c7 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/values/tamazight_strings.xml
+++ b/addons/languages/tamazight/pack/src/main/res/values/tamazight_strings.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_arabic_qwerty.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_arabic_qwerty.xml
index c10fea2ff..c10fea2ff 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_arabic_qwerty.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_arabic_qwerty.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext.xml
index b7f5b0ac1..b7f5b0ac1 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ar.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ar.xml
index cd5368f97..cd5368f97 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ar.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ar.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ber.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ber.xml
index ae13ebf14..ae13ebf14 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ber.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_ber.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_kab.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_kab.xml
index 1212fa361..1212fa361 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_kab.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_autotext_kab.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_16keys.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_16keys.xml
index 32d23ba07..32d23ba07 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_16keys.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_16keys.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_physical.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_physical.xml
index 98eb83709..98eb83709 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_physical.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_ber_physical.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_dictionaries.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_dictionaries.xml
index d7ee207c2..d7ee207c2 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_dictionaries.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_dictionaries.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_keyboards.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_keyboards.xml
index 224eee8fd..224eee8fd 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_keyboards.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_keyboards.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_taqbaylit_azerty.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_taqbaylit_azerty.xml
index f3c31bb63..f3c31bb63 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_taqbaylit_azerty.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_taqbaylit_azerty.xml
diff --git a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_tifinagh_azerty.xml b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_tifinagh_azerty.xml
index 4f73e1ac3..4f73e1ac3 100755..100644
--- a/addons/languages/tamazight/pack/src/main/res/xml/tamazight_tifinagh_azerty.xml
+++ b/addons/languages/tamazight/pack/src/main/res/xml/tamazight_tifinagh_azerty.xml
diff --git a/addons/quicktexts/bbcodes/apk/flag/flag.png b/addons/quicktexts/bbcodes/apk/flag/flag.png
index ccd053e3b..ccd053e3b 100755..100644
--- a/addons/quicktexts/bbcodes/apk/flag/flag.png
+++ b/addons/quicktexts/bbcodes/apk/flag/flag.png
Binary files differ
diff --git a/addons/quicktexts/bbcodes/pack/src/main/java/com/anysoftkeyboard/quicktextkeys/bbcodeskeykey/KeyBroadcastReceiver.java b/addons/quicktexts/bbcodes/pack/src/main/java/com/anysoftkeyboard/quicktextkeys/bbcodeskeykey/KeyBroadcastReceiver.java
index 69f24fb7e..aaae6e5e4 100644
--- a/addons/quicktexts/bbcodes/pack/src/main/java/com/anysoftkeyboard/quicktextkeys/bbcodeskeykey/KeyBroadcastReceiver.java
+++ b/addons/quicktexts/bbcodes/pack/src/main/java/com/anysoftkeyboard/quicktextkeys/bbcodeskeykey/KeyBroadcastReceiver.java
@@ -2,5 +2,4 @@ package com.anysoftkeyboard.quicktextkeys.bbcodeskeykey;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class KeyBroadcastReceiver extends PackBroadcastReceiverBase {
-} \ No newline at end of file
+public class KeyBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/settings.gradle b/addons/settings.gradle
index 552515efa..30c3664a2 100644
--- a/addons/settings.gradle
+++ b/addons/settings.gradle
@@ -1,5 +1,4 @@
rootProject.name = 'LanguagePack'
-include ':api'
include ':base'
//list of packs should be alphabetized-ordered
include ':languages'
diff --git a/addons/themes/classic_pc/pack/src/main/java/PackBroadcastReceiver.java b/addons/themes/classic_pc/pack/src/main/java/PackBroadcastReceiver.java
index 771ea423c..4c035ae0a 100644
--- a/addons/themes/classic_pc/pack/src/main/java/PackBroadcastReceiver.java
+++ b/addons/themes/classic_pc/pack/src/main/java/PackBroadcastReceiver.java
@@ -2,5 +2,4 @@ package com.anysoftkeyboard.themes.classic_pc.pack;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/themes/ics/pack/src/main/java/PackBroadcastReceiver.java b/addons/themes/ics/pack/src/main/java/PackBroadcastReceiver.java
index da38147f6..07cac5e73 100644
--- a/addons/themes/ics/pack/src/main/java/PackBroadcastReceiver.java
+++ b/addons/themes/ics/pack/src/main/java/PackBroadcastReceiver.java
@@ -2,5 +2,4 @@ package com.anysoftkeyboard.themes.ics.pack;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/themes/israel64/pack/src/main/java/PackBroadcastReceiver.java b/addons/themes/israel64/pack/src/main/java/PackBroadcastReceiver.java
index d654ad0a2..a4444e48e 100644
--- a/addons/themes/israel64/pack/src/main/java/PackBroadcastReceiver.java
+++ b/addons/themes/israel64/pack/src/main/java/PackBroadcastReceiver.java
@@ -2,5 +2,4 @@ package com.anysoftkeyboard.themes.israel64.pack;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/themes/main/pack/src/main/java/com/anysoftkeyboard/theme/main/PackBroadcastReceiver.java b/addons/themes/main/pack/src/main/java/com/anysoftkeyboard/theme/main/PackBroadcastReceiver.java
index 85b786f0f..dd6ac2331 100644
--- a/addons/themes/main/pack/src/main/java/com/anysoftkeyboard/theme/main/PackBroadcastReceiver.java
+++ b/addons/themes/main/pack/src/main/java/com/anysoftkeyboard/theme/main/PackBroadcastReceiver.java
@@ -2,6 +2,4 @@ package com.anysoftkeyboard.theme.main;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/addons/themes/three_d/pack/src/main/java/PackBroadcastReceiver.java b/addons/themes/three_d/pack/src/main/java/PackBroadcastReceiver.java
index f220431d8..5677da903 100644
--- a/addons/themes/three_d/pack/src/main/java/PackBroadcastReceiver.java
+++ b/addons/themes/three_d/pack/src/main/java/PackBroadcastReceiver.java
@@ -2,5 +2,4 @@ package com.anysoftkeyboard.themes.three_d.pack;
import com.anysoftkeyboard.addon.PackBroadcastReceiverBase;
-public class PackBroadcastReceiver extends PackBroadcastReceiverBase {
-}
+public class PackBroadcastReceiver extends PackBroadcastReceiverBase {}
diff --git a/api/build.gradle b/api/build.gradle
new file mode 100644
index 000000000..2a9f1172e
--- /dev/null
+++ b/api/build.gradle
@@ -0,0 +1,7 @@
+apply plugin: 'com.android.library'
+
+apply from: "${rootDir}/gradle/android_general.gradle"
+
+dependencies {
+ testImplementation project(":base-test")
+}
diff --git a/addons/api/src/main/AndroidManifest.xml b/api/src/main/AndroidManifest.xml
index 2a7323cff..2a7323cff 100644
--- a/addons/api/src/main/AndroidManifest.xml
+++ b/api/src/main/AndroidManifest.xml
diff --git a/addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java b/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java
index ee14290d5..1174608b9 100644
--- a/addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java
+++ b/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java
@@ -50,7 +50,6 @@ public class KeyCodes {
public static final int UTILITY_KEYBOARD = -120;
-
public static final int CLIPBOARD_COPY = -130;
public static final int CLIPBOARD_CUT = -131;
public static final int CLIPBOARD_PASTE = -132;
@@ -68,6 +67,4 @@ public class KeyCodes {
public static final int PRE_PREPARED_EMAILS_POPUP = -152;
public static final int EXTERNAL_INTEGRATION = -200;
-
-
}
diff --git a/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java b/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java
new file mode 100644
index 000000000..89abe7d5f
--- /dev/null
+++ b/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java
@@ -0,0 +1,19 @@
+package com.anysoftkeyboard.api;
+
+public class MediaInsertion {
+ public static final String INTENT_MEDIA_INSERTION_REQUEST_ACTION =
+ "com.anysoftkeyboard.api.INTENT_MEDIA_INSERTION_REQUEST_ACTION";
+ public static final String INTENT_MEDIA_INSERTION_REQUEST_MEDIA_REQUEST_ID_KEY =
+ "com.anysoftkeyboard.api.INTENT_MEDIA_INSERTION_REQUEST_MEDIA_REQUEST_ID_KEY";
+ public static final String INTENT_MEDIA_INSERTION_REQUEST_MEDIA_MIMES_KEY =
+ "com.anysoftkeyboard.api.INTENT_MEDIA_INSERTION_REQUEST_MEDIA_MIMES_KEY";
+
+ public static final String BROADCAST_INTENT_MEDIA_INSERTION_AVAILABLE_ACTION =
+ "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_AVAILABLE_ACTION";
+ public static final String BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_URI_KEY =
+ "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_URI_KEY";
+ public static final String BROADCAST_INTENT_MEDIA_INSERTION_REQUEST_ID_KEY =
+ "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_REQUEST_ID_KEY";
+ public static final String BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_MIMES_KEY =
+ "com.anysoftkeyboard.api.BROADCAST_INTENT_MEDIA_INSERTION_MEDIA_MIMES_KEY";
+}
diff --git a/addons/api/src/main/res/values/attrs.xml b/api/src/main/res/values/attrs.xml
index 84f71de6e..84f71de6e 100644
--- a/addons/api/src/main/res/values/attrs.xml
+++ b/api/src/main/res/values/attrs.xml
diff --git a/addons/api/src/main/res/values/extension_keyboard_types.xml b/api/src/main/res/values/extension_keyboard_types.xml
index a2324fbbb..a2324fbbb 100644
--- a/addons/api/src/main/res/values/extension_keyboard_types.xml
+++ b/api/src/main/res/values/extension_keyboard_types.xml
diff --git a/addons/api/src/main/res/values/functional_key_codes.xml b/api/src/main/res/values/functional_key_codes.xml
index 55962daa5..55962daa5 100644
--- a/addons/api/src/main/res/values/functional_key_codes.xml
+++ b/api/src/main/res/values/functional_key_codes.xml
diff --git a/addons/api/src/main/res/values/key_heights.xml b/api/src/main/res/values/key_heights.xml
index 6f0c69e5e..6f0c69e5e 100644
--- a/addons/api/src/main/res/values/key_heights.xml
+++ b/api/src/main/res/values/key_heights.xml
diff --git a/addons/api/src/main/res/values/keyboard_layout_api.xml b/api/src/main/res/values/keyboard_layout_api.xml
index e34dda3ee..e34dda3ee 100644
--- a/addons/api/src/main/res/values/keyboard_layout_api.xml
+++ b/api/src/main/res/values/keyboard_layout_api.xml
diff --git a/addons/api/src/main/res/values/keyboard_modes.xml b/api/src/main/res/values/keyboard_modes.xml
index 2968c7034..2968c7034 100644
--- a/addons/api/src/main/res/values/keyboard_modes.xml
+++ b/api/src/main/res/values/keyboard_modes.xml
diff --git a/addons/api/src/main/res/values/keyboard_theme_api.xml b/api/src/main/res/values/keyboard_theme_api.xml
index d1460ac95..d1460ac95 100644
--- a/addons/api/src/main/res/values/keyboard_theme_api.xml
+++ b/api/src/main/res/values/keyboard_theme_api.xml
diff --git a/addons/api/src/main/res/values/strings.xml b/api/src/main/res/values/strings.xml
index 045e125f3..045e125f3 100644
--- a/addons/api/src/main/res/values/strings.xml
+++ b/api/src/main/res/values/strings.xml
diff --git a/addons/api/src/main/res/values/version.xml b/api/src/main/res/values/version.xml
index 1058bc13c..1058bc13c 100644
--- a/addons/api/src/main/res/values/version.xml
+++ b/api/src/main/res/values/version.xml
diff --git a/addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java b/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java
index 9be7d41da..6190ff6a9 100644
--- a/addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java
+++ b/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java
@@ -1,18 +1,16 @@
package com.anysoftkeyboard.api;
import android.content.res.Resources;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashSet;
import java.util.function.BinaryOperator;
import java.util.function.Function;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class KeyCodesTest {
@@ -22,48 +20,57 @@ public class KeyCodesTest {
HashSet<Integer> seenValues = new HashSet<>();
for (Field field : KeyCodes.class.getFields()) {
- final int intValue = (int) field.get(null/*This is a static field*/);
+ final int intValue = (int) field.get(null /*This is a static field*/);
Assert.assertTrue("Field " + field, seenValues.add(intValue));
}
- //verifying that the R integers match
+ // verifying that the R integers match
testVerifyKeyCodesResourcesHasUniques(seenValues);
}
- private void testVerifyKeyCodesResourcesHasUniques(HashSet<Integer> seenValues) throws Exception {
+ private void testVerifyKeyCodesResourcesHasUniques(HashSet<Integer> seenValues)
+ throws Exception {
Resources resources = RuntimeEnvironment.application.getResources();
for (Field field : R.integer.class.getFields()) {
if (field.getName().startsWith("key_code_")) {
- final int idValue = (int) field.get(null/*This is a static field*/);
+ final int idValue = (int) field.get(null /*This is a static field*/);
final int intValue = resources.getInteger(idValue);
Assert.assertTrue("Field " + field, seenValues.remove(intValue));
}
}
-
Assert.assertEquals(
- seenValues.stream().map(new Function<Integer, String>() {
- @Override
- public String apply(Integer integer) {
- return integer.toString();
- }
- }).reduce(new BinaryOperator<String>() {
- @Override
- public String apply(String s, String s2) {
- return s + ", " + s2;
- }
- }).orElse("EMPTY"),
- 0, seenValues.size());
+ seenValues.stream()
+ .map(
+ new Function<Integer, String>() {
+ @Override
+ public String apply(Integer integer) {
+ return integer.toString();
+ }
+ })
+ .reduce(
+ new BinaryOperator<String>() {
+ @Override
+ public String apply(String s, String s2) {
+ return s + ", " + s2;
+ }
+ })
+ .orElse("EMPTY"),
+ 0,
+ seenValues.size());
}
@Test
public void testAllFieldsArePublicStaticFinalInt() {
for (Field field : KeyCodes.class.getFields()) {
- Assert.assertEquals("Field " + field, Modifier.PUBLIC, field.getModifiers() & Modifier.PUBLIC);
- Assert.assertEquals("Field " + field, Modifier.STATIC, field.getModifiers() & Modifier.STATIC);
- Assert.assertEquals("Field " + field, Modifier.FINAL, field.getModifiers() & Modifier.FINAL);
+ Assert.assertEquals(
+ "Field " + field, Modifier.PUBLIC, field.getModifiers() & Modifier.PUBLIC);
+ Assert.assertEquals(
+ "Field " + field, Modifier.STATIC, field.getModifiers() & Modifier.STATIC);
+ Assert.assertEquals(
+ "Field " + field, Modifier.FINAL, field.getModifiers() & Modifier.FINAL);
Assert.assertEquals("Field " + field, int.class, field.getType());
}
}
-} \ No newline at end of file
+}
diff --git a/app/build.gradle b/app/build.gradle
index 5eed3e51f..c0cacd398 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -98,8 +98,8 @@ if (playStoreWhatsNewFile.text.length() > 500) {
}
dependencies {
- implementation "com.anysoftkeyboard.language.english:english:$askExternalAddOnsVersion"
- implementation "com.anysoftkeyboard:base:$askExternalAddOnsVersion"
+ implementation project(':addons:base')
+ implementation project(':addons:languages:english:pack')
implementation project(':base')
implementation project(':base-rx')
implementation project(':nextword')
diff --git a/app/src/canary/res/drawable-hdpi/ic_watermark_beta_build.png b/app/src/canary/res/drawable-hdpi/ic_watermark_beta_build.png
index c0933c587..c0933c587 100755..100644
--- a/app/src/canary/res/drawable-hdpi/ic_watermark_beta_build.png
+++ b/app/src/canary/res/drawable-hdpi/ic_watermark_beta_build.png
Binary files differ
diff --git a/app/src/canary/res/drawable-mdpi/ic_watermark_beta_build.png b/app/src/canary/res/drawable-mdpi/ic_watermark_beta_build.png
index 37cfaa8f9..37cfaa8f9 100755..100644
--- a/app/src/canary/res/drawable-mdpi/ic_watermark_beta_build.png
+++ b/app/src/canary/res/drawable-mdpi/ic_watermark_beta_build.png
Binary files differ
diff --git a/app/src/canary/res/drawable-xhdpi/ic_watermark_beta_build.png b/app/src/canary/res/drawable-xhdpi/ic_watermark_beta_build.png
index 880c3bdd5..880c3bdd5 100755..100644
--- a/app/src/canary/res/drawable-xhdpi/ic_watermark_beta_build.png
+++ b/app/src/canary/res/drawable-xhdpi/ic_watermark_beta_build.png
Binary files differ
diff --git a/app/src/canary/res/drawable-xxhdpi/ic_watermark_beta_build.png b/app/src/canary/res/drawable-xxhdpi/ic_watermark_beta_build.png
index fac5ca0c3..fac5ca0c3 100755..100644
--- a/app/src/canary/res/drawable-xxhdpi/ic_watermark_beta_build.png
+++ b/app/src/canary/res/drawable-xxhdpi/ic_watermark_beta_build.png
Binary files differ
diff --git a/app/src/canary/res/drawable-xxxhdpi/ic_watermark_beta_build.png b/app/src/canary/res/drawable-xxxhdpi/ic_watermark_beta_build.png
index 34cd05782..34cd05782 100755..100644
--- a/app/src/canary/res/drawable-xxxhdpi/ic_watermark_beta_build.png
+++ b/app/src/canary/res/drawable-xxxhdpi/ic_watermark_beta_build.png
Binary files differ
diff --git a/app/src/debug/res/drawable-hdpi/ic_watermark_dev_build.png b/app/src/debug/res/drawable-hdpi/ic_watermark_dev_build.png
index 9a2a170a8..9a2a170a8 100755..100644
--- a/app/src/debug/res/drawable-hdpi/ic_watermark_dev_build.png
+++ b/app/src/debug/res/drawable-hdpi/ic_watermark_dev_build.png
Binary files differ
diff --git a/app/src/debug/res/drawable-mdpi/ic_watermark_dev_build.png b/app/src/debug/res/drawable-mdpi/ic_watermark_dev_build.png
index cc7e97140..cc7e97140 100755..100644
--- a/app/src/debug/res/drawable-mdpi/ic_watermark_dev_build.png
+++ b/app/src/debug/res/drawable-mdpi/ic_watermark_dev_build.png
Binary files differ
diff --git a/app/src/debug/res/drawable-xhdpi/ic_watermark_dev_build.png b/app/src/debug/res/drawable-xhdpi/ic_watermark_dev_build.png
index 34fb94522..34fb94522 100755..100644
--- a/app/src/debug/res/drawable-xhdpi/ic_watermark_dev_build.png
+++ b/app/src/debug/res/drawable-xhdpi/ic_watermark_dev_build.png
Binary files differ
diff --git a/app/src/debug/res/drawable-xxhdpi/ic_watermark_dev_build.png b/app/src/debug/res/drawable-xxhdpi/ic_watermark_dev_build.png
index 083086082..083086082 100755..100644
--- a/app/src/debug/res/drawable-xxhdpi/ic_watermark_dev_build.png
+++ b/app/src/debug/res/drawable-xxhdpi/ic_watermark_dev_build.png
Binary files differ
diff --git a/app/src/debug/res/drawable-xxxhdpi/ic_watermark_dev_build.png b/app/src/debug/res/drawable-xxxhdpi/ic_watermark_dev_build.png
index 4561757aa..4561757aa 100755..100644
--- a/app/src/debug/res/drawable-xxxhdpi/ic_watermark_dev_build.png
+++ b/app/src/debug/res/drawable-xxxhdpi/ic_watermark_dev_build.png
Binary files differ
diff --git a/base/build.gradle b/base/build.gradle
index 64cbe8c43..e60a0ab25 100644
--- a/base/build.gradle
+++ b/base/build.gradle
@@ -4,7 +4,7 @@ apply from: "${rootDir}/gradle/android_general.gradle"
dependencies {
api 'com.getkeepsafe.relinker:relinker:1.3.1'
- api "com.anysoftkeyboard:api:$askExternalAddOnsVersion"
+ api project(path: ':api')
api "com.android.support:support-v4:$supportLibVersion"
//so I can use SuppressFBWarnings
api('com.google.code.findbugs:annotations:3.0.0')
diff --git a/build.gradle b/build.gradle
index a8c57d2de..7c2ffdaa1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,9 +11,9 @@ buildscript {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.2'
+ classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.github.triplet.gradle:play-publisher:2.4.2'
- classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.8.1'
+ classpath 'net.ltgt.gradle:gradle-errorprone-plugin:1.1.1'
classpath 'gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.8'
classpath 'net.evendanan.autoversion:gradle-plugin:0.2.2'
}
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index dadadf609..f0ea90a8a 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -1,4 +1,6 @@
apply plugin: 'groovy'
+apply plugin: 'java'
+apply plugin: 'java-gradle-plugin'
repositories {
maven { url 'https://repo1.maven.org/maven2' /*maven-central with HTTPS*/}
@@ -9,3 +11,12 @@ dependencies {
implementation gradleApi()
implementation localGroovy()
}
+
+gradlePlugin {
+ plugins {
+ simplePlugin {
+ id = 'make-dictionary'
+ implementationClass = 'MakeDictionaryPlugin'
+ }
+ }
+}
diff --git a/addons/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java b/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java
index cddd9123d..75580ffc7 100644
--- a/addons/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java
+++ b/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java
@@ -16,9 +16,7 @@
import java.io.*;
-/**
- * Compresses a list of words and frequencies into a tree structured binary dictionary.
- */
+/** Compresses a list of words and frequencies into a tree structured binary dictionary. */
class BinaryDictionaryResourceNormalizer {
private static final int DICT_FILE_CHUNK_SIZE = 1000 * 1000;
private final File tempOutputFile;
@@ -26,7 +24,8 @@ class BinaryDictionaryResourceNormalizer {
private final File dict_id_array;
private final String mPrefix;
- public BinaryDictionaryResourceNormalizer(File tempOutputFile, File outputFolder, File dict_id_array, String prefix) {
+ public BinaryDictionaryResourceNormalizer(
+ File tempOutputFile, File outputFolder, File dict_id_array, String prefix) {
this.tempOutputFile = tempOutputFile;
this.outputFolder = outputFolder;
this.dict_id_array = dict_id_array;
@@ -37,10 +36,9 @@ class BinaryDictionaryResourceNormalizer {
splitOutputFile(tempOutputFile, outputFolder);
}
-
- private int splitOutputFile(final File tempOutputFile,
- final File outputFolder) throws IOException {
- //output should be words_1.dict....words_n.dict
+ private int splitOutputFile(final File tempOutputFile, final File outputFolder)
+ throws IOException {
+ // output should be words_1.dict....words_n.dict
InputStream inputStream = new FileInputStream(tempOutputFile);
int file_postfix = 0;
int current_output_file_size = 0;
@@ -49,7 +47,7 @@ class BinaryDictionaryResourceNormalizer {
int read = 0;
XmlWriter xml = new XmlWriter(dict_id_array);
xml.writeEntity("resources");
- xml.writeEntity("array").writeAttribute("name", mPrefix +"_words_dict_array");
+ xml.writeEntity("array").writeAttribute("name", mPrefix + "_words_dict_array");
while ((read = inputStream.read(buffer)) > 0) {
if (outputStream != null && current_output_file_size >= DICT_FILE_CHUNK_SIZE) {
@@ -60,9 +58,12 @@ class BinaryDictionaryResourceNormalizer {
if (outputStream == null) {
file_postfix++;
- xml.writeEntity("item").writeText("@raw/" + mPrefix + "_words_" +file_postfix).endEntity();
+ xml.writeEntity("item")
+ .writeText("@raw/" + mPrefix + "_words_" + file_postfix)
+ .endEntity();
current_output_file_size = 0;
- File chunkFile = new File(outputFolder, mPrefix + "_words_" + file_postfix + ".dict");
+ File chunkFile =
+ new File(outputFolder, mPrefix + "_words_" + file_postfix + ".dict");
outputStream = new FileOutputStream(chunkFile);
System.out.println("Writing to dict file " + chunkFile.getAbsolutePath());
}
@@ -84,4 +85,4 @@ class BinaryDictionaryResourceNormalizer {
return file_postfix;
}
-} \ No newline at end of file
+}
diff --git a/addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java b/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java
index e3fda7c49..1f03427ea 100644
--- a/addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java
+++ b/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java
@@ -1,9 +1,3 @@
-import org.gradle.api.DefaultTask;
-import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.InputFile;
-import org.gradle.api.tasks.OutputFile;
-import org.gradle.api.tasks.TaskAction;
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -15,13 +9,19 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
import java.util.zip.ZipInputStream;
+import org.gradle.api.DefaultTask;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.InputFile;
+import org.gradle.api.tasks.OutputFile;
+import org.gradle.api.tasks.TaskAction;
/**
* Task to generate words-list XML file from a AOSP words-list file.
* https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/dictionaries/
*/
public class GenerateWordsListFromAOSPTask extends DefaultTask {
- private static final Pattern mWordLineRegex = Pattern.compile("^\\s*word=([\\w\\p{L}'\"-]+),f=(\\d+).*$");
+ private static final Pattern mWordLineRegex =
+ Pattern.compile("^\\s*word=([\\w\\p{L}'\"-]+),f=(\\d+).*$");
private File inputFile;
private File outputWordsListFile;
@@ -38,7 +38,8 @@ public class GenerateWordsListFromAOSPTask extends DefaultTask {
}
final long inputSize = inputFile.length();
- System.out.println("Reading input file " + inputFile.getName() + " (size " + inputSize + ")...");
+ System.out.println(
+ "Reading input file " + inputFile.getName() + " (size " + inputSize + ")...");
InputStream fileInput = new FileInputStream(inputFile);
if (inputFile.getName().endsWith(".zip")) {
@@ -46,7 +47,8 @@ public class GenerateWordsListFromAOSPTask extends DefaultTask {
} else if (inputFile.getName().endsWith(".gz")) {
fileInput = new GZIPInputStream(fileInput);
}
- BufferedReader reader = new BufferedReader(new InputStreamReader(fileInput, Charset.forName("UTF-8")));
+ BufferedReader reader =
+ new BufferedReader(new InputStreamReader(fileInput, Charset.forName("UTF-8")));
String wordDataLine;
try (WordListWriter wordListWriter = new WordListWriter(outputWordsListFile)) {
@@ -54,7 +56,7 @@ public class GenerateWordsListFromAOSPTask extends DefaultTask {
long wordsWritten = 0;
while (null != (wordDataLine = reader.readLine())) {
read += wordDataLine.length();
- //word=heh,f=0,flags=,originalFreq=53,possibly_offensive=true
+ // word=heh,f=0,flags=,originalFreq=53,possibly_offensive=true
Matcher matcher = mWordLineRegex.matcher(wordDataLine);
if (matcher.matches()) {
String word = matcher.group(1);
@@ -66,7 +68,8 @@ public class GenerateWordsListFromAOSPTask extends DefaultTask {
wordsWritten++;
if (maxWordsInList == wordsWritten) {
System.out.println("!!!!");
- System.out.println("Reached " + maxWordsInList + " words! Breaking parsing.");
+ System.out.println(
+ "Reached " + maxWordsInList + " words! Breaking parsing.");
break;
}
}
@@ -74,7 +77,6 @@ public class GenerateWordsListFromAOSPTask extends DefaultTask {
System.out.print(".100%.");
}
-
System.out.println("Done.");
}
diff --git a/addons/buildSrc/src/main/java/GenerateWordsListTask.java b/buildSrc/src/main/java/GenerateWordsListTask.java
index 06773e9e3..b0601e185 100644
--- a/addons/buildSrc/src/main/java/GenerateWordsListTask.java
+++ b/buildSrc/src/main/java/GenerateWordsListTask.java
@@ -1,10 +1,3 @@
-import org.gradle.api.DefaultTask;
-import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.InputFiles;
-import org.gradle.api.tasks.OutputFile;
-import org.gradle.api.tasks.TaskAction;
-import org.jsoup.Jsoup;
-
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
@@ -13,10 +6,14 @@ import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
+import org.gradle.api.DefaultTask;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.InputFiles;
+import org.gradle.api.tasks.OutputFile;
+import org.gradle.api.tasks.TaskAction;
+import org.jsoup.Jsoup;
-/**
- * Task to generate words-list XML file from a input
- */
+/** Task to generate words-list XML file from a input */
public class GenerateWordsListTask extends DefaultTask {
@TaskAction
public void generateWordsList() throws Exception {
@@ -26,7 +23,9 @@ public class GenerateWordsListTask extends DefaultTask {
File wordsInputFile = File.createTempFile(it.getName() + "_stripped_html_", ".txt");
String inputText = Jsoup.parse(it, "UTF-8").text();
- Writer writer = new OutputStreamWriter(new FileOutputStream(wordsInputFile), Charset.forName("UTF-8"));
+ Writer writer =
+ new OutputStreamWriter(
+ new FileOutputStream(wordsInputFile), Charset.forName("UTF-8"));
writer.write(inputText);
writer.flush();
writer.close();
@@ -34,15 +33,27 @@ public class GenerateWordsListTask extends DefaultTask {
} else if (it.getName().endsWith(".txt")) {
inputTextFiles.add(it);
} else {
- System.out.println("Skipping file " + it.getAbsolutePath() + ", since it's not txt or html file.");
+ System.out.println(
+ "Skipping file "
+ + it.getAbsolutePath()
+ + ", since it's not txt or html file.");
}
}
final File parentFile = outputWordsListFile.getParentFile();
if (!parentFile.exists() && !parentFile.mkdirs()) {
- throw new IllegalArgumentException("Failed to create output folder " + parentFile.getAbsolutePath());
+ throw new IllegalArgumentException(
+ "Failed to create output folder " + parentFile.getAbsolutePath());
}
- Parser parser = new Parser(inputTextFiles, outputWordsListFile, wordCharacters, locale, additionalInnerCharacters, maxWordsInList, maxWordFrequency);
+ Parser parser =
+ new Parser(
+ inputTextFiles,
+ outputWordsListFile,
+ wordCharacters,
+ locale,
+ additionalInnerCharacters,
+ maxWordsInList,
+ maxWordFrequency);
parser.parse();
}
@@ -111,7 +122,8 @@ public class GenerateWordsListTask extends DefaultTask {
private File[] inputFiles;
private File outputWordsListFile;
- private char[] wordCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
+ private char[] wordCharacters =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
private char[] additionalInnerCharacters = "'".toCharArray();
private Locale locale = Locale.US;
private int maxWordsInList = Integer.MAX_VALUE;
diff --git a/addons/buildSrc/src/main/java/MainClass.java b/buildSrc/src/main/java/MainClass.java
index 8a1103cf5..9a0eca1c1 100644
--- a/addons/buildSrc/src/main/java/MainClass.java
+++ b/buildSrc/src/main/java/MainClass.java
@@ -14,18 +14,18 @@
* limitations under the License.
*/
-import org.xml.sax.SAXException;
-
import java.io.File;
import java.io.IOException;
-
import javax.xml.parsers.ParserConfigurationException;
+import org.xml.sax.SAXException;
public class MainClass {
- public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException {
+ public static void main(String[] args)
+ throws IOException, ParserConfigurationException, SAXException {
if (args.length != 3) {
- System.out.println("Usage: makedictionary [path-to-input-file] [path-to-pack-resource-folder] [prefix]");
+ System.out.println(
+ "Usage: makedictionary [path-to-input-file] [path-to-pack-resource-folder] [prefix]");
System.exit(1);
}
@@ -35,7 +35,9 @@ public class MainClass {
buildDictionary(inputFile, resourcesFolder, args[2]);
}
- public static void buildDictionary(final File inputFile, final File resourcesFolder, final String prefix) throws IOException, ParserConfigurationException, SAXException {
+ public static void buildDictionary(
+ final File inputFile, final File resourcesFolder, final String prefix)
+ throws IOException, ParserConfigurationException, SAXException {
if (!inputFile.isFile() || !inputFile.exists()) {
throw new IllegalArgumentException("Could not find input file " + inputFile);
}
@@ -46,13 +48,18 @@ public class MainClass {
}
final File outputFolder = new File(resourcesFolder, "raw/");
- final File dict_id_array = new File(resourcesFolder, "values/" + prefix + "_words_dict_array.xml");
+ final File dict_id_array =
+ new File(resourcesFolder, "values/" + prefix + "_words_dict_array.xml");
System.out.println("Reading words from input " + inputFile.getAbsolutePath());
- System.out.println("Will store output files under " + outputFolder.getAbsolutePath() + ". Created raw folder? " + outputFolder.mkdirs());
+ System.out.println(
+ "Will store output files under "
+ + outputFolder.getAbsolutePath()
+ + ". Created raw folder? "
+ + outputFolder.mkdirs());
System.out.println("Deleting previous versions...");
- //deleting current files
+ // deleting current files
tempOutputFile.delete();
File[] dictFiles = outputFolder.listFiles((dir, name) -> name.endsWith(".dict"));
if (dictFiles != null && dictFiles.length > 0) {
@@ -62,7 +69,9 @@ public class MainClass {
}
dict_id_array.delete();
- MakeBinaryDictionary maker = new MakeBinaryDictionary(inputFile.getAbsolutePath(), tempOutputFile.getAbsolutePath());
+ MakeBinaryDictionary maker =
+ new MakeBinaryDictionary(
+ inputFile.getAbsolutePath(), tempOutputFile.getAbsolutePath());
maker.makeDictionary();
if (!tempOutputFile.exists()) {
@@ -73,8 +82,10 @@ public class MainClass {
throw new IOException("Failed to create binary dictionary file. Size zero.");
}
- //now, if the file is larger than 1MB, I'll need to split it to 1MB chunks and rename them.
- BinaryDictionaryResourceNormalizer normalizer = new BinaryDictionaryResourceNormalizer(tempOutputFile, outputFolder, dict_id_array, prefix);
+ // now, if the file is larger than 1MB, I'll need to split it to 1MB chunks and rename them.
+ BinaryDictionaryResourceNormalizer normalizer =
+ new BinaryDictionaryResourceNormalizer(
+ tempOutputFile, outputFolder, dict_id_array, prefix);
normalizer.writeDictionaryIdsResource();
System.out.println("Done.");
diff --git a/addons/buildSrc/src/main/java/MakeBinaryDictionary.java b/buildSrc/src/main/java/MakeBinaryDictionary.java
index 9c414609b..b80e3ee0a 100644
--- a/addons/buildSrc/src/main/java/MakeBinaryDictionary.java
+++ b/buildSrc/src/main/java/MakeBinaryDictionary.java
@@ -15,21 +15,18 @@
* limitations under the License.
*/
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
-/**
- * Compresses a list of words and frequencies into a tree structured binary dictionary.
- */
+/** Compresses a list of words and frequencies into a tree structured binary dictionary. */
class MakeBinaryDictionary {
private static final int ALPHA_SIZE = 256;
private static final String TAG_WORD = "w";
@@ -63,43 +60,45 @@ class MakeBinaryDictionary {
writeToDict(destFilename);
}
- private void populateDictionary(String filename) throws IOException, SAXException, ParserConfigurationException {
+ private void populateDictionary(String filename)
+ throws IOException, SAXException, ParserConfigurationException {
roots = new ArrayList<>();
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
- parser.parse(new File(filename), new DefaultHandler() {
- boolean inWord;
- int freq;
- StringBuilder wordBuilder = new StringBuilder(48);
+ parser.parse(
+ new File(filename),
+ new DefaultHandler() {
+ boolean inWord;
+ int freq;
+ StringBuilder wordBuilder = new StringBuilder(48);
- @Override
- public void startElement(String uri, String localName,
- String qName, Attributes attributes) {
- if (qName.equals(TAG_WORD)) {
- inWord = true;
- freq = Integer.parseInt(attributes.getValue(0));
- wordBuilder.setLength(0);
- }
- }
+ @Override
+ public void startElement(
+ String uri, String localName, String qName, Attributes attributes) {
+ if (qName.equals(TAG_WORD)) {
+ inWord = true;
+ freq = Integer.parseInt(attributes.getValue(0));
+ wordBuilder.setLength(0);
+ }
+ }
- @Override
- public void characters(char[] data, int offset, int length) {
- // Ignore other whitespace
- if (!inWord) return;
- wordBuilder.append(data, offset, length);
- }
+ @Override
+ public void characters(char[] data, int offset, int length) {
+ // Ignore other whitespace
+ if (!inWord) return;
+ wordBuilder.append(data, offset, length);
+ }
- @Override
- public void endElement(String uri, String localName,
- String qName) {
- if (qName.equals(TAG_WORD)) {
- if (wordBuilder.length() > 1) {
- addWordTop(wordBuilder.toString(), freq);
- mWordCount++;
+ @Override
+ public void endElement(String uri, String localName, String qName) {
+ if (qName.equals(TAG_WORD)) {
+ if (wordBuilder.length() > 1) {
+ addWordTop(wordBuilder.toString(), freq);
+ mWordCount++;
+ }
+ inWord = false;
+ }
}
- inWord = false;
- }
- }
- });
+ });
System.out.println("Nodes = " + CharNode.sNodes);
}
@@ -191,8 +190,7 @@ class MakeBinaryDictionary {
}
}
- private void updateNodeAddress(int nodeAddress, CharNode node,
- int childrenAddress) {
+ private void updateNodeAddress(int nodeAddress, CharNode node, int childrenAddress) {
if ((dict[nodeAddress] & 0xFF) == 0xFF) { // 3 byte character
nodeAddress += 2;
}
@@ -220,7 +218,7 @@ class MakeBinaryDictionary {
}
final int childCount = children.size();
addCount(childCount);
- //int childrenStart = dictSize;
+ // int childrenStart = dictSize;
int[] childrenAddresses = new int[childCount];
for (int j = 0; j < childCount; j++) {
CharNode node = children.get(j);
@@ -232,8 +230,7 @@ class MakeBinaryDictionary {
int nodeAddress = childrenAddresses[j];
int cacheDictSize = dictSize;
writeWordsRec(node.children);
- updateNodeAddress(nodeAddress, node, node.children != null
- ? cacheDictSize : 0);
+ updateNodeAddress(nodeAddress, node, node.children != null ? cacheDictSize : 0);
}
}
@@ -259,4 +256,4 @@ class MakeBinaryDictionary {
sNodes++;
}
}
-} \ No newline at end of file
+}
diff --git a/buildSrc/src/main/java/MakeDictionaryPlugin.java b/buildSrc/src/main/java/MakeDictionaryPlugin.java
new file mode 100644
index 000000000..03dd27098
--- /dev/null
+++ b/buildSrc/src/main/java/MakeDictionaryPlugin.java
@@ -0,0 +1,189 @@
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import org.gradle.api.Plugin;
+import org.gradle.api.Project;
+import org.gradle.api.tasks.TaskProvider;
+
+public class MakeDictionaryPlugin implements Plugin<Project> {
+
+ private static <T> T getExtValue(Project project, String key, T defaultValue) {
+ if (project.hasProperty(key)) {
+ return (T) project.getProperties().get(key);
+ } else {
+ return defaultValue;
+ }
+ }
+
+ private static Object getExtValue(Project proj, String key) {
+ return getExtValue(proj, key, null);
+ }
+
+ private <T> T[] arrayPlus(T[] source, T... addition) {
+ List<T> list = new ArrayList<>(Arrays.asList((T[]) source));
+ list.addAll(Arrays.asList((T[]) addition));
+ return list.toArray(source);
+ }
+
+ @Override
+ public void apply(Project project) {
+ final String languageName = project.getParent().getName();
+ final File dictionaryOutputDir = new File(project.getBuildDir(), "dictionary");
+
+ // adding dictionary making tasks
+ TaskProvider<MergeWordsListTask> mergingTask =
+ project.getTasks()
+ .register(
+ "mergeAllWordLists",
+ MergeWordsListTask.class,
+ task -> {
+ task.setInputWordsListFiles(new File[0]);
+ task.setOutputWordsListFile(
+ new File(dictionaryOutputDir, "words_merged.xml"));
+ task.setMaxWordsInList(300000);
+ });
+
+ TaskProvider<MakeDictionaryTask> makeTask =
+ project.getTasks()
+ .register(
+ "makeDictionary",
+ MakeDictionaryTask.class,
+ task -> {
+ task.dependsOn(mergingTask);
+ task.setInputWordsListFile(
+ new File(dictionaryOutputDir, "words_merged.xml"));
+ task.setPrefix(languageName);
+ task.setResourcesFolder(project.file("src/main/res/"));
+ });
+
+ // if AOSP file exists (under language/pack/dictionary/aosp.combined)
+ // we'll create the generation task
+ // download the words-list from AOSP at
+ // https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/dictionaries/
+ // make sure that you are using an unzipped file. The XX_wordlist.combined file should be a
+ // plain text file.
+ // you can also use the GZ version
+ if (project.file("dictionary").exists()) {
+ File[] aospFiles =
+ project.file("dictionary").listFiles((dir, name) -> name.contains(".combined"));
+ if (aospFiles != null && aospFiles.length > 0) {
+ for (File aospFile : aospFiles) {
+ TaskProvider<GenerateWordsListFromAOSPTask> aosp =
+ project.getTasks()
+ .register(
+ "parseAospDictionary_"
+ + aospFile.getName().replace('.', '_'),
+ GenerateWordsListFromAOSPTask.class,
+ task -> {
+ task.setInputFile(aospFile);
+ task.setOutputWordsListFile(
+ new File(
+ dictionaryOutputDir,
+ aospFile.getName() + ".xml"));
+ task.setMaxWordsInList(300000);
+ });
+
+ mergingTask.configure(
+ task -> {
+ task.dependsOn(aosp);
+ task.setInputWordsListFiles(
+ arrayPlus(
+ task.getInputWordsListFiles(),
+ aosp.get().getOutputWordsListFile()));
+ });
+ }
+ }
+
+ // we can also parse text files and generate word-list based on that.
+ if (project.file("dictionary/inputs").exists()) {
+ TaskProvider<GenerateWordsListTask> inputs =
+ project.getTasks()
+ .register(
+ "parseTextInputFiles",
+ GenerateWordsListTask.class,
+ task -> {
+ task.setInputFiles(
+ project.file("dictionary/inputs").listFiles());
+ task.setOutputWordsListFile(
+ new File(dictionaryOutputDir, "inputs.xml"));
+
+ System.out.println(
+ "Found text inputs for "
+ + project.getPath()
+ + " with "
+ + task.getInputFiles().length
+ + " files.");
+
+ char[] dictionaryInputPossibleCharacters =
+ getExtValue(
+ project,
+ "dictionaryInputPossibleCharacters",
+ null);
+ if (dictionaryInputPossibleCharacters != null) {
+ task.setWordCharacters(
+ dictionaryInputPossibleCharacters);
+ System.out.println(
+ "Overriding input-text files possible characters to "
+ + new String(
+ dictionaryInputPossibleCharacters));
+ }
+ char[] dictionaryInputAdditionalInnerCharacters =
+ getExtValue(
+ project,
+ "dictionaryInputAdditionalInnerCharacters",
+ null);
+ if (dictionaryInputAdditionalInnerCharacters != null) {
+ task.setAdditionalInnerCharacters(
+ dictionaryInputAdditionalInnerCharacters);
+ System.out.println(
+ "Overriding input-text files possible additional inner characters to "
+ + new String(
+ dictionaryInputAdditionalInnerCharacters));
+ }
+ });
+
+ mergingTask.configure(
+ task -> {
+ task.dependsOn(inputs);
+ task.setInputWordsListFiles(
+ arrayPlus(
+ task.getInputWordsListFiles(),
+ inputs.get().getOutputWordsListFile()));
+ });
+ }
+
+ // you can also provide pre-built word-list XMLs
+ if (project.file("dictionary/prebuilt").exists()) {
+ File[] prebuiltFiles =
+ project.file("dictionary/prebuilt")
+ .listFiles((dir, name) -> name.endsWith(".xml"));
+ if (prebuiltFiles != null && prebuiltFiles.length > 0) {
+ mergingTask.configure(
+ task -> {
+ task.setInputWordsListFiles(
+ arrayPlus(task.getInputWordsListFiles(), prebuiltFiles));
+ System.out.println(
+ "Found prebuilt word-list folder for "
+ + project.getPath()
+ + " with "
+ + prebuiltFiles.length
+ + " files.");
+ });
+ }
+ }
+ }
+
+ project.afterEvaluate(
+ evalProject -> {
+ if (getExtValue(project, "shouldGenerateDictionary", true)) {
+ project.getTasks()
+ .named("preBuild")
+ .configure(preBuildTask -> preBuildTask.dependsOn(makeTask));
+ } else {
+ makeTask.configure(task -> task.setEnabled(false));
+ mergingTask.configure(task -> task.setEnabled(false));
+ }
+ });
+ }
+}
diff --git a/addons/buildSrc/src/main/java/MakeDictionaryTask.java b/buildSrc/src/main/java/MakeDictionaryTask.java
index de08486e5..2cffda56c 100644
--- a/addons/buildSrc/src/main/java/MakeDictionaryTask.java
+++ b/buildSrc/src/main/java/MakeDictionaryTask.java
@@ -1,15 +1,11 @@
+import java.io.File;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.TaskAction;
-import java.io.File;
-
-/**
- * Task to create a binary-dictionary readable by AnySoftKeyboard
- */
+/** Task to create a binary-dictionary readable by AnySoftKeyboard */
public class MakeDictionaryTask extends DefaultTask {
public MakeDictionaryTask() {
@@ -19,10 +15,12 @@ public class MakeDictionaryTask extends DefaultTask {
@TaskAction
public void makeDictionary() throws Exception {
- if (resourcesFolder == null) resourcesFolder = new File(getProject().getProjectDir(), "/src/main/res/");
+ if (resourcesFolder == null)
+ resourcesFolder = new File(getProject().getProjectDir(), "/src/main/res/");
if (!getResourcesFolder().exists() && !getResourcesFolder().mkdirs()) {
- throw new IllegalArgumentException("Failed to create output folder " + getResourcesFolder().getAbsolutePath());
+ throw new IllegalArgumentException(
+ "Failed to create output folder " + getResourcesFolder().getAbsolutePath());
}
MainClass.buildDictionary(getInputWordsListFile(), getResourcesFolder(), getPrefix());
diff --git a/addons/buildSrc/src/main/java/MergeWordsListTask.java b/buildSrc/src/main/java/MergeWordsListTask.java
index b5d2b65ab..4b02d0aaf 100644
--- a/addons/buildSrc/src/main/java/MergeWordsListTask.java
+++ b/buildSrc/src/main/java/MergeWordsListTask.java
@@ -1,14 +1,3 @@
-import org.gradle.api.DefaultTask;
-import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.InputFiles;
-import org.gradle.api.tasks.OutputFile;
-import org.gradle.api.tasks.TaskAction;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.helpers.DefaultHandler;
-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -17,14 +6,21 @@ import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.HashMap;
-
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+import org.gradle.api.DefaultTask;
+import org.gradle.api.tasks.Input;
+import org.gradle.api.tasks.InputFiles;
+import org.gradle.api.tasks.OutputFile;
+import org.gradle.api.tasks.TaskAction;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.helpers.DefaultHandler;
-/**
- * Task to merge several word-list files into one
- */
+/** Task to merge several word-list files into one */
public class MergeWordsListTask extends DefaultTask {
@TaskAction
public void mergeWordsLists() throws IOException, ParserConfigurationException, SAXException {
@@ -35,8 +31,16 @@ public class MergeWordsListTask extends DefaultTask {
throw new IllegalArgumentException("Must supply outputWordsListFile");
}
- System.out.println("Merging " + inputWordsListFiles.length + " files for maximum " + maxWordsInList + " words, and writing into \'" + outputWordsListFile.getName() + "\'. Discarding "
- + wordsToDiscard.length + " words.");
+ System.out.println(
+ "Merging "
+ + inputWordsListFiles.length
+ + " files for maximum "
+ + maxWordsInList
+ + " words, and writing into \'"
+ + outputWordsListFile.getName()
+ + "\'. Discarding "
+ + wordsToDiscard.length
+ + " words.");
final HashMap<String, WordWithCount> allWords = new HashMap<>();
for (File inputFile : inputWordsListFiles) {
@@ -44,25 +48,32 @@ public class MergeWordsListTask extends DefaultTask {
if (!inputFile.exists()) throw new FileNotFoundException(inputFile.getAbsolutePath());
SAXParserFactory parserFactor = SAXParserFactory.newInstance();
SAXParser parser = parserFactor.newSAXParser();
- final InputStreamReader inputStream = new InputStreamReader(new FileInputStream(inputFile), Charset.forName("UTF-8"));
+ final InputStreamReader inputStream =
+ new InputStreamReader(new FileInputStream(inputFile), Charset.forName("UTF-8"));
InputSource inputSource = new InputSource(inputStream);
parser.parse(inputSource, new MySaxHandler(allWords));
System.out.println("Loaded " + allWords.size() + " words in total...");
inputStream.close();
}
- //discarding unwanted words
+ // discarding unwanted words
if (wordsToDiscard.length > 0) {
System.out.print("Discarding words...");
- Arrays.stream(wordsToDiscard).forEach(word -> {
- if (allWords.remove(word) != null) System.out.print(".");
- });
+ Arrays.stream(wordsToDiscard)
+ .forEach(
+ word -> {
+ if (allWords.remove(word) != null) System.out.print(".");
+ });
System.out.println();
}
System.out.println("Creating output XML file...");
try (WordListWriter writer = new WordListWriter(outputWordsListFile)) {
- allWords.values().forEach(word -> WordListWriter.writeWordWithRuntimeException(writer, word.getWord(), word.getFreq()));
+ allWords.values()
+ .forEach(
+ word ->
+ WordListWriter.writeWordWithRuntimeException(
+ writer, word.getWord(), word.getFreq()));
System.out.println("Done.");
}
}
@@ -120,7 +131,8 @@ public class MergeWordsListTask extends DefaultTask {
}
@Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ public void startElement(String uri, String localName, String qName, Attributes attributes)
+ throws SAXException {
super.startElement(uri, localName, qName, attributes);
if (qName.equals("w")) {
inWord = true;
@@ -129,7 +141,6 @@ public class MergeWordsListTask extends DefaultTask {
} else {
inWord = false;
}
-
}
@Override
@@ -138,7 +149,6 @@ public class MergeWordsListTask extends DefaultTask {
if (inWord) {
word.append(ch, start, length);
}
-
}
@Override
@@ -166,7 +176,9 @@ public class MergeWordsListTask extends DefaultTask {
}
@Override
- public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) throws SAXException {
+ public void unparsedEntityDecl(
+ String name, String publicId, String systemId, String notationName)
+ throws SAXException {
System.out.print("unparsedEntityDecl! " + name);
super.unparsedEntityDecl(name, publicId, systemId, notationName);
}
@@ -181,7 +193,6 @@ public class MergeWordsListTask extends DefaultTask {
} else {
allWords.put(wordWithCount.getKey(), wordWithCount);
}
-
}
inWord = false;
diff --git a/addons/buildSrc/src/main/java/Parser.java b/buildSrc/src/main/java/Parser.java
index d1c2c10bc..4655f993f 100644
--- a/addons/buildSrc/src/main/java/Parser.java
+++ b/buildSrc/src/main/java/Parser.java
@@ -12,8 +12,8 @@ import java.util.stream.Collectors;
class Parser {
- private final static int LOOKING_FOR_WORD_START = 1;
- private final static int LOOKING_FOR_WORD_END = 2;
+ private static final int LOOKING_FOR_WORD_START = 1;
+ private static final int LOOKING_FOR_WORD_END = 2;
private final List<File> mInputFiles;
private final File mOutputFile;
private final HashSet<Character> mLangChars;
@@ -23,7 +23,15 @@ class Parser {
private final Locale mLocale;
private final int mMaxWordFrequency;
- public Parser(List<File> inputFiles, File outputFile, char[] wordCharacters, Locale locale, char[] additionalInnerWordCharacters, int maxListSize, int maxFrequency) throws IOException {
+ public Parser(
+ List<File> inputFiles,
+ File outputFile,
+ char[] wordCharacters,
+ Locale locale,
+ char[] additionalInnerWordCharacters,
+ int maxListSize,
+ int maxFrequency)
+ throws IOException {
if (inputFiles.size() == 0) {
throw new IllegalArgumentException("Files list should be at least 1 size.");
}
@@ -42,7 +50,8 @@ class Parser {
mLocale = locale;
mMaxListSize = maxListSize;
- mLangInnerChars = new HashSet<>(additionalInnerWordCharacters.length + wordCharacters.length);
+ mLangInnerChars =
+ new HashSet<>(additionalInnerWordCharacters.length + wordCharacters.length);
mLangChars = new HashSet<>(wordCharacters.length);
for (char c : wordCharacters) {
mLangChars.add(c);
@@ -56,7 +65,13 @@ class Parser {
mWords = new HashMap<>();
System.out.println(
- String.format(Locale.US, "Parsing %d files for a maximum of %d words (with max-frequency %d), and writing into '%s'.", mInputFiles.size(), mMaxListSize, maxFrequency, outputFile));
+ String.format(
+ Locale.US,
+ "Parsing %d files for a maximum of %d words (with max-frequency %d), and writing into '%s'.",
+ mInputFiles.size(),
+ mMaxListSize,
+ maxFrequency,
+ outputFile));
}
public void parse() throws IOException {
@@ -77,26 +92,43 @@ class Parser {
while (mMaxListSize > sortedList.size()) sortedList.remove(mMaxListSize - 1);
}
- final double maxFrequencyFactor = sortedList.stream()
- .max((w1, w2) -> w1.getFreq() - w2.getFreq())
- .map(WordWithCount::getFreq)
- .map(currentMaxFreq -> (double) currentMaxFreq)
- .map(currentMaxFreq -> ((double) mMaxWordFrequency) / currentMaxFreq)
- .orElseThrow(() -> new IllegalStateException("could not find max-frequency word. No words provided?"));
- System.out.println(String.format(Locale.US, "Adjusting frequencies with factor %.4f...", maxFrequencyFactor));
- sortedList = sortedList.stream()
- .map(word -> new WordWithCount(word.getWord(), 1 + (int) (word.getFreq() * maxFrequencyFactor)))
- .collect(Collectors.toList());
+ final double maxFrequencyFactor =
+ sortedList.stream()
+ .max((w1, w2) -> w1.getFreq() - w2.getFreq())
+ .map(WordWithCount::getFreq)
+ .map(currentMaxFreq -> (double) currentMaxFreq)
+ .map(currentMaxFreq -> ((double) mMaxWordFrequency) / currentMaxFreq)
+ .orElseThrow(
+ () ->
+ new IllegalStateException(
+ "could not find max-frequency word. No words provided?"));
+ System.out.println(
+ String.format(
+ Locale.US,
+ "Adjusting frequencies with factor %.4f...",
+ maxFrequencyFactor));
+ sortedList =
+ sortedList.stream()
+ .map(
+ word ->
+ new WordWithCount(
+ word.getWord(),
+ 1 + (int) (word.getFreq() * maxFrequencyFactor)))
+ .collect(Collectors.toList());
System.out.println("Creating output XML file...");
try (WordListWriter wordListWriter = new WordListWriter(mOutputFile)) {
- sortedList.forEach(word -> WordListWriter.writeWordWithRuntimeException(wordListWriter, word.getWord(), word.getFreq()));
+ sortedList.forEach(
+ word ->
+ WordListWriter.writeWordWithRuntimeException(
+ wordListWriter, word.getWord(), word.getFreq()));
System.out.println("Done.");
}
}
- private void addWordsFromInputStream(final long inputSize, InputStreamReader input) throws IOException {
+ private void addWordsFromInputStream(final long inputSize, InputStreamReader input)
+ throws IOException {
StringBuilder word = new StringBuilder();
int intChar;
@@ -125,7 +157,7 @@ class Parser {
}
}
}
- //last word?
+ // last word?
if (word.length() > 0) {
addWord(word);
}
@@ -145,7 +177,7 @@ class Parser {
}
private void addWord(StringBuilder word) {
- //removing all none chars from the end.
+ // removing all none chars from the end.
String typedWord = word.toString();
String wordKey = typedWord.toLowerCase(mLocale);
if (mWords.containsKey(wordKey)) {
@@ -154,5 +186,4 @@ class Parser {
mWords.put(wordKey, new WordWithCount(typedWord));
}
}
-
}
diff --git a/addons/buildSrc/src/main/java/WordListWriter.java b/buildSrc/src/main/java/WordListWriter.java
index 1d3277f2e..54286c782 100644
--- a/addons/buildSrc/src/main/java/WordListWriter.java
+++ b/buildSrc/src/main/java/WordListWriter.java
@@ -13,14 +13,18 @@ class WordListWriter implements Closeable {
WordListWriter(File outputWordsListFile) throws IOException {
final File parentFile = outputWordsListFile.getParentFile();
if (!parentFile.exists() && !parentFile.mkdirs()) {
- throw new IllegalArgumentException("Failed to create output folder " + parentFile.getAbsolutePath());
+ throw new IllegalArgumentException(
+ "Failed to create output folder " + parentFile.getAbsolutePath());
}
- OutputStreamWriter outputWriter = new OutputStreamWriter(new FileOutputStream(outputWordsListFile), Charset.forName("UTF-8"));
+ OutputStreamWriter outputWriter =
+ new OutputStreamWriter(
+ new FileOutputStream(outputWordsListFile), Charset.forName("UTF-8"));
mXmlWriter = new XmlWriter(outputWriter, true, 0, true);
mXmlWriter.writeEntity("wordlist");
}
- public static void writeWordWithRuntimeException(WordListWriter writer, String word, int frequency) {
+ public static void writeWordWithRuntimeException(
+ WordListWriter writer, String word, int frequency) {
try {
writer.addEntry(word, frequency);
} catch (IOException e) {
@@ -47,5 +51,4 @@ class WordListWriter implements Closeable {
private static int calcActualFreq(double wordIndex, double wordsCount) {
return Math.min(255, 1 + (int) (255 * (wordsCount - wordIndex) / wordsCount));
}
-
}
diff --git a/addons/buildSrc/src/main/java/WordWithCount.java b/buildSrc/src/main/java/WordWithCount.java
index 4b67e3b5c..33dd19dfb 100644
--- a/addons/buildSrc/src/main/java/WordWithCount.java
+++ b/buildSrc/src/main/java/WordWithCount.java
@@ -57,13 +57,16 @@ class WordWithCount implements Comparable<WordWithCount> {
public void addFreq(String word) {
if (mFreq < Integer.MAX_VALUE) mFreq++;
- mWordVariants.compute(word, (s, usages) -> usages == null? 1 : usages+1);
+ mWordVariants.compute(word, (s, usages) -> usages == null ? 1 : usages + 1);
}
public void addOtherWord(WordWithCount wordWithCount) {
mFreq = Math.max(mFreq, wordWithCount.mFreq);
for (Map.Entry<String, Integer> variant : mWordVariants.entrySet()) {
- mWordVariants.compute(variant.getKey(), (s, usages) -> usages == null? variant.getValue() : usages+variant.getValue());
+ mWordVariants.compute(
+ variant.getKey(),
+ (s, usages) ->
+ usages == null ? variant.getValue() : usages + variant.getValue());
}
}
diff --git a/addons/buildSrc/src/main/java/XmlWriter.java b/buildSrc/src/main/java/XmlWriter.java
index 1578b80c8..4a8b9487e 100644
--- a/addons/buildSrc/src/main/java/XmlWriter.java
+++ b/buildSrc/src/main/java/XmlWriter.java
@@ -1,4 +1,3 @@
-
/*
* Copyright (c) 2003, Henri Yandell
* All rights reserved.
@@ -105,14 +104,14 @@ import java.util.Stack;
* Makes writing XML much much easier.
*
* @author <a href="mailto:bayard@generationjava.com">Henri Yandell</a>
- * @author <a href="mailto:menny|AT| evendanan{dot} net">Menny Even Danan - just
- * added some features on Henri's initial version</a>
+ * @author <a href="mailto:menny|AT| evendanan{dot} net">Menny Even Danan - just added some features
+ * on Henri's initial version</a>
* @version 0.2
*/
class XmlWriter {
private static final String INDENT_STRING = " ";
- private final boolean thisIsWriterOwner;// is this instance the owner?
+ private final boolean thisIsWriterOwner; // is this instance the owner?
private final Writer writer; // underlying writer
private final int indentingOffset;
private final Stack<String> stack; // of xml entity names
@@ -134,8 +133,7 @@ class XmlWriter {
this.closed = true;
this.stack = new Stack<>();
this.attrs = new StringBuffer();
- if (addXmlPrefix)
- this.writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
+ if (addXmlPrefix) this.writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
}
XmlWriter(File outputFile) throws IOException {
@@ -166,8 +164,7 @@ class XmlWriter {
writeAttributes();
this.closed = true;
this.writer.write(">");
- if (newLine)
- this.writer.write("\n");
+ if (newLine) this.writer.write("\n");
}
}
@@ -179,9 +176,9 @@ class XmlWriter {
}
/**
- * Write an attribute out for the current entity. Any xml characters in the
- * value are escaped. Currently it does not actually throw the exception,
- * but the api is set that way for future changes.
+ * Write an attribute out for the current entity. Any xml characters in the value are escaped.
+ * Currently it does not actually throw the exception, but the api is set that way for future
+ * changes.
*
* @param attr name of attribute.
* @param value value of attribute.
@@ -196,8 +193,8 @@ class XmlWriter {
}
/**
- * End the current entity. This will throw an exception if it is called when
- * there is not a currently open entity.
+ * End the current entity. This will throw an exception if it is called when there is not a
+ * currently open entity.
*
* @throws IOException
*/
@@ -211,8 +208,7 @@ class XmlWriter {
writeAttributes();
this.writer.write("/>\n");
} else {
- if (!this.justWroteText)
- {
+ if (!this.justWroteText) {
for (int tabIndex = 0; tabIndex < stack.size() + indentingOffset; tabIndex++)
this.writer.write(INDENT_STRING);
}
@@ -228,26 +224,26 @@ class XmlWriter {
}
/**
- * Close this writer. It does not close the underlying writer, but does
- * throw an exception if there are as yet unclosed tags.
+ * Close this writer. It does not close the underlying writer, but does throw an exception if
+ * there are as yet unclosed tags.
*
* @throws IOException
*/
public void close() throws IOException {
if (!this.stack.empty()) {
- throw new InvalidObjectException("Tags are not all closed. " +
- "Possibly, " + this.stack.pop() + " is unclosed. ");
+ throw new InvalidObjectException(
+ "Tags are not all closed. "
+ + "Possibly, "
+ + this.stack.pop()
+ + " is unclosed. ");
}
- if (thisIsWriterOwner)
- {
+ if (thisIsWriterOwner) {
this.writer.flush();
this.writer.close();
}
}
- /**
- * Output body text. Any xml characters are escaped.
- */
+ /** Output body text. Any xml characters are escaped. */
public XmlWriter writeText(String text) throws IOException {
closeOpeningTag(false);
this.empty = false;
@@ -260,7 +256,7 @@ class XmlWriter {
// to make the jar smaller.
// from XmlW
- static public String escapeXml(String str) {
+ public static String escapeXml(String str) {
str = replaceString(str, "&", "&amp;");
str = replaceString(str, "<", "&lt;");
str = replaceString(str, ">", "&gt;");
@@ -270,13 +266,13 @@ class XmlWriter {
}
// from StringW
- static public String replaceString(String text, String repl, String with) {
+ public static String replaceString(String text, String repl, String with) {
return replaceString(text, repl, with, -1);
}
/**
- * Replace a string with another string inside a larger string, for the
- * first n values of the search string.
+ * Replace a string with another string inside a larger string, for the first n values of the
+ * search string.
*
* @param text String to do search and replace in
* @param repl String to search for
diff --git a/buildSrc/src/main/groovy/emoji/EmojiCollection.java b/buildSrc/src/main/java/emoji/EmojiCollection.java
index eb1bc2128..eb1bc2128 100644
--- a/buildSrc/src/main/groovy/emoji/EmojiCollection.java
+++ b/buildSrc/src/main/java/emoji/EmojiCollection.java
diff --git a/buildSrc/src/main/groovy/emoji/EmojiCollector.java b/buildSrc/src/main/java/emoji/EmojiCollector.java
index d417c2362..d417c2362 100644
--- a/buildSrc/src/main/groovy/emoji/EmojiCollector.java
+++ b/buildSrc/src/main/java/emoji/EmojiCollector.java
diff --git a/buildSrc/src/main/groovy/emoji/EmojiData.java b/buildSrc/src/main/java/emoji/EmojiData.java
index 932ea3a32..932ea3a32 100644
--- a/buildSrc/src/main/groovy/emoji/EmojiData.java
+++ b/buildSrc/src/main/java/emoji/EmojiData.java
diff --git a/buildSrc/src/main/groovy/emoji/EmojiKeyboardCreator.java b/buildSrc/src/main/java/emoji/EmojiKeyboardCreator.java
index 6c317679b..6c317679b 100644
--- a/buildSrc/src/main/groovy/emoji/EmojiKeyboardCreator.java
+++ b/buildSrc/src/main/java/emoji/EmojiKeyboardCreator.java
diff --git a/buildSrc/src/main/groovy/emoji/EmojiKeyboardsExtractor.java b/buildSrc/src/main/java/emoji/EmojiKeyboardsExtractor.java
index e7cce0ee0..e7cce0ee0 100644
--- a/buildSrc/src/main/groovy/emoji/EmojiKeyboardsExtractor.java
+++ b/buildSrc/src/main/java/emoji/EmojiKeyboardsExtractor.java
diff --git a/buildSrc/src/main/groovy/emoji/UnicodeOrgEmojiTestDataParser.java b/buildSrc/src/main/java/emoji/UnicodeOrgEmojiTestDataParser.java
index 523a512fe..523a512fe 100644
--- a/buildSrc/src/main/groovy/emoji/UnicodeOrgEmojiTestDataParser.java
+++ b/buildSrc/src/main/java/emoji/UnicodeOrgEmojiTestDataParser.java
diff --git a/configs/checkstyle/suppressions.xml b/configs/checkstyle/suppressions.xml
index a5272bc96..1ac6bb7a1 100644
--- a/configs/checkstyle/suppressions.xml
+++ b/configs/checkstyle/suppressions.xml
@@ -31,4 +31,5 @@
<suppress files="ActivityHelper\.java" id="UsingNativeAlertDialog" />
<suppress files="simple_phone\.xml" id="DoNotUseAndroidKeyIcon" />
+ <suppress files="keyboard_layout_api\.xml" id="DoNotUseAndroidKeyIcon" />
</suppressions> \ No newline at end of file
diff --git a/gradle/root_all_projects_ext.gradle b/gradle/root_all_projects_ext.gradle
index 5bd91fbde..88b138e9c 100644
--- a/gradle/root_all_projects_ext.gradle
+++ b/gradle/root_all_projects_ext.gradle
@@ -1,7 +1,5 @@
allprojects {
project.ext {
- askExternalAddOnsVersion = '4.0.947'
-
androidBuildTools = '29.0.2'
supportLibVersion = '25.4.0'
robolectricVersion = '4.3.1'
diff --git a/overlay/src/debug/res/drawable/test_image_1.png b/overlay/src/debug/res/drawable/test_image_1.png
index 12fa99560..12fa99560 100755..100644
--- a/overlay/src/debug/res/drawable/test_image_1.png
+++ b/overlay/src/debug/res/drawable/test_image_1.png
Binary files differ
diff --git a/overlay/src/debug/res/drawable/test_image_2.png b/overlay/src/debug/res/drawable/test_image_2.png
index 5d6cf4f17..5d6cf4f17 100755..100644
--- a/overlay/src/debug/res/drawable/test_image_2.png
+++ b/overlay/src/debug/res/drawable/test_image_2.png
Binary files differ
diff --git a/overlay/src/debug/res/drawable/test_image_3.png b/overlay/src/debug/res/drawable/test_image_3.png
index 5d6cf4f17..5d6cf4f17 100755..100644
--- a/overlay/src/debug/res/drawable/test_image_3.png
+++ b/overlay/src/debug/res/drawable/test_image_3.png
Binary files differ
diff --git a/settings.gradle b/settings.gradle
index 098e515e0..907107cac 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,8 @@
+include ':api'
+include ':addons:base'
+include ':addons:languages'
+include ':addons:languages:english', ':addons:languages:english:pack'
+
include ':base', ':base-rx', ':base-test', ':prefs'
include ':remote', ':fileprovider'
include ':dictionaries', ':jnidictionaryv1', ':jnidictionaryv2', ':nextword'