aboutsummaryrefslogtreecommitdiff
path: root/addons
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 /addons
parent082f1459e97f6243857dd4c23831ff2568ec1cf4 (diff)
downloadAnySoftKeyboard-6d5481428b7eecfe0c2d00e8aa7ec4fe6cff411c.tar.gz
AnySoftKeyboard-6d5481428b7eecfe0c2d00e8aa7ec4fe6cff411c.tar.bz2
Initial language-packs merge
Diffstat (limited to 'addons')
-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/AndroidManifest.xml5
-rw-r--r--addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java73
-rw-r--r--addons/api/src/main/java/com/anysoftkeyboard/api/MediaInsertion.java12
-rw-r--r--addons/api/src/main/res/values/attrs.xml37
-rw-r--r--addons/api/src/main/res/values/extension_keyboard_types.xml7
-rw-r--r--addons/api/src/main/res/values/functional_key_codes.xml65
-rw-r--r--addons/api/src/main/res/values/key_heights.xml7
-rw-r--r--addons/api/src/main/res/values/keyboard_layout_api.xml105
-rw-r--r--addons/api/src/main/res/values/keyboard_modes.xml8
-rw-r--r--addons/api/src/main/res/values/keyboard_theme_api.xml271
-rw-r--r--addons/api/src/main/res/values/strings.xml3
-rw-r--r--addons/api/src/main/res/values/version.xml4
-rw-r--r--addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java69
-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/BinaryDictionaryResourceNormalizer.java87
-rw-r--r--addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java107
-rw-r--r--addons/buildSrc/src/main/java/GenerateWordsListTask.java119
-rw-r--r--addons/buildSrc/src/main/java/MainClass.java82
-rw-r--r--addons/buildSrc/src/main/java/MakeBinaryDictionary.java262
-rw-r--r--addons/buildSrc/src/main/java/MakeDictionaryPlugin.java120
-rw-r--r--addons/buildSrc/src/main/java/MakeDictionaryTask.java61
-rw-r--r--addons/buildSrc/src/main/java/MergeWordsListTask.java190
-rw-r--r--addons/buildSrc/src/main/java/Parser.java158
-rw-r--r--addons/buildSrc/src/main/java/WordListWriter.java51
-rw-r--r--addons/buildSrc/src/main/java/WordWithCount.java74
-rw-r--r--addons/buildSrc/src/main/java/XmlWriter.java333
-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
213 files changed, 70 insertions, 3327 deletions
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/AndroidManifest.xml b/addons/api/src/main/AndroidManifest.xml
deleted file mode 100644
index 2a7323cff..000000000
--- a/addons/api/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<manifest xmlns:tools="http://schemas.android.com/tools"
- package="com.anysoftkeyboard.api">
-
- <uses-sdk tools:overrideLibrary="androidx.test,androidx.test.core" />
-</manifest>
diff --git a/addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java b/addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java
deleted file mode 100644
index ee14290d5..000000000
--- a/addons/api/src/main/java/com/anysoftkeyboard/api/KeyCodes.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.anysoftkeyboard.api;
-
-public class KeyCodes {
-
- public static final int SPACE = 32;
- public static final int ENTER = 10;
- public static final int TAB = 9;
- public static final int ESCAPE = 27;
-
- public static final int DELETE = -5;
- public static final int DELETE_WORD = -7;
- public static final int FORWARD_DELETE = -8;
-
- public static final int QUICK_TEXT = -10;
- public static final int QUICK_TEXT_POPUP = -102;
- public static final int DOMAIN = -9;
-
- public static final int SHIFT = -1;
- public static final int ALT = -6;
- public static final int CTRL = -11;
- public static final int SHIFT_LOCK = -14;
- public static final int CTRL_LOCK = -15;
-
- public static final int MODE_SYMOBLS = -2;
- public static final int MODE_ALPHABET = -99;
- public static final int MODE_ALPHABET_POPUP = -98;
- public static final int KEYBOARD_CYCLE = -97;
- public static final int KEYBOARD_REVERSE_CYCLE = -96;
- public static final int KEYBOARD_CYCLE_INSIDE_MODE = -95;
- public static final int KEYBOARD_MODE_CHANGE = -94;
-
- public static final int ARROW_LEFT = -20;
- public static final int ARROW_RIGHT = -21;
- public static final int ARROW_UP = -22;
- public static final int ARROW_DOWN = -23;
- public static final int MOVE_HOME = -24;
- public static final int MOVE_END = -25;
-
- public static final int SETTINGS = -100;
- public static final int CANCEL = -3;
- public static final int CLEAR_INPUT = -13;
- public static final int VOICE_INPUT = -4;
-
- public static final int DISABLED = 0;
-
- public static final int SPLIT_LAYOUT = -110;
- public static final int MERGE_LAYOUT = -111;
- public static final int COMPACT_LAYOUT_TO_LEFT = -112;
- public static final int COMPACT_LAYOUT_TO_RIGHT = -113;
-
- 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;
- public static final int CLIPBOARD_PASTE_POPUP = -133;
- public static final int CLIPBOARD_SELECT = -134;
- public static final int CLIPBOARD_SELECT_ALL = -135;
-
- public static final int UNDO = -136;
- public static final int REDO = -137;
-
- public static final int IMAGE_MEDIA_POPUP = -140;
-
- public static final int PRE_PREPARED_ABBREVIATIONS_POPUP = -150;
- public static final int PRE_PREPARED_TEXT_POPUP = -151;
- public static final int PRE_PREPARED_EMAILS_POPUP = -152;
-
- public static final int EXTERNAL_INTEGRATION = -200;
-
-
-}
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/api/src/main/res/values/attrs.xml b/addons/api/src/main/res/values/attrs.xml
deleted file mode 100644
index 84f71de6e..000000000
--- a/addons/api/src/main/res/values/attrs.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 Android Open Source Project
- Copyright (C) 2013 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.
--->
-
-<resources>
- <!-- Whether should show preview. -->
- <attr name="showPreview" format="reference|boolean"/>
-
- <declare-styleable name="keyType">
- <attr name="key_type_function" format="boolean"/>
- <attr name="key_type_action" format="boolean"/>
- <attr name="key_type_feedback" format="boolean"/>
- </declare-styleable>
-
- <declare-styleable name="keyActionType">
- <attr name="action_done" format="boolean"/>
- <attr name="action_search" format="boolean"/>
- <attr name="action_go" format="boolean"/>
- <attr name="action_send" format="boolean"/>
- <attr name="action_previous" format="boolean"/>
- <attr name="action_next" format="boolean"/>
- </declare-styleable>
-
-</resources>
diff --git a/addons/api/src/main/res/values/extension_keyboard_types.xml b/addons/api/src/main/res/values/extension_keyboard_types.xml
deleted file mode 100644
index a2324fbbb..000000000
--- a/addons/api/src/main/res/values/extension_keyboard_types.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedResources">
- <integer name="extension_keyboard_type_bottom_row">1</integer>
- <integer name="extension_keyboard_type_top_row">2</integer>
- <integer name="extension_keyboard_type_extension_keyboard">3</integer>
- <integer name="extension_keyboard_type_utility_keyboard">4</integer>
-</resources>
diff --git a/addons/api/src/main/res/values/functional_key_codes.xml b/addons/api/src/main/res/values/functional_key_codes.xml
deleted file mode 100644
index 55962daa5..000000000
--- a/addons/api/src/main/res/values/functional_key_codes.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedResources">
- <integer name="key_code_disabled">0</integer>
-
- <integer name="key_code_esc">27</integer>
- <integer name="key_code_tab">9</integer>
-
- <integer name="key_code_space">32</integer>
- <integer name="key_code_enter">10</integer>
- <integer name="key_code_delete">-5</integer>
- <integer name="key_code_clear_input">-13</integer>
- <integer name="key_code_voice_input">-4</integer>
-
- <integer name="key_code_quick_text">-10</integer>
- <integer name="key_code_quick_text_popup">-102</integer>
- <integer name="key_code_image_media_popup">-140</integer>
- <integer name="key_code_pre_prepared_abbreviations_popup">-150</integer>
- <integer name="key_code_pre_prepared_text_popup">-151</integer>
- <integer name="key_code_pre_prepared_emails_popup">-152</integer>
- <integer name="key_code_external_integration">-200</integer>
- <integer name="key_code_domain">-9</integer>
-
- <integer name="key_code_shift">-1</integer>
- <integer name="key_code_alt">-6</integer>
- <integer name="key_code_ctrl">-11</integer>
- <integer name="key_code_shift_lock">-14</integer>
- <integer name="key_code_ctrl_lock">-15</integer>
-
- <integer name="key_code_mode_symbols">-2</integer>
- <integer name="key_code_mode_alphabet">-99</integer>
- <integer name="key_code_mode_alphabet_popup">-98</integer>
- <integer name="key_code_keyboard_cycle">-97</integer>
- <integer name="key_code_keyboard_reverse_cycle">-96</integer>
- <integer name="key_code_keyboard_cycle_inside_mode">-95</integer>
- <integer name="key_code_keyboard_mode_change">-94</integer>
-
- <integer name="key_code_arrow_left">-20</integer>
- <integer name="key_code_arrow_right">-21</integer>
- <integer name="key_code_arrow_up">-22</integer>
- <integer name="key_code_arrow_down">-23</integer>
- <integer name="key_code_move_home">-24</integer>
- <integer name="key_code_move_end">-25</integer>
-
- <integer name="key_code_settings">-100</integer>
- <integer name="key_code_cancel">-3</integer>
-
- <integer name="key_code_split_layout">-110</integer>
- <integer name="key_code_merge_layout">-111</integer>
- <integer name="key_code_compact_layout_to_left">-112</integer>
- <integer name="key_code_compact_layout_to_right">-113</integer>
-
- <integer name="key_code_utility_keyboard">-120</integer>
-
- <integer name="key_code_clipboard_copy">-130</integer>
- <integer name="key_code_clipboard_cut">-131</integer>
- <integer name="key_code_clipboard_paste">-132</integer>
- <integer name="key_code_clipboard_paste_popup">-133</integer>
- <integer name="key_code_clipboard_select">-134</integer>
- <integer name="key_code_clipboard_select_all">-135</integer>
- <integer name="key_code_undo">-136</integer>
- <integer name="key_code_redo">-137</integer>
-
- <integer name="key_code_delete_word">-7</integer>
- <integer name="key_code_forward_delete">-8</integer>
-</resources>
diff --git a/addons/api/src/main/res/values/key_heights.xml b/addons/api/src/main/res/values/key_heights.xml
deleted file mode 100644
index 6f0c69e5e..000000000
--- a/addons/api/src/main/res/values/key_heights.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedResources">
- <integer name="key_zero_height">0</integer>
- <integer name="key_normal_height">-1</integer>
- <integer name="key_short_height">-2</integer>
- <integer name="key_tall_height">-3</integer>
-</resources>
diff --git a/addons/api/src/main/res/values/keyboard_layout_api.xml b/addons/api/src/main/res/values/keyboard_layout_api.xml
deleted file mode 100644
index e34dda3ee..000000000
--- a/addons/api/src/main/res/values/keyboard_layout_api.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 Android Open Source Project
-Copyright (C) 2013 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.
--->
-
-<resources>
-
- <declare-styleable name="KeyboardLayout">
- <!-- Default width of a key, in pixels or percentage of display width. -->
- <attr name="android:keyWidth"/>
- <!-- Default height of a key, in pixels or percentage of display width. -->
- <attr name="android:keyHeight"/>
- <!-- Default horizontal gap between keys. -->
- <attr name="android:horizontalGap"/>
- <!-- Default vertical gap between rows of keys. -->
- <attr name="android:verticalGap"/>
- <!-- Whether should show preview. -->
- <attr name="showPreview"/>
- </declare-styleable>
-
- <declare-styleable name="KeyboardLayout_Row">
- <!-- Row edge flags. -->
- <attr name="android:rowEdgeFlags">
- </attr>
- <!-- Mode of the keyboard. If the mode doesn't match the
- requested keyboard mode, the row will be skipped. -->
- <attr name="android:keyboardMode"/>
- </declare-styleable>
-
- <declare-styleable name="KeyboardLayout_Key">
- <!-- The unicode value or comma-separated values that this key outputs. -->
- <attr name="android:codes"/>
-
- <!-- The XML keyboard layout of any popup keyboard. -->
- <attr name="android:popupKeyboard"/>
- <!-- The characters to display in the popup keyboard. -->
- <attr name="android:popupCharacters"/>
- <!-- Key edge flags. -->
- <attr name="android:keyEdgeFlags">
- </attr>
- <!-- Whether this is a modifier key such as Alt or Shift. -->
- <attr name="android:isModifier"/>
- <!-- Whether this is a toggle key. -->
- <attr name="android:isSticky"/>
- <!-- Whether long-pressing on this key will make it repeat. -->
- <attr name="android:isRepeatable"/>
- <!-- The icon to show in the popup preview. -->
- <attr name="android:iconPreview"/>
- <!-- The string of characters to output when this key is pressed. -->
- <attr name="android:keyOutputText"/>
- <!-- The label to display on the key. -->
- <attr name="android:keyLabel"/>
- <!-- The icon to display on the key instead of the label. -->
- <attr name="android:keyIcon"/>
- <!-- Mode of the keyboard. If the mode doesn't match the
- requested keyboard mode, the key will be skipped. -->
- <attr name="android:keyboardMode"/>
-
- <attr name="longPressCode" format="reference|integer"/>
-
- <attr name="isFunctional" format="reference|boolean"/>
-
- <attr name="shiftedCodes" format="reference|integer|string"/>
-
- <attr name="shiftedKeyLabel" format="reference|string"/>
-
- <!-- Whether should show preview. -->
- <attr name="showPreview"/>
-
- <attr name="keyDynamicEmblem">
- <flag name="none" value="0"/>
- <flag name="text" value="1"/>
- <flag name="icon" value="2"/>
- </attr>
-
- <!-- The characters to display as a hint for the popup keyboard -->
-
- <!-- The characters to display as a hint for the popup keyboard -->
- <attr name="hintLabel" format="reference|string"/>
-
- <attr name="showInLayout">
- <!--default value-->
- <flag name="always" value="0"/>
- <flag name="if_applicable" value="1"/>
- <flag name="never" value="2"/>
- </attr>
-
- <!-- coma separated tags for this key. Might be used for completions -->
- <attr name="tags" format="reference|string"/>
-
- <attr name="extra_key_data" format="reference|string"/>
- </declare-styleable>
-</resources> \ No newline at end of file
diff --git a/addons/api/src/main/res/values/keyboard_modes.xml b/addons/api/src/main/res/values/keyboard_modes.xml
deleted file mode 100644
index 2968c7034..000000000
--- a/addons/api/src/main/res/values/keyboard_modes.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedResources">
- <integer name="keyboard_mode_normal">1</integer>
- <integer name="keyboard_mode_im">2</integer>
- <integer name="keyboard_mode_url">3</integer>
- <integer name="keyboard_mode_email">4</integer>
- <integer name="keyboard_mode_password">5</integer>
-</resources>
diff --git a/addons/api/src/main/res/values/keyboard_theme_api.xml b/addons/api/src/main/res/values/keyboard_theme_api.xml
deleted file mode 100644
index d1460ac95..000000000
--- a/addons/api/src/main/res/values/keyboard_theme_api.xml
+++ /dev/null
@@ -1,271 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 Android Open Source Project
- Copyright (C) 2013 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.
--->
-
-<resources>
- <declare-styleable name="AnyKeyboardViewTheme">
- <!-- Image for the key. This image needs to be a StateListDrawable, with the following
- possible states: normal, pressed, checkable, checkable+pressed, checkable+checked,
- checkable+checked+pressed. -->
- <attr name="keyBackground" format="reference"/>
-
- <!-- Size of the text for character keys. -->
- <attr name="keyTextSize" format="reference|dimension"/>
-
- <!-- Size of the text for custom keys with some text and no icon. -->
- <attr name="labelTextSize" format="reference|dimension"/>
-
- <!-- Color to use for the label in a key. -->
- <attr name="keyTextColor" format="reference|color"/>
-
- <!-- size of different keys height -->
- <attr name="keyNormalHeight" format="reference|dimension"/>
- <attr name="keySmallHeight" format="reference|dimension"/>
- <attr name="keyLargeHeight" format="reference|dimension"/>
-
- <attr name="keyHorizontalGap" format="reference|dimension"/>
- <attr name="keyVerticalGap" format="reference|dimension"/>
-
- <!-- Vertical offset of the key press feedback from the key. -->
- <attr name="keyPreviewOffset" format="reference|dimension"/>
- <attr name="keyPreviewBackground" format="reference"/>
- <attr name="keyPreviewTextSize" format="reference|dimension"/>
- <attr name="keyPreviewTextColor" format="reference|color"/>
- <attr name="keyPreviewLabelTextSize" format="reference|dimension"/>
-
- <!-- Hysteresis distance for key debouncing -->
- <attr name="keyHysteresisDistance" format="reference|dimension"/>
-
- <!-- Amount to offset the touch Y coordinate by, for bias correction. -->
- <attr name="verticalCorrection" format="reference|dimension"/>
-
- <attr name="shadowColor" format="reference|color"/>
- <attr name="shadowRadius" format="reference|dimension"/>
- <attr name="shadowOffsetX" format="reference|dimension"/>
- <attr name="shadowOffsetY" format="reference|dimension"/>
-
- <attr name="backgroundDimAmount" format="reference|float"/>
-
- <attr name="keyTextStyle">
- <flag name="normal" value="0"/>
- <flag name="bold" value="1"/>
- <flag name="italic" value="2"/>
- </attr>
-
- <attr name="keyTextCaseStyle">
- <flag name="auto" value="0"/>
- <flag name="lowercase" value="1"/>
- <flag name="uppercase" value="2"/>
- </attr>
-
- <attr name="symbolColorScheme">
- <flag name="white" value="0"/>
- <flag name="black" value="1"/>
- </attr>
-
- <attr name="android:background"/>
- <attr name="android:paddingLeft"/>
- <attr name="android:paddingTop"/>
- <attr name="android:paddingRight"/>
- <attr name="android:paddingBottom"/>
-
- <attr name="suggestionNormalTextColor" format="reference|color"/>
- <attr name="suggestionRecommendedTextColor" format="reference|color"/>
- <attr name="suggestionOthersTextColor" format="reference|color"/>
- <attr name="suggestionTextSize" format="reference|dimension"/>
- <attr name="suggestionBackgroundImage" format="reference"/>
- <attr name="suggestionDividerImage" format="reference"/>
- <attr name="suggestionCloseImage" format="reference"/>
- <attr name="suggestionStripHeight" format="reference|dimension"/>
-
- <!-- Size of the text for hinting about long press output. -->
- <attr name="hintTextSize" format="reference|dimension"/>
-
- <!-- Color to use for hint text. -->
- <attr name="hintTextColor" format="reference|color"/>
-
- <!-- Size of the text for the prefered word. -->
- <attr name="suggestionPreferedWordTextSize" format="reference|dimension"/>
- <!-- vertical padding. -->
- <attr name="suggestionWordXGap" format="reference|dimension"/>
-
- <!-- location of hint labels -->
- <attr name="hintLabelAlign">
- <flag name="left" value="3"/>
- <flag name="center" value="17"/>
- <flag name="right" value="5"/>
- </attr>
- <attr name="hintLabelVAlign">
- <flag name="top" value="48"/>
- <flag name="bottom" value="80"/>
- <!-- currently not supported -->
- <flag name="center" value="17"/>
- </attr>
-
- <!-- hint label to use when hintLabel unspecified and more than 3 characters in -->
- <!-- popupCharacters or when longPressCode instead of popupCharacters -->
- <!-- (if none specified, app default used) -->
- <attr name="hintOverflowLabel" format="reference|string"/>
-
- <!-- FOR FUTURE EXPANSION - NOT YET SUPPORTED -->
-
- <!-- hint icon to use when no hintLabel given and more than 3 characters in popupCharacters -->
- <!-- or when longPressCode instead of popupCharacters (if not specified, app default used) -->
- <!-- if both icon and label specified, icon wins -->
- <attr name="hintOverflowIcon" format="reference"/>
- <!-- allow the key to have another hint to show that there are more characters in -->
- <!-- popupCharacters than shown by the hint label (if not specified, none used) -->
- <attr name="extraHintLabel" format="reference|string"/>
- <attr name="extraHintIcon" format="reference"/>
- <attr name="extraHintLabelAlign">
- <flag name="left" value="3"/>
- <flag name="center" value="17"/>
- <flag name="right" value="5"/>
- </attr>
- <attr name="extraHintLabelVAlign">
- <flag name="top" value="48"/>
- <flag name="bottom" value="80"/>
- <!-- less likely to support... -->
- <flag name="center" value="17"/>
- </attr>
- <!-- allow main key label/icon to be in different positions -->
- <!-- behavior before implemented: keyLabelIconAlign="center" keyLabelIconVAlign="auto" -->
- <attr name="keyLabelIconAlign">
- <!-- against left or right edge of key -->
- <flag name="left" value="3"/>
- <flag name="right" value="5"/>
- <!-- horizontally centered at center of key (adjusted only for key padding) -->
- <flag name="center" value="17"/>
- <!-- centered, but also adjust position to account for hint label location -->
- <flag name="auto" value="7"/>
- </attr>
-
- <attr name="keyLabelIconVAlign">
- <!-- against top or bottom edge of key -->
- <flag name="top" value="48"/>
- <flag name="bottom" value="80"/>
- <!-- vertically centered at center of key (adjusted only for key padding) -->
- <flag name="center" value="17"/>
- <!-- centered, but also adjust position to account for hint label location -->
- <flag name="auto" value="112"/>
- </attr>
- <!-- expected behavior if showHintOnPreview="false" and showExtraHintOnPreview="true" -->
- <!-- is that extra hint is shown if any long press or popupCharacters for key -->
-
- <!-- keyboard wallpaper - this is the image BEHIND the keyboard, it is visible when switching layout with animation -->
- <attr name="keyboardWallpaper" format="reference"/>
-
- <attr name="keyboardNameTextSize" format="reference|dimension"/>
- <attr name="keyboardNameTextColor" format="reference|color"/>
-
- <attr name="previewGestureTextSize" format="reference|dimension"/>
- <attr name="previewGestureTextColor" format="reference|color"/>
- <!-- show hint and/or extra hint on preview -->
- <attr name="showHintOnPreview" format="reference|boolean"/>
- <attr name="showExtraHintOnPreview" format="reference|boolean"/>
- <attr name="previewAnimationType">
- <flag name="none" value="0"/>
- <!--default value-->
- <flag name="extend_key" value="1"/>
- <flag name="appear" value="2"/>
- </attr>
-
- <attr name="swipeTypingColor" format="reference|color"/>
- <attr name="swipeTypingStrokeWidth" format="reference|dimension"/>
- <attr name="swipeTypingStrokeMinWidth" format="reference|dimension"/>
- <attr name="swipeTypingStrokeWidthStep" format="reference|dimension"/>
- <attr name="swipeTypingStrokeMinAlpha" format="reference|float"/>
- <attr name="swipeTypingStrokeAlphaStep" format="reference|integer"/>
- <attr name="swipeTypingShadowColor" format="reference|color"/>
- <attr name="swipeTypingShadowRadius" format="reference|dimension"/>
- <attr name="swipeTypingShadowOffsetX" format="reference|dimension"/>
- <attr name="swipeTypingShadowOffsetY" format="reference|dimension"/>
- </declare-styleable>
-
- <declare-styleable name="AnyKeyboardViewIconsTheme">
- <!-- should support normal, android:state_pressed, key_type_feedback, android:state_pressed+key_type_feedback, android:state_checked, state_checked+key_type_feedback -->
- <attr name="iconKeyShift" format="reference"/>
- <!-- should support normal, android:state_pressed, key_type_feedback, android:state_pressed+key_type_feedback, android:state_checked, state_checked+key_type_feedback -->
- <attr name="iconKeyControl" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyBackspace" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeySpace" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyTab" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyCancel" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyGlobe" format="reference"/>
- <!-- should support normal, key_type_feedback, action_done, action_done+key_type_feedback, action_search, action_search+key_type_feedback, action_go, action_go+key_type_feedback -->
- <attr name="iconKeyAction" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyArrowRight" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyArrowLeft" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyArrowUp" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyArrowDown" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyMic" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeySettings" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputClear" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputSelectAll" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputClipboardCopy" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputClipboardCut" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputClipboardPaste" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputMoveEnd" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyInputMoveHome" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyCondenseNormal" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyCondenseSplit" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyCondenseCompactToRight" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyCondenseCompactToLeft" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyClipboardCopy" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyClipboardCut" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyClipboardPaste" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyClipboardSelect" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyClipboardFineSelect" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyQuickText" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyUndo" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyRedo" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyForwardDelete" format="reference"/>
- <!-- should support normal, key_type_feedback -->
- <attr name="iconKeyImageInsert" format="reference"/>
- </declare-styleable>
-
-</resources> \ No newline at end of file
diff --git a/addons/api/src/main/res/values/strings.xml b/addons/api/src/main/res/values/strings.xml
deleted file mode 100644
index 045e125f3..000000000
--- a/addons/api/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-</resources>
diff --git a/addons/api/src/main/res/values/version.xml b/addons/api/src/main/res/values/version.xml
deleted file mode 100644
index 1058bc13c..000000000
--- a/addons/api/src/main/res/values/version.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <integer name="anysoftkeyboard_api_version_code">10</integer>
-</resources> \ No newline at end of file
diff --git a/addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java b/addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java
deleted file mode 100644
index 9be7d41da..000000000
--- a/addons/api/src/test/java/com/anysoftkeyboard/api/KeyCodesTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-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;
-
-@RunWith(RobolectricTestRunner.class)
-public class KeyCodesTest {
-
- @Test
- public void testVerifyKeyCodesHasUniques() throws Exception {
- HashSet<Integer> seenValues = new HashSet<>();
-
- for (Field field : KeyCodes.class.getFields()) {
- 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
- testVerifyKeyCodesResourcesHasUniques(seenValues);
- }
-
- 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 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());
- }
-
- @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, int.class, field.getType());
- }
- }
-} \ No newline at end of file
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/BinaryDictionaryResourceNormalizer.java b/addons/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java
deleted file mode 100644
index cddd9123d..000000000
--- a/addons/buildSrc/src/main/java/BinaryDictionaryResourceNormalizer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2016 AnySoftKeyboard
- *
- * 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.
- */
-
-import java.io.*;
-
-/**
- * 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;
- private final File outputFolder;
- private final File dict_id_array;
- private final String mPrefix;
-
- 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;
- mPrefix = prefix;
- }
-
- public void writeDictionaryIdsResource() throws IOException {
- splitOutputFile(tempOutputFile, outputFolder);
- }
-
-
- 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;
- byte[] buffer = new byte[4 * 1024];
- OutputStream outputStream = null;
- int read = 0;
- XmlWriter xml = new XmlWriter(dict_id_array);
- xml.writeEntity("resources");
- 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) {
- outputStream.flush();
- outputStream.close();
- outputStream = null;
- }
-
- if (outputStream == null) {
- file_postfix++;
- 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");
- outputStream = new FileOutputStream(chunkFile);
- System.out.println("Writing to dict file " + chunkFile.getAbsolutePath());
- }
-
- outputStream.write(buffer, 0, read);
- current_output_file_size += read;
- }
-
- xml.endEntity();
- xml.endEntity();
- xml.close();
-
- inputStream.close();
- if (outputStream != null) {
- outputStream.flush();
- outputStream.close();
- }
- System.out.println("Done. Wrote " + file_postfix + " files.");
-
- return file_postfix;
- }
-} \ No newline at end of file
diff --git a/addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java b/addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java
deleted file mode 100644
index e3fda7c49..000000000
--- a/addons/buildSrc/src/main/java/GenerateWordsListFromAOSPTask.java
+++ /dev/null
@@ -1,107 +0,0 @@
-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;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.Charset;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.zip.GZIPInputStream;
-import java.util.zip.ZipInputStream;
-
-/**
- * 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 File inputFile;
- private File outputWordsListFile;
- private int maxWordsInList = 500000;
-
- @TaskAction
- public void generateWordsList() throws IOException {
- if (inputFile == null) {
- throw new IllegalArgumentException("Please provide inputFile value.");
- }
- if (!inputFile.isFile()) throw new IllegalArgumentException("inputFile must be a file!");
- if (outputWordsListFile == null) {
- throw new IllegalArgumentException("Please provide outputWordsListFile value.");
- }
-
- final long inputSize = inputFile.length();
- System.out.println("Reading input file " + inputFile.getName() + " (size " + inputSize + ")...");
-
- InputStream fileInput = new FileInputStream(inputFile);
- if (inputFile.getName().endsWith(".zip")) {
- fileInput = new ZipInputStream(fileInput);
- } else if (inputFile.getName().endsWith(".gz")) {
- fileInput = new GZIPInputStream(fileInput);
- }
- BufferedReader reader = new BufferedReader(new InputStreamReader(fileInput, Charset.forName("UTF-8")));
- String wordDataLine;
-
- try (WordListWriter wordListWriter = new WordListWriter(outputWordsListFile)) {
- long read = 0;
- long wordsWritten = 0;
- while (null != (wordDataLine = reader.readLine())) {
- read += wordDataLine.length();
- //word=heh,f=0,flags=,originalFreq=53,possibly_offensive=true
- Matcher matcher = mWordLineRegex.matcher(wordDataLine);
- if (matcher.matches()) {
- String word = matcher.group(1);
- int frequency = Integer.parseInt(matcher.group(2));
- wordListWriter.addEntry(word, frequency);
- if ((wordsWritten % 50000) == 0) {
- System.out.print("." + ((100 * read) / inputSize) + "%.");
- }
- wordsWritten++;
- if (maxWordsInList == wordsWritten) {
- System.out.println("!!!!");
- System.out.println("Reached " + maxWordsInList + " words! Breaking parsing.");
- break;
- }
- }
- }
- System.out.print(".100%.");
- }
-
-
- System.out.println("Done.");
- }
-
- @InputFile
- public File getInputFile() {
- return inputFile;
- }
-
- public void setInputFile(File inputFile) {
- this.inputFile = inputFile;
- }
-
- @OutputFile
- public File getOutputWordsListFile() {
- return outputWordsListFile;
- }
-
- public void setOutputWordsListFile(File outputWordsListFile) {
- this.outputWordsListFile = outputWordsListFile;
- }
-
- @Input
- public int getMaxWordsInList() {
- return maxWordsInList;
- }
-
- public void setMaxWordsInList(int maxWordsInList) {
- this.maxWordsInList = maxWordsInList;
- }
-}
diff --git a/addons/buildSrc/src/main/java/GenerateWordsListTask.java b/addons/buildSrc/src/main/java/GenerateWordsListTask.java
deleted file mode 100644
index 06773e9e3..000000000
--- a/addons/buildSrc/src/main/java/GenerateWordsListTask.java
+++ /dev/null
@@ -1,119 +0,0 @@
-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;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Task to generate words-list XML file from a input
- */
-public class GenerateWordsListTask extends DefaultTask {
- @TaskAction
- public void generateWordsList() throws Exception {
- final List<File> inputTextFiles = new ArrayList<>();
- for (File it : inputFiles) {
- if (it.getName().endsWith(".html") || it.getName().endsWith(".htm")) {
- 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.write(inputText);
- writer.flush();
- writer.close();
- inputTextFiles.add(wordsInputFile);
- } 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.");
- }
- }
-
- final File parentFile = outputWordsListFile.getParentFile();
- if (!parentFile.exists() && !parentFile.mkdirs()) {
- throw new IllegalArgumentException("Failed to create output folder " + parentFile.getAbsolutePath());
- }
- Parser parser = new Parser(inputTextFiles, outputWordsListFile, wordCharacters, locale, additionalInnerCharacters, maxWordsInList, maxWordFrequency);
- parser.parse();
- }
-
- @InputFiles
- public File[] getInputFiles() {
- return inputFiles;
- }
-
- public void setInputFiles(File[] inputFiles) {
- this.inputFiles = inputFiles;
- }
-
- @OutputFile
- public File getOutputWordsListFile() {
- return outputWordsListFile;
- }
-
- public void setOutputWordsListFile(File outputWordsListFile) {
- this.outputWordsListFile = outputWordsListFile;
- }
-
- @Input
- public char[] getWordCharacters() {
- return wordCharacters;
- }
-
- public void setWordCharacters(char[] wordCharacters) {
- this.wordCharacters = wordCharacters;
- }
-
- @Input
- public char[] getAdditionalInnerCharacters() {
- return additionalInnerCharacters;
- }
-
- public void setAdditionalInnerCharacters(char[] additionalInnerCharacters) {
- this.additionalInnerCharacters = additionalInnerCharacters;
- }
-
- @Input
- public Locale getLocale() {
- return locale;
- }
-
- public void setLocale(Locale locale) {
- this.locale = locale;
- }
-
- @Input
- public int getMaxWordFrequency() {
- return maxWordFrequency;
- }
-
- public void setMaxWordFrequency(int frequency) {
- maxWordFrequency = frequency;
- }
-
- @Input
- public int getMaxWordsInList() {
- return maxWordsInList;
- }
-
- public void setMaxWordsInList(int maxWordsInList) {
- this.maxWordsInList = maxWordsInList;
- }
-
- private File[] inputFiles;
- private File outputWordsListFile;
- private char[] wordCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray();
- private char[] additionalInnerCharacters = "'".toCharArray();
- private Locale locale = Locale.US;
- private int maxWordsInList = Integer.MAX_VALUE;
- private int maxWordFrequency = 64;
-}
diff --git a/addons/buildSrc/src/main/java/MainClass.java b/addons/buildSrc/src/main/java/MainClass.java
deleted file mode 100644
index 8a1103cf5..000000000
--- a/addons/buildSrc/src/main/java/MainClass.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2015 AnySoftKeyboard
- *
- * 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.
- */
-
-import org.xml.sax.SAXException;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-public class MainClass {
-
- 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.exit(1);
- }
-
- final File inputFile = new File(args[0]);
- final File resourcesFolder = new File(args[1]);
-
- buildDictionary(inputFile, resourcesFolder, args[2]);
- }
-
- 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);
- }
- final File tempOutputFile = File.createTempFile("make_dictionary_temp", "bin");
-
- if (!resourcesFolder.isDirectory() || !resourcesFolder.exists()) {
- throw new IllegalArgumentException("Could not find resource folder " + resourcesFolder);
- }
-
- final File outputFolder = new File(resourcesFolder, "raw/");
- 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("Deleting previous versions...");
-
- //deleting current files
- tempOutputFile.delete();
- File[] dictFiles = outputFolder.listFiles((dir, name) -> name.endsWith(".dict"));
- if (dictFiles != null && dictFiles.length > 0) {
- for (File file : dictFiles) {
- file.delete();
- }
- }
- dict_id_array.delete();
-
- MakeBinaryDictionary maker = new MakeBinaryDictionary(inputFile.getAbsolutePath(), tempOutputFile.getAbsolutePath());
- maker.makeDictionary();
-
- if (!tempOutputFile.exists()) {
- throw new IOException("Failed to create binary dictionary file.");
- }
-
- if (tempOutputFile.length() <= 0) {
- 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);
- normalizer.writeDictionaryIdsResource();
-
- System.out.println("Done.");
- }
-}
diff --git a/addons/buildSrc/src/main/java/MakeBinaryDictionary.java b/addons/buildSrc/src/main/java/MakeBinaryDictionary.java
deleted file mode 100644
index 9c414609b..000000000
--- a/addons/buildSrc/src/main/java/MakeBinaryDictionary.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- * Copyright (C) 2016 AnySoftKeyboard
- *
- * 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.
- */
-
-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;
-
-/**
- * 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";
- private static final String ATTR_FREQ = "f";
- private static final CharNode EMPTY_NODE = new CharNode();
- private static final int CHAR_WIDTH = 8;
- private static final int FLAGS_WIDTH = 1; // Terminal flag (word end)
- private static final int ADDR_WIDTH = 23; // Offset to children
- private static final int FREQ_WIDTH_BYTES = 1;
- private static final int COUNT_WIDTH_BYTES = 1;
- private static final int FLAG_ADDRESS_MASK = 0x400000;
- private static final int FLAG_TERMINAL_MASK = 0x800000;
- private static final int ADDRESS_MASK = 0x3FFFFF;
- private final String srcFilename;
- private final String destFilename;
- private List<CharNode> roots;
- private Map<String, Integer> mDictionary;
- private int mWordCount;
- private byte[] dict;
- private int dictSize;
- private int nullChildrenCount = 0;
- private int notTerminalCount = 0;
-
- public MakeBinaryDictionary(String srcFilename, String destFilename) {
- this.srcFilename = srcFilename;
- this.destFilename = destFilename;
- }
-
- public void makeDictionary() throws ParserConfigurationException, SAXException, IOException {
- populateDictionary(srcFilename);
- writeToDict(destFilename);
- }
-
- 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);
-
- @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 endElement(String uri, String localName,
- String qName) {
- if (qName.equals(TAG_WORD)) {
- if (wordBuilder.length() > 1) {
- addWordTop(wordBuilder.toString(), freq);
- mWordCount++;
- }
- inWord = false;
- }
- }
- });
-
- System.out.println("Nodes = " + CharNode.sNodes);
- }
-
- private int indexOf(List<CharNode> children, char c) {
- if (children == null) {
- return -1;
- }
- for (int i = 0; i < children.size(); i++) {
- if (children.get(i).data == c) {
- return i;
- }
- }
- return -1;
- }
-
- private void addWordTop(String word, int occur) {
- if (occur > 255) occur = 255;
- char firstChar = word.charAt(0);
- int index = indexOf(roots, firstChar);
- if (index == -1) {
- CharNode newNode = new CharNode();
- newNode.data = firstChar;
- newNode.freq = occur;
- index = roots.size();
- roots.add(newNode);
- } else {
- roots.get(index).freq += occur;
- }
- if (word.length() > 1) {
- addWordRec(roots.get(index), word, 1, occur);
- } else {
- roots.get(index).terminal = true;
- }
- }
-
- private void addWordRec(CharNode parent, String word, int charAt, int occur) {
- CharNode child = null;
- char data = word.charAt(charAt);
- if (parent.children == null) {
- parent.children = new ArrayList<>();
- } else {
- for (int i = 0; i < parent.children.size(); i++) {
- CharNode node = parent.children.get(i);
- if (node.data == data) {
- child = node;
- break;
- }
- }
- }
- if (child == null) {
- child = new CharNode();
- parent.children.add(child);
- }
- child.data = data;
- if (child.freq == 0) child.freq = occur;
- if (word.length() > charAt + 1) {
- addWordRec(child, word, charAt + 1, occur);
- } else {
- child.terminal = true;
- child.freq = occur;
- }
- }
-
- private void addCount(int count) {
- dict[dictSize++] = (byte) (0xFF & count);
- }
-
- private void addNode(CharNode node) {
- int charData = 0xFFFF & node.data;
- if (charData > 254) {
- dict[dictSize++] = (byte) 255;
- dict[dictSize++] = (byte) ((node.data >> 8) & 0xFF);
- dict[dictSize++] = (byte) (node.data & 0xFF);
- } else {
- dict[dictSize++] = (byte) (0xFF & node.data);
- }
- if (node.children != null) {
- dictSize += 3; // Space for children address
- } else {
- dictSize += 1; // Space for just the terminal/address flags
- }
- if ((0xFFFFFF & node.freq) > 255) {
- node.freq = 255;
- }
- if (node.terminal) {
- byte freq = (byte) (0xFF & node.freq);
- dict[dictSize++] = freq;
- }
- }
-
- private void updateNodeAddress(int nodeAddress, CharNode node,
- int childrenAddress) {
- if ((dict[nodeAddress] & 0xFF) == 0xFF) { // 3 byte character
- nodeAddress += 2;
- }
- childrenAddress = ADDRESS_MASK & childrenAddress;
- if (childrenAddress == 0) {
- nullChildrenCount++;
- } else {
- childrenAddress |= FLAG_ADDRESS_MASK;
- }
- if (node.terminal) {
- childrenAddress |= FLAG_TERMINAL_MASK;
- } else {
- notTerminalCount++;
- }
- dict[nodeAddress + 1] = (byte) (childrenAddress >> 16);
- if ((childrenAddress & FLAG_ADDRESS_MASK) != 0) {
- dict[nodeAddress + 2] = (byte) ((childrenAddress & 0xFF00) >> 8);
- dict[nodeAddress + 3] = (byte) ((childrenAddress & 0xFF));
- }
- }
-
- void writeWordsRec(List<CharNode> children) {
- if (children == null || children.size() == 0) {
- return;
- }
- final int childCount = children.size();
- addCount(childCount);
- //int childrenStart = dictSize;
- int[] childrenAddresses = new int[childCount];
- for (int j = 0; j < childCount; j++) {
- CharNode node = children.get(j);
- childrenAddresses[j] = dictSize;
- addNode(node);
- }
- for (int j = 0; j < childCount; j++) {
- CharNode node = children.get(j);
- int nodeAddress = childrenAddresses[j];
- int cacheDictSize = dictSize;
- writeWordsRec(node.children);
- updateNodeAddress(nodeAddress, node, node.children != null
- ? cacheDictSize : 0);
- }
- }
-
- private void writeToDict(String dictFilename) throws IOException {
- // 4MB max, 22-bit offsets
- dict = new byte[4 * 1024 * 1024];
- dictSize = 0;
- writeWordsRec(roots);
- System.out.println("Dict Size = " + dictSize);
- try (FileOutputStream fos = new FileOutputStream(dictFilename)) {
- fos.write(dict, 0, dictSize);
- }
- }
-
- private static class CharNode {
- static int sNodes;
- char data;
- int freq;
- boolean terminal;
- List<CharNode> children;
-
- CharNode() {
- sNodes++;
- }
- }
-} \ 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/buildSrc/src/main/java/MakeDictionaryTask.java b/addons/buildSrc/src/main/java/MakeDictionaryTask.java
deleted file mode 100644
index de08486e5..000000000
--- a/addons/buildSrc/src/main/java/MakeDictionaryTask.java
+++ /dev/null
@@ -1,61 +0,0 @@
-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
- */
-public class MakeDictionaryTask extends DefaultTask {
-
- public MakeDictionaryTask() {
- setGroup("AnySoftKeyboard");
- setDescription("Creating AnySoftKeyboard binary dictionary");
- }
-
- @TaskAction
- public void makeDictionary() throws Exception {
- 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());
- }
-
- MainClass.buildDictionary(getInputWordsListFile(), getResourcesFolder(), getPrefix());
- }
-
- @InputFile
- public File getInputWordsListFile() {
- return inputWordsListFile;
- }
-
- public void setInputWordsListFile(File inputWordsListFile) {
- this.inputWordsListFile = inputWordsListFile;
- }
-
- @OutputDirectory
- public File getResourcesFolder() {
- return resourcesFolder;
- }
-
- public void setResourcesFolder(File resourcesFolder) {
- this.resourcesFolder = resourcesFolder;
- }
-
- @Input
- public String getPrefix() {
- return prefix;
- }
-
- public void setPrefix(String prefix) {
- this.prefix = prefix;
- }
-
- private File inputWordsListFile;
- private File resourcesFolder;
- private String prefix;
-}
diff --git a/addons/buildSrc/src/main/java/MergeWordsListTask.java b/addons/buildSrc/src/main/java/MergeWordsListTask.java
deleted file mode 100644
index b5d2b65ab..000000000
--- a/addons/buildSrc/src/main/java/MergeWordsListTask.java
+++ /dev/null
@@ -1,190 +0,0 @@
-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;
-import java.io.IOException;
-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;
-
-/**
- * Task to merge several word-list files into one
- */
-public class MergeWordsListTask extends DefaultTask {
- @TaskAction
- public void mergeWordsLists() throws IOException, ParserConfigurationException, SAXException {
- if (inputWordsListFiles == null || inputWordsListFiles.length == 0) {
- throw new IllegalArgumentException("Must specify at least one inputWordsListFiles");
- }
- if (outputWordsListFile == null) {
- 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.");
- final HashMap<String, WordWithCount> allWords = new HashMap<>();
-
- for (File inputFile : inputWordsListFiles) {
- System.out.println("Reading " + inputFile.getName() + "...");
- 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"));
- 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
- if (wordsToDiscard.length > 0) {
- System.out.print("Discarding words...");
- 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()));
- System.out.println("Done.");
- }
- }
-
- @InputFiles
- public File[] getInputWordsListFiles() {
- return inputWordsListFiles;
- }
-
- public void setInputWordsListFiles(File[] inputWordsListFiles) {
- this.inputWordsListFiles = inputWordsListFiles;
- }
-
- @OutputFile
- public File getOutputWordsListFile() {
- return outputWordsListFile;
- }
-
- public void setOutputWordsListFile(File outputWordsListFile) {
- this.outputWordsListFile = outputWordsListFile;
- }
-
- @Input
- public String[] getWordsToDiscard() {
- return wordsToDiscard;
- }
-
- public void setWordsToDiscard(String[] wordsToDiscard) {
- this.wordsToDiscard = wordsToDiscard;
- }
-
- @Input
- public int getMaxWordsInList() {
- return maxWordsInList;
- }
-
- public void setMaxWordsInList(int maxWordsInList) {
- this.maxWordsInList = maxWordsInList;
- }
-
- private File[] inputWordsListFiles;
- private File outputWordsListFile;
- private String[] wordsToDiscard = new String[0];
- private int maxWordsInList = Integer.MAX_VALUE;
-
- private static class MySaxHandler extends DefaultHandler {
-
- private HashMap<String, WordWithCount> allWords;
- private boolean inWord;
- private StringBuilder word = new StringBuilder();
- private int freq;
-
- public MySaxHandler(HashMap<String, WordWithCount> allWords) {
- this.allWords = allWords;
- }
-
- @Override
- 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;
- freq = Integer.parseInt(attributes.getValue("f"));
- word.setLength(0);
- } else {
- inWord = false;
- }
-
- }
-
- @Override
- public void characters(char[] ch, int start, int length) throws SAXException {
- super.characters(ch, start, length);
- if (inWord) {
- word.append(ch, start, length);
- }
-
- }
-
- @Override
- public void skippedEntity(String name) throws SAXException {
- System.out.print("Skipped " + name);
- super.skippedEntity(name);
- }
-
- @Override
- public void warning(SAXParseException e) throws SAXException {
- System.out.print("Warning! " + e);
- super.warning(e);
- }
-
- @Override
- public void error(SAXParseException e) throws SAXException {
- System.out.print("Error! " + e);
- super.error(e);
- }
-
- @Override
- public void fatalError(SAXParseException e) throws SAXException {
- System.out.print("Fatal-Error! " + e);
- super.fatalError(e);
- }
-
- @Override
- public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) throws SAXException {
- System.out.print("unparsedEntityDecl! " + name);
- super.unparsedEntityDecl(name, publicId, systemId, notationName);
- }
-
- @Override
- public void endElement(String uri, String localName, String qName) throws SAXException {
- super.endElement(uri, localName, qName);
- if (qName.equals("w") && inWord) {
- WordWithCount wordWithCount = new WordWithCount(word.toString(), freq);
- if (allWords.containsKey(wordWithCount.getKey())) {
- allWords.get(wordWithCount.getKey()).addOtherWord(wordWithCount);
- } else {
- allWords.put(wordWithCount.getKey(), wordWithCount);
- }
-
- }
-
- inWord = false;
- }
- }
-}
diff --git a/addons/buildSrc/src/main/java/Parser.java b/addons/buildSrc/src/main/java/Parser.java
deleted file mode 100644
index d1c2c10bc..000000000
--- a/addons/buildSrc/src/main/java/Parser.java
+++ /dev/null
@@ -1,158 +0,0 @@
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-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 final List<File> mInputFiles;
- private final File mOutputFile;
- private final HashSet<Character> mLangChars;
- private final HashSet<Character> mLangInnerChars;
- private final HashMap<String, WordWithCount> mWords;
- private final int mMaxListSize;
- 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 {
- if (inputFiles.size() == 0) {
- throw new IllegalArgumentException("Files list should be at least 1 size.");
- }
- for (File inputFile : inputFiles) {
- if (!inputFile.exists()) {
- throw new IOException("Could not file input file " + inputFile);
- }
- if (!inputFile.isFile()) throw new IOException("Input must be a file.");
- }
- if (maxFrequency > 255) {
- throw new IllegalArgumentException("max-word-frequency can not be more than 255");
- }
- mMaxWordFrequency = maxFrequency;
- mOutputFile = outputFile;
- mInputFiles = Collections.unmodifiableList(inputFiles);
- mLocale = locale;
- mMaxListSize = maxListSize;
-
- mLangInnerChars = new HashSet<>(additionalInnerWordCharacters.length + wordCharacters.length);
- mLangChars = new HashSet<>(wordCharacters.length);
- for (char c : wordCharacters) {
- mLangChars.add(c);
- mLangInnerChars.add(c);
- }
-
- for (char c : additionalInnerWordCharacters) {
- mLangInnerChars.add(c);
- }
-
- 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));
- }
-
- public void parse() throws IOException {
- for (File inputFile : mInputFiles) {
- System.out.println(String.format(Locale.US, "Reading input file %s...", inputFile));
- InputStreamReader inputStream = new FileReader(inputFile);
- addWordsFromInputStream(inputFile.length(), inputStream);
- inputStream.close();
- System.out.println(String.format(Locale.US, "Have %d words so far.", mWords.size()));
- }
-
- System.out.println("Sorting list...");
- List<WordWithCount> sortedList = new ArrayList<>(mWords.values());
- Collections.sort(sortedList);
-
- if (mMaxListSize < sortedList.size()) {
- System.out.println("Removing over-the-limit words...");
- 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());
-
- System.out.println("Creating output XML file...");
-
- try (WordListWriter wordListWriter = new WordListWriter(mOutputFile)) {
- sortedList.forEach(word -> WordListWriter.writeWordWithRuntimeException(wordListWriter, word.getWord(), word.getFreq()));
- System.out.println("Done.");
- }
- }
-
- private void addWordsFromInputStream(final long inputSize, InputStreamReader input) throws IOException {
- StringBuilder word = new StringBuilder();
- int intChar;
-
- int state = LOOKING_FOR_WORD_START;
- long read = 0;
- while ((intChar = input.read()) > 0) {
- if ((read % 50000) == 0 || read == inputSize) {
- System.out.print("." + ((100 * read) / inputSize) + "%.");
- }
- char currentChar = fixup(intChar);
- read++;
- switch (state) {
- case LOOKING_FOR_WORD_START:
- if (mLangChars.contains(currentChar)) {
- word.append(currentChar);
- state = LOOKING_FOR_WORD_END;
- }
- break;
- case LOOKING_FOR_WORD_END:
- if (mLangInnerChars.contains(currentChar)) {
- word.append(currentChar);
- } else {
- addWord(word);
- word.setLength(0);
- state = LOOKING_FOR_WORD_START;
- }
- }
- }
- //last word?
- if (word.length() > 0) {
- addWord(word);
- }
- System.out.println("Done.");
- }
-
- private char fixup(int intChar) {
- switch (intChar) {
- case '’':
- return '\'';
- case '”':
- case '“':
- return '\"';
- default:
- return (char) intChar;
- }
- }
-
- private void addWord(StringBuilder word) {
- //removing all none chars from the end.
- String typedWord = word.toString();
- String wordKey = typedWord.toLowerCase(mLocale);
- if (mWords.containsKey(wordKey)) {
- mWords.get(wordKey).addFreq(typedWord);
- } else {
- mWords.put(wordKey, new WordWithCount(typedWord));
- }
- }
-
-}
diff --git a/addons/buildSrc/src/main/java/WordListWriter.java b/addons/buildSrc/src/main/java/WordListWriter.java
deleted file mode 100644
index 1d3277f2e..000000000
--- a/addons/buildSrc/src/main/java/WordListWriter.java
+++ /dev/null
@@ -1,51 +0,0 @@
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.nio.charset.Charset;
-
-class WordListWriter implements Closeable {
-
- private final XmlWriter mXmlWriter;
- private long mWordsWritten;
-
- 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());
- }
- 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) {
- try {
- writer.addEntry(word, frequency);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- public void addEntry(String word, int frequency) throws IOException {
- mXmlWriter
- .writeEntity("w")
- .writeAttribute("f", Integer.toString(frequency))
- .writeText(word)
- .endEntity();
- mWordsWritten++;
- }
-
- @Override
- public void close() throws IOException {
- mXmlWriter.endEntity();
- System.out.println("Wrote " + mWordsWritten + " words.");
- mXmlWriter.close();
- }
-
- 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/addons/buildSrc/src/main/java/WordWithCount.java
deleted file mode 100644
index 4b67e3b5c..000000000
--- a/addons/buildSrc/src/main/java/WordWithCount.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2016 AnySoftKeyboard
- *
- * 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.
- */
-
-import java.util.HashMap;
-import java.util.Map;
-
-class WordWithCount implements Comparable<WordWithCount> {
- private final String mKey;
- private final Map<String, Integer> mWordVariants = new HashMap<>();
- private int mFreq;
-
- public WordWithCount(String word) {
- mKey = word.toLowerCase();
- mWordVariants.put(word, 1);
- mFreq = 0;
- }
-
- public WordWithCount(String word, int frequency) {
- mKey = word.toLowerCase();
- mWordVariants.put(word, 1);
- mFreq = frequency;
- }
-
- public String getKey() {
- return mKey;
- }
-
- public String getWord() {
- String mostUsedWord = mKey;
- int mostUsedValue = Integer.MIN_VALUE;
- for (Map.Entry<String, Integer> variant : mWordVariants.entrySet()) {
- if (variant.getValue() > mostUsedValue) {
- mostUsedValue = variant.getValue();
- mostUsedWord = variant.getKey();
- }
- }
-
- return mostUsedWord;
- }
-
- public int getFreq() {
- return mFreq;
- }
-
- public void addFreq(String word) {
- if (mFreq < Integer.MAX_VALUE) mFreq++;
- 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());
- }
- }
-
- @Override
- public int compareTo(WordWithCount o) {
- return o.mFreq - mFreq;
- }
-}
diff --git a/addons/buildSrc/src/main/java/XmlWriter.java b/addons/buildSrc/src/main/java/XmlWriter.java
deleted file mode 100644
index 1578b80c8..000000000
--- a/addons/buildSrc/src/main/java/XmlWriter.java
+++ /dev/null
@@ -1,333 +0,0 @@
-
-/*
- * Copyright (c) 2003, Henri Yandell
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the
- * following conditions are met:
- *
- * + Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * + Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * + Neither the name of XmlWriter nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Copyright (c) 2003, Henri Yandell
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the
- * following conditions are met:
- *
- * + Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * + Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * + Neither the name of XmlWriter nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Copyright (c) 2010, Menny Even Danan
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the
- * following conditions are met:
- *
- * + Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * + Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * + Neither the name of XmlWriter nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InvalidObjectException;
-import java.io.Writer;
-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>
- * @version 0.2
- */
-class XmlWriter {
-
- private static final String INDENT_STRING = " ";
- 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
- private final StringBuffer attrs; // current attribute string
- private boolean empty; // is the current node empty
- private boolean justWroteText;
- private boolean closed; // is the current node closed...
-
- /**
- * Create an XmlWriter on top of an existing java.io.Writer.
- *
- * @throws IOException
- */
- XmlWriter(Writer writer, boolean takeOwnership, int indentingOffset, boolean addXmlPrefix)
- throws IOException {
- thisIsWriterOwner = takeOwnership;
- this.indentingOffset = indentingOffset;
- this.writer = writer;
- this.closed = true;
- this.stack = new Stack<>();
- this.attrs = new StringBuffer();
- if (addXmlPrefix)
- this.writer.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
- }
-
- XmlWriter(File outputFile) throws IOException {
- this(new FileWriter(outputFile), true, 0, true);
- }
-
- /**
- * Begin to output an entity.
- *
- * @param name name of entity.
- */
- XmlWriter writeEntity(String name) throws IOException {
- closeOpeningTag(true);
- this.closed = false;
- for (int tabIndex = 0; tabIndex < stack.size() + indentingOffset; tabIndex++)
- this.writer.write(INDENT_STRING);
- this.writer.write("<");
- this.writer.write(name);
- stack.add(name);
- this.empty = true;
- this.justWroteText = false;
- return this;
- }
-
- // close off the opening tag
- private void closeOpeningTag(final boolean newLine) throws IOException {
- if (!this.closed) {
- writeAttributes();
- this.closed = true;
- this.writer.write(">");
- if (newLine)
- this.writer.write("\n");
- }
- }
-
- // write out all current attributes
- private void writeAttributes() throws IOException {
- this.writer.write(this.attrs.toString());
- this.attrs.setLength(0);
- this.empty = false;
- }
-
- /**
- * 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.
- */
- public XmlWriter writeAttribute(String attr, String value) {
- this.attrs.append(" ");
- this.attrs.append(attr);
- this.attrs.append("=\"");
- this.attrs.append(escapeXml(value));
- this.attrs.append("\"");
- return this;
- }
-
- /**
- * End the current entity. This will throw an exception if it is called when
- * there is not a currently open entity.
- *
- * @throws IOException
- */
- public XmlWriter endEntity() throws IOException {
- if (this.stack.empty()) {
- throw new InvalidObjectException("Called endEntity too many times. ");
- }
- String name = this.stack.pop();
- if (name != null) {
- if (this.empty) {
- writeAttributes();
- this.writer.write("/>\n");
- } else {
- if (!this.justWroteText)
- {
- for (int tabIndex = 0; tabIndex < stack.size() + indentingOffset; tabIndex++)
- this.writer.write(INDENT_STRING);
- }
- this.writer.write("</");
- this.writer.write(name);
- this.writer.write(">\n");
- }
- this.empty = false;
- this.closed = true;
- this.justWroteText = false;
- }
- return this;
- }
-
- /**
- * 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. ");
- }
- if (thisIsWriterOwner)
- {
- this.writer.flush();
- this.writer.close();
- }
- }
-
- /**
- * Output body text. Any xml characters are escaped.
- */
- public XmlWriter writeText(String text) throws IOException {
- closeOpeningTag(false);
- this.empty = false;
- this.justWroteText = true;
- this.writer.write(escapeXml(text));
- return this;
- }
-
- // Static functions lifted from generationjava helper classes
- // to make the jar smaller.
-
- // from XmlW
- static public String escapeXml(String str) {
- str = replaceString(str, "&", "&amp;");
- str = replaceString(str, "<", "&lt;");
- str = replaceString(str, ">", "&gt;");
- str = replaceString(str, "\"", "&quot;");
- str = replaceString(str, "'", "&apos;");
- return str;
- }
-
- // from StringW
- static public 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.
- *
- * @param text String to do search and replace in
- * @param repl String to search for
- * @param with String to replace with
- * @param max int values to replace
- * @return String with n values replacEd
- */
- static String replaceString(String text, String repl, String with, int max) {
- if (text == null) {
- return null;
- }
-
- StringBuffer buffer = new StringBuffer(text.length());
- int start = 0;
- int end = 0;
- while ((end = text.indexOf(repl, start)) != -1) {
- buffer.append(text.substring(start, end)).append(with);
- start = end + repl.length();
-
- if (--max == 0) {
- break;
- }
- }
- buffer.append(text.substring(start));
-
- return buffer.toString();
- }
- //
- // static public void test1() throws WritingException {
- // Writer writer = new java.io.StringWriter();
- // XmlWriter xmlwriter = new XmlWriter(writer);
- // xmlwriter.writeEntity("person").writeAttribute("name",
- // "fred").writeAttribute("age",
- // "12").writeEntity("phone").writeText("4254343").endEntity().writeEntity("bob").endEntity().endEntity();
- // xmlwriter.close();
- // System.err.println(writer.toString());
- // }
- // static public void test2() throws WritingException {
- // Writer writer = new java.io.StringWriter();
- // XmlWriter xmlwriter = new XmlWriter(writer);
- // xmlwriter.writeEntity("person");
- // xmlwriter.writeAttribute("name", "fred");
- // xmlwriter.writeAttribute("age", "12");
- // xmlwriter.writeEntity("phone");
- // xmlwriter.writeText("4254343");
- // xmlwriter.endEntity();
- // xmlwriter.writeEntity("bob");
- // xmlwriter.endEntity();
- // xmlwriter.endEntity();
- // xmlwriter.close();
- // System.err.println(writer.toString());
- // }
-
-}
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 {}