diff --git a/MANIFEST.in b/MANIFEST.in
index a0e59ec8..9d3a7a36 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -822,6 +822,14 @@ include tests/triple-t-2/build/org.piwigo.android/app/src/main/play/release-note
include tests/triple-t-2/build/org.piwigo.android/build.gradle
include tests/triple-t-2/build/org.piwigo.android/settings.gradle
include tests/triple-t-2/metadata/org.piwigo.android.yml
+include tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
+include tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/ime/app/src/main/play/listings/en-US/title.txt
+include tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/settings.gradle
+include tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
+include tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/ime/app/src/main/play/listings/en-US/title.txt
+include tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/settings.gradle
+include tests/triple-t-anysoftkeyboard/metadata/com.anysoftkeyboard.languagepack.dutch.yml
+include tests/triple-t-anysoftkeyboard/metadata/com.menny.android.anysoftkeyboard.yml
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.verifier/settings.gradle
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.verifier/verifier/src/main/play/listings/en-US/title.txt
include tests/triple-t-multiple/build/ch.admin.bag.covidcertificate.verifier/wallet/src/main/play/listings/en-US/title.txt
diff --git a/tests/triple-t-anysoftkeyboard/.gitignore b/tests/triple-t-anysoftkeyboard/.gitignore
new file mode 100644
index 00000000..0aba28e9
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/.gitignore
@@ -0,0 +1 @@
+!build/
diff --git a/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt b/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
new file mode 100644
index 00000000..6e75c228
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
@@ -0,0 +1 @@
+Dutch for AnySoftKeyboard
diff --git a/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/ime/app/src/main/play/listings/en-US/title.txt b/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/ime/app/src/main/play/listings/en-US/title.txt
new file mode 100644
index 00000000..7c5eeaeb
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/ime/app/src/main/play/listings/en-US/title.txt
@@ -0,0 +1 @@
+AnySoftKeyboard
diff --git a/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/settings.gradle b/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/settings.gradle
new file mode 100644
index 00000000..523aadb7
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/build/com.anysoftkeyboard.languagepack.dutch/settings.gradle
@@ -0,0 +1,77 @@
+rootProject.name = 'AnySoftKeyboard'
+include ':deployment'
+
+include ':api'
+
+include ':addons:base'
+include ':addons:languages'
+include ':addons:languages:english', ':addons:languages:english:pack'
+
+//list of packs should be alphabetized-ordered
+include ':addons:languages:afrikaans_oss:pack', ':addons:languages:afrikaans_oss:apk'
+include ':addons:languages:armenian2:pack', ':addons:languages:armenian2:apk'
+include ":addons:languages:belarusian:pack", ":addons:languages:belarusian:apk"
+include ':addons:languages:brazilian:pack', ':addons:languages:brazilian:apk'
+include ':addons:languages:catalan:pack', ':addons:languages:catalan:apk'
+include ':addons:languages:coptic:pack', ':addons:languages:coptic:apk'
+include ':addons:languages:czech:pack', ':addons:languages:czech:apk'
+include ':addons:languages:english:pack', ':addons:languages:english:apk'
+include ':addons:languages:esperanto:pack', ':addons:languages:esperanto:apk'
+include ':addons:languages:finnish:pack', ':addons:languages:finnish:apk'
+include ':addons:languages:french:pack', ':addons:languages:french:apk'
+include ':addons:languages:greek:pack', ':addons:languages:greek:apk'
+include ':addons:languages:hebrew:pack', ':addons:languages:hebrew:apk'
+include ':addons:languages:indonesian:pack', ':addons:languages:indonesian:apk'
+include ':addons:languages:italian:pack', ':addons:languages:italian:apk'
+include ':addons:languages:lithuanian:pack', ':addons:languages:lithuanian:apk'
+include ':addons:languages:nias:pack', ':addons:languages:nias:apk'
+include ':addons:languages:ossturkish:pack', ':addons:languages:ossturkish:apk'
+include ':addons:languages:persian:pack', ':addons:languages:persian:apk'
+include ':addons:languages:piedmontese:pack', ':addons:languages:piedmontese:apk'
+include ':addons:languages:romanian:pack', ':addons:languages:romanian:apk'
+include ':addons:languages:russian2:pack', ':addons:languages:russian2:apk'
+include ':addons:languages:sardinian:pack', ':addons:languages:sardinian:apk'
+include ':addons:languages:serbian:pack', ':addons:languages:serbian:apk'
+include ':addons:languages:spain:pack', ':addons:languages:spain:apk'
+include ':addons:languages:tamazight:pack', ':addons:languages:tamazight:apk'
+include ':addons:languages:arabic:pack', ':addons:languages:arabic:apk'
+include ':addons:languages:danish:pack', ':addons:languages:danish:apk'
+include ':addons:languages:basque:pack', ':addons:languages:basque:apk'
+include ':addons:languages:bulgarian:pack', ':addons:languages:bulgarian:apk'
+include ':addons:languages:german:pack', ':addons:languages:german:apk'
+include ':addons:languages:croatian:pack', ':addons:languages:croatian:apk'
+include ':addons:languages:georgian:pack', ':addons:languages:georgian:apk'
+include ':addons:languages:latvian:pack', ':addons:languages:latvian:apk'
+include ':addons:languages:kurdish:pack', ':addons:languages:kurdish:apk'
+include ':addons:languages:hungarian:pack', ':addons:languages:hungarian:apk'
+include ':addons:languages:kachin:pack', ':addons:languages:kachin:apk'
+include ':addons:languages:dutch:pack', ':addons:languages:dutch:apk'
+include ':addons:languages:luxembourgish:pack', ':addons:languages:luxembourgish:apk'
+include ':addons:languages:norwegian:pack', ':addons:languages:norwegian:apk'
+include ':addons:languages:polish:pack', ':addons:languages:polish:apk'
+include ':addons:languages:rusyn:pack', ':addons:languages:rusyn:apk'
+include ':addons:languages:sinhala:pack', ':addons:languages:sinhala:apk'
+include ':addons:languages:hindi:pack', ':addons:languages:hindi:apk'
+include ':addons:languages:thai:pack', ':addons:languages:thai:apk'
+include ':addons:languages:portuguese:pack', ':addons:languages:portuguese:apk'
+
+//list of themes should be alphabetized-ordered
+include ':addons:themes'
+include ':addons:themes:classic_pc:pack', ':addons:themes:classic_pc:apk'
+include ':addons:themes:ics:pack', ':addons:themes:ics:apk'
+include ':addons:themes:israel64:pack', ':addons:themes:israel64:apk'
+include ':addons:themes:three_d:pack', ':addons:themes:three_d:apk'
+
+//list of quick-text should be alphabetized-ordered
+include ':addons:quicktexts'
+include ':addons:quicktexts:bbcodes:pack', ':addons:quicktexts:bbcodes:apk'
+
+include ':ime'
+include ':ime:base', ':ime:base-rx', ':ime:base-test', ':ime:prefs'
+include ':ime:remote', ':ime:fileprovider'
+include ':ime:addons'
+include ':ime:dictionaries', ':ime:dictionaries:jnidictionaryv1', ':ime:dictionaries:jnidictionaryv2', ':ime:nextword'
+include ':ime:pixel', ':ime:overlay'
+include 'ime:voiceime'
+include ':ime:app'
+
diff --git a/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt b/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
new file mode 100644
index 00000000..6e75c228
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/addons/languages/dutch/apk/src/main/play/listings/en-US/title.txt
@@ -0,0 +1 @@
+Dutch for AnySoftKeyboard
diff --git a/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/ime/app/src/main/play/listings/en-US/title.txt b/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/ime/app/src/main/play/listings/en-US/title.txt
new file mode 100644
index 00000000..7c5eeaeb
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/ime/app/src/main/play/listings/en-US/title.txt
@@ -0,0 +1 @@
+AnySoftKeyboard
diff --git a/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/settings.gradle b/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/settings.gradle
new file mode 100644
index 00000000..523aadb7
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/build/com.menny.android.anysoftkeyboard/settings.gradle
@@ -0,0 +1,77 @@
+rootProject.name = 'AnySoftKeyboard'
+include ':deployment'
+
+include ':api'
+
+include ':addons:base'
+include ':addons:languages'
+include ':addons:languages:english', ':addons:languages:english:pack'
+
+//list of packs should be alphabetized-ordered
+include ':addons:languages:afrikaans_oss:pack', ':addons:languages:afrikaans_oss:apk'
+include ':addons:languages:armenian2:pack', ':addons:languages:armenian2:apk'
+include ":addons:languages:belarusian:pack", ":addons:languages:belarusian:apk"
+include ':addons:languages:brazilian:pack', ':addons:languages:brazilian:apk'
+include ':addons:languages:catalan:pack', ':addons:languages:catalan:apk'
+include ':addons:languages:coptic:pack', ':addons:languages:coptic:apk'
+include ':addons:languages:czech:pack', ':addons:languages:czech:apk'
+include ':addons:languages:english:pack', ':addons:languages:english:apk'
+include ':addons:languages:esperanto:pack', ':addons:languages:esperanto:apk'
+include ':addons:languages:finnish:pack', ':addons:languages:finnish:apk'
+include ':addons:languages:french:pack', ':addons:languages:french:apk'
+include ':addons:languages:greek:pack', ':addons:languages:greek:apk'
+include ':addons:languages:hebrew:pack', ':addons:languages:hebrew:apk'
+include ':addons:languages:indonesian:pack', ':addons:languages:indonesian:apk'
+include ':addons:languages:italian:pack', ':addons:languages:italian:apk'
+include ':addons:languages:lithuanian:pack', ':addons:languages:lithuanian:apk'
+include ':addons:languages:nias:pack', ':addons:languages:nias:apk'
+include ':addons:languages:ossturkish:pack', ':addons:languages:ossturkish:apk'
+include ':addons:languages:persian:pack', ':addons:languages:persian:apk'
+include ':addons:languages:piedmontese:pack', ':addons:languages:piedmontese:apk'
+include ':addons:languages:romanian:pack', ':addons:languages:romanian:apk'
+include ':addons:languages:russian2:pack', ':addons:languages:russian2:apk'
+include ':addons:languages:sardinian:pack', ':addons:languages:sardinian:apk'
+include ':addons:languages:serbian:pack', ':addons:languages:serbian:apk'
+include ':addons:languages:spain:pack', ':addons:languages:spain:apk'
+include ':addons:languages:tamazight:pack', ':addons:languages:tamazight:apk'
+include ':addons:languages:arabic:pack', ':addons:languages:arabic:apk'
+include ':addons:languages:danish:pack', ':addons:languages:danish:apk'
+include ':addons:languages:basque:pack', ':addons:languages:basque:apk'
+include ':addons:languages:bulgarian:pack', ':addons:languages:bulgarian:apk'
+include ':addons:languages:german:pack', ':addons:languages:german:apk'
+include ':addons:languages:croatian:pack', ':addons:languages:croatian:apk'
+include ':addons:languages:georgian:pack', ':addons:languages:georgian:apk'
+include ':addons:languages:latvian:pack', ':addons:languages:latvian:apk'
+include ':addons:languages:kurdish:pack', ':addons:languages:kurdish:apk'
+include ':addons:languages:hungarian:pack', ':addons:languages:hungarian:apk'
+include ':addons:languages:kachin:pack', ':addons:languages:kachin:apk'
+include ':addons:languages:dutch:pack', ':addons:languages:dutch:apk'
+include ':addons:languages:luxembourgish:pack', ':addons:languages:luxembourgish:apk'
+include ':addons:languages:norwegian:pack', ':addons:languages:norwegian:apk'
+include ':addons:languages:polish:pack', ':addons:languages:polish:apk'
+include ':addons:languages:rusyn:pack', ':addons:languages:rusyn:apk'
+include ':addons:languages:sinhala:pack', ':addons:languages:sinhala:apk'
+include ':addons:languages:hindi:pack', ':addons:languages:hindi:apk'
+include ':addons:languages:thai:pack', ':addons:languages:thai:apk'
+include ':addons:languages:portuguese:pack', ':addons:languages:portuguese:apk'
+
+//list of themes should be alphabetized-ordered
+include ':addons:themes'
+include ':addons:themes:classic_pc:pack', ':addons:themes:classic_pc:apk'
+include ':addons:themes:ics:pack', ':addons:themes:ics:apk'
+include ':addons:themes:israel64:pack', ':addons:themes:israel64:apk'
+include ':addons:themes:three_d:pack', ':addons:themes:three_d:apk'
+
+//list of quick-text should be alphabetized-ordered
+include ':addons:quicktexts'
+include ':addons:quicktexts:bbcodes:pack', ':addons:quicktexts:bbcodes:apk'
+
+include ':ime'
+include ':ime:base', ':ime:base-rx', ':ime:base-test', ':ime:prefs'
+include ':ime:remote', ':ime:fileprovider'
+include ':ime:addons'
+include ':ime:dictionaries', ':ime:dictionaries:jnidictionaryv1', ':ime:dictionaries:jnidictionaryv2', ':ime:nextword'
+include ':ime:pixel', ':ime:overlay'
+include 'ime:voiceime'
+include ':ime:app'
+
diff --git a/tests/triple-t-anysoftkeyboard/metadata/com.anysoftkeyboard.languagepack.dutch.yml b/tests/triple-t-anysoftkeyboard/metadata/com.anysoftkeyboard.languagepack.dutch.yml
new file mode 100644
index 00000000..346f83c2
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/metadata/com.anysoftkeyboard.languagepack.dutch.yml
@@ -0,0 +1,76 @@
+Categories:
+ - Writing
+License: Apache-2.0
+SourceCode: https://github.com/AnySoftKeyboard/AnySoftKeyboard/
+IssueTracker: https://github.com/AnySoftKeyboard/AnySoftKeyboard/issues
+Donate: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=KDYBGNUNMMN94&lc=US&item_name=AnySoftKeyboard
+
+AutoName: AnySoftKeyboard - Dutch Language Pack
+Description: |-
+ This app has been deprecated in favor of https://f-droid.org/en/packages/com.anysoftkeyboard.languagepack.dutch_oss/
+
+ This is the Dutch language pack for AnySoftKeyboard. It offers an extensive
+ Dutch dictionary and optimised keyboard. In order to use it, first install
+ https://f-droid.org/packages/com.menny.android.anysoftkeyboard – a practical input method for Android
+ smartphones and tablets.
+
+ The dictionary is based on the word list from Stichting OpenTaal and has the
+ Quality Mark Spelling (Keurmerk Spelling) of the Dutch Language Union
+ (Taalunie). This language pack has been created by Stichting OpenTaal and can be
+ installed by all without any costs. The language-specific files in this language
+ pack have a dual license. Both the BSD 2-Clause License as the Creative Commons,
+ Attribution 4.0 (unported) apply.
+
+ Please, help us create free and open Dutch writing tools. Donate tax free to our
+ foundation at https://www.opentaal.org/vrienden-van-opentaal
+
+RepoType: git
+Repo: https://github.com/AnySoftKeyboard/AnySoftKeyboard.git
+
+Builds:
+ - versionName: '1.0'
+ versionCode: 1
+ disable: wait for upstream
+ commit: c5efd5986ce9beec299919f7ae9f174abd33b156
+ gradle:
+ - yes
+ forceversion: true
+ preassemble:
+ - :makeDictionary
+
+ - versionName: '1.4'
+ versionCode: 5
+ commit: dutch-1.4
+ gradle:
+ - yes
+ forceversion: true
+ preassemble:
+ - :makeDictionary
+
+ - versionName: 4.0.1396
+ versionCode: 2908
+ commit: 1.10-r4
+ subdir: addons/languages/dutch
+ sudo:
+ - apt-get update || apt-get update
+ - apt-get install -t stretch-backports openjdk-11-jdk-headless openjdk-11-jre-headless
+ - update-alternatives --auto java
+ gradle:
+ - yes
+ output: ../../../outputs/apks/release/addons-languages-*-$$VERCODE$$.apk
+ prebuild:
+ - echo "//gradleVersion = '6.8.3'" | tee build.gradle
+ - sed -i -e "s calculateApplicationId(project) 'com.anysoftkeyboard.languagepack.dutch'
+ " ../../../gradle/apk_module.gradle
+ - sed -i -e '/Data\.versionCode/ c versionCode $$VERCODE$$' -e '/Data\.versionName/
+ c versionName "$$VERSION$$"' ../../../gradle/versioning_apk.gradle
+ scanignore:
+ - addons/languages/*/pack/dictionary/*.gz
+ ndk: r14b
+
+MaintainerNotes: Package ID is now com.anysoftkeyboard.languagepack.dutch_oss
+
+AutoUpdateMode: None
+UpdateCheckMode: None
+CurrentVersion: 4.0.1396
+CurrentVersionCode: 2908
diff --git a/tests/triple-t-anysoftkeyboard/metadata/com.menny.android.anysoftkeyboard.yml b/tests/triple-t-anysoftkeyboard/metadata/com.menny.android.anysoftkeyboard.yml
new file mode 100644
index 00000000..70a00573
--- /dev/null
+++ b/tests/triple-t-anysoftkeyboard/metadata/com.menny.android.anysoftkeyboard.yml
@@ -0,0 +1,523 @@
+Categories:
+ - Writing
+License: Apache-2.0
+WebSite: https://anysoftkeyboard.github.io
+SourceCode: https://github.com/AnySoftKeyboard/AnySoftKeyboard
+IssueTracker: https://github.com/AnySoftKeyboard/AnySoftKeyboard/issues
+Translation: https://crowdin.com/project/anysoftkeyboard
+Changelog: https://github.com/AnySoftKeyboard/AnySoftKeyboard/releases
+Donate: https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=KDYBGNUNMMN94&lc=US&item_name=AnySoftKeyboard
+
+AutoName: AnySoftKeyboard
+
+RepoType: git
+Repo: https://github.com/AnySoftKeyboard/AnySoftKeyboard.git
+
+Builds:
+ - versionName: '20120528'
+ versionCode: 74
+ commit: d6c2f7448
+ srclibs:
+ - AnySoftKeyboard-API@78768bc479
+ prebuild: sed -i 's@\(android.library.reference.1=\).*@\1$$AnySoftKeyboard-API$$@'
+ project.properties
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: 20120814-eye-candy
+ versionCode: 76
+ disable: doesn't build
+ commit: unknown - see disabled
+ srclibs:
+ - AnySoftKeyboard-API@78768bc479
+ prebuild: sed -i 's@\(android.library.reference.1=\).*@\1$$AnySoftKeyboard-API$$@'
+ project.properties
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: 20130106-eye-candy
+ versionCode: 85
+ commit: a7723e1db5
+ srclibs:
+ - AnySoftKeyboard-API@b21d8907
+ prebuild:
+ - sed -i 's@\(android.library.reference.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ - wget https://softkeyboard.googlecode.com/svn-history/r544/trunk/project/dict_creation/makedict_Linux
+ - wget https://github.com/AnySoftKeyboard/AnySoftKeyboardTools/blob/HEAD/makedict/makedict.jar?raw=true
+ -O makedict.jar
+ - chmod +x makedict_Linux
+ - ./makedict_Linux dict/words.xml
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: 20130222-skinny-eye-candy
+ versionCode: 95
+ commit: 50daad0b0a
+ srclibs:
+ - AnySoftKeyboard-API@b21d8907
+ - AnySoftKeyboardTools@73e9a09496
+ prebuild:
+ - sed -i 's@\(android.library.reference.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - sed -i 's@..\/AnySoftKeyboardTools@$$AnySoftKeyboardTools$$@g' build.xml
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: 20130501-skinny-eye-candy-post-birthday
+ versionCode: 98
+ commit: 6f51b8a9d
+ srclibs:
+ - AnySoftKeyboard-API@2c864957
+ - AnySoftKeyboardTools@73e9a09496
+ prebuild:
+ - sed -i 's@\(android.library.reference.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - sed -i 's@..\/AnySoftKeyboardTools@$$AnySoftKeyboardTools$$@g' build.xml
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: '20130528'
+ versionCode: 102
+ commit: 72fd519
+ srclibs:
+ - AnySoftKeyboard-API@8d8a958e17
+ - AnySoftKeyboardTools@73e9a09496
+ prebuild:
+ - sed -i 's@\(reference.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - sed -i 's@..\/AnySoftKeyboardTools@$$AnySoftKeyboardTools$$@g' build.xml
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: '20130709'
+ versionCode: 106
+ commit: f1ba2de
+ srclibs:
+ - AnySoftKeyboard-API@30851236d7
+ - AnySoftKeyboardTools@73e9a09496
+ prebuild:
+ - sed -i 's@\(.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - sed -i 's@..\/AnySoftKeyboardTools@$$AnySoftKeyboardTools$$@g' build.xml
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: '20130807'
+ versionCode: 107
+ disable: not published
+ commit: unknown - see disabled
+
+ - versionName: '20130919'
+ versionCode: 111
+ commit: 2a68963f
+ srclibs:
+ - AnySoftKeyboard-API@30851236d7
+ - AnySoftKeyboardTools@73e9a09496
+ prebuild:
+ - sed -i 's@\(.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - sed -i 's@..\/AnySoftKeyboardTools@$$AnySoftKeyboardTools$$@g' build.xml
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: '20131101'
+ versionCode: 114
+ disable: no longer uses ant, prebuilts
+ commit: 82538d456f8
+ srclibs:
+ - AnySoftKeyboard-API@08b452ff4
+ - AnySoftKeyboardTools@73e9a09496
+ prebuild:
+ - sed -i 's@\(.1=\).*@\1$$AnySoftKeyboard-API$$@' project.properties
+ - sed -i 's@..\/AnySoftKeyboardTools@$$AnySoftKeyboardTools$$@g' build.xml
+ - rm -rf libs/armeabi*/ libs/x86/ libs/mips/ ant/ keyboard_keystore StoreStuff/
+ res/raw/words_1.dict
+ buildjni:
+ - yes
+ ndk: r12b
+
+ - versionName: 1.2.20140705
+ versionCode: 140
+ disable: build words dict from source, no idea what version name/code it is
+ commit: 1.5-r4.1
+ gradle:
+ - yes
+ rm:
+ - res/raw/words_1.dict
+
+ - versionName: 1.8.84
+ versionCode: 1409
+ commit: 1.8-r1
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' build.gradle
+ gradle:
+ - yes
+ rm:
+ - src/main/res/raw/words_1.dict
+ preassemble:
+ - makeEnglishDictionary
+
+ - versionName: 1.8.133
+ versionCode: 1458
+ disable: broken subdir
+ commit: 1.8-r3
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.146
+ versionCode: 1471
+ commit: 1.8-r4
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.190
+ versionCode: 1515
+ disable: weird version/vc-issue
+ commit: 1.8-r5.1
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.195
+ versionCode: 1520
+ commit: 1.8-r5.2
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.253
+ versionCode: 1578
+ commit: 1.8-r6
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.329
+ versionCode: 1654
+ commit: 1.8-r7
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.401
+ versionCode: 1726
+ commit: 1.8-r7.1
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_1.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.503
+ versionCode: 1828
+ commit: 1.8-r8
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.585
+ versionCode: 1910
+ commit: 1.8-r9
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.735
+ versionCode: 2060
+ commit: 1.8-r10
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.844
+ versionCode: 2169
+ commit: 1.8-r11
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.1241
+ versionCode: 2566
+ commit: 1.8-r12
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.8.1333
+ versionCode: 2658
+ commit: 1.8-r12.2
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryCompile/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' build.gradle
+ - sed -i -e '/crashlytics/,$d' build.gradle
+ ndk: r11c
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.9.1117
+ versionCode: 3692
+ commit: 1.9-r1
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryImplementation/,+2d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild:
+ - sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$' -e '/crashlytics/,$d'
+ build.gradle
+ - sed -i -e 's/gradle:3.1.0-alpha06/gradle:3.0.1/' ../build.gradle
+ scandelete:
+ - buildSrc
+ - app/src/debug
+ ndk: r14b
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.9.1944
+ versionCode: 4519
+ commit: 1.9-r3-fdroid
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryImplementation/d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ -e '/crashlytics/,$d' build.gradle
+ scandelete:
+ - buildSrc
+ - app/src/debug
+ ndk: r14b
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.9.2055
+ versionCode: 4630
+ commit: 1.9-r4
+ subdir: app
+ init: sed -i -e '/fabric/d' -e '/canaryImplementation/d' ../build.gradle build.gradle
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ -e '/crashlytics/,$d' build.gradle
+ scandelete:
+ - buildSrc
+ - app/src/debug
+ ndk: r14b
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.9.2445
+ versionCode: 5020
+ commit: 1.9-r5.1
+ subdir: app
+ gradle:
+ - yes
+ forceversion: true
+ rm:
+ - app/src/main/res/raw/words_*.dict
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ build.gradle
+ scandelete:
+ - buildSrc
+ - app/src/debug
+ ndk: r14b
+ preassemble:
+ - :makeEnglishDictionary
+
+ - versionName: 1.9.2629
+ versionCode: 5204
+ commit: 1.9-r6
+ subdir: app
+ gradle:
+ - yes
+ forceversion: true
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ build.gradle
+ scandelete:
+ - buildSrc
+ ndk: r14b
+
+ - versionName: 1.10.364
+ versionCode: 5539
+ commit: 1.10-r1
+ subdir: app
+ gradle:
+ - yes
+ forceversion: true
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ build.gradle
+ scandelete:
+ - buildSrc
+ ndk: r14b
+
+ - versionName: 1.10.606
+ versionCode: 5781
+ commit: 1.10-r2
+ subdir: app
+ gradle:
+ - yes
+ forceversion: true
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ build.gradle
+ scandelete:
+ - buildSrc
+ ndk: r14b
+
+ - versionName: 1.10.1109
+ versionCode: 6279
+ commit: e57c9cc852aefdc1ff60b024e52d4341337b3df7
+ subdir: app
+ gradle:
+ - yes
+ forceversion: true
+ prebuild: sed -i -e '/versionCode/d' -e '/versionName/aversionCode $$VERCODE$$'
+ build.gradle
+ scanignore:
+ - buildSrc
+ ndk: r14b
+ gradleprops:
+ - forceVersionBuildCount=4709
+
+ - versionName: 1.10.1786
+ versionCode: 6956
+ commit: 1.10-r4
+ subdir: ime/app
+ sudo:
+ - apt-get update || apt-get update
+ - apt-get install -t stretch-backports openjdk-11-jdk-headless openjdk-11-jre-headless
+ - update-alternatives --auto java
+ gradle:
+ - yes
+ prebuild:
+ - sed -i -e "/EnvKey/ a //gradleVersion = '6.8.3'" ../build.gradle
+ - sed -i -e '/Data\.versionCode/ c versionCode $$VERCODE$$' -e '/Data\.versionName/
+ c versionName "$$VERSION$$"' ../../gradle/versioning_apk.gradle
+ scanignore:
+ - addons/languages/*/pack/dictionary/*.gz
+ ndk: r14b
+
+MaintainerNotes: |-
+ * Prior to 1.9.2629, generates english dictionary binary (src/main/res/raw/words_*.dict) from source files (under `english_dictionary` folder. Mostly AOSP word-list)
+
+ Summary and Description have been moved to the new localizable text files:
+ https://f-droid.org/docs/All_About_Descriptions_Graphics_and_Screenshots
+
+AutoUpdateMode: None
+UpdateCheckMode: None
+CurrentVersion: 1.10.1786
+CurrentVersionCode: 6956
diff --git a/tests/update.TestCase b/tests/update.TestCase
index ea3b081f..72315b98 100755
--- a/tests/update.TestCase
+++ b/tests/update.TestCase
@@ -409,6 +409,30 @@ class UpdateTest(unittest.TestCase):
self.assertFalse(os.path.exists(os.path.join('de-DE', 'phoneScreenshots', '01_Login.jpg')))
self.assertFalse(os.path.exists(os.path.join('de-DE', 'sevenInchScreenshots', '01_Login.png')))
+ def test_insert_triple_t_anysoftkeyboard(self):
+ packages = ('com.anysoftkeyboard.languagepack.dutch', 'com.menny.android.anysoftkeyboard')
+ names = ('Dutch for AnySoftKeyboard', 'AnySoftKeyboard')
+
+ tmptestsdir = tempfile.mkdtemp(
+ prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir
+ )
+ os.rmdir(tmptestsdir)
+ shutil.copytree(os.path.join(self.basedir, 'triple-t-anysoftkeyboard'), tmptestsdir)
+ os.chdir(tmptestsdir)
+
+ for packageName, name in zip(packages, names):
+ config = dict()
+ fdroidserver.common.fill_config_defaults(config)
+ fdroidserver.common.config = config
+ fdroidserver.update.config = config
+ fdroidserver.update.options = fdroidserver.common.options
+
+ apps = fdroidserver.metadata.read_metadata()
+ self.assertTrue(packageName in apps)
+ fdroidserver.update.copy_triple_t_store_metadata(apps)
+ app = apps[packageName]
+ self.assertEqual(app['localized']['en-US']['name'], name)
+
def test_insert_triple_t_multiple_metadata(self):
namespace = 'ch.admin.bag.covidcertificate.'
packages = ('verifier', 'wallet')