diff --git a/metadata/com.duolingo.yml b/metadata/com.duolingo.yml new file mode 100644 index 0000000..6ca79f0 --- /dev/null +++ b/metadata/com.duolingo.yml @@ -0,0 +1,9 @@ +AuthorName: '' +Categories: +- html +CurrentVersionCode: 2147483647 +IssueTracker: '' +Name: Duolingo +SourceCode: '' +Summary: '' +WebSite: '' diff --git a/repo/categories.txt b/repo/categories.txt new file mode 100644 index 0000000..e69de29 diff --git a/repo/entry.jar b/repo/entry.jar new file mode 100644 index 0000000..e1b5f19 Binary files /dev/null and b/repo/entry.jar differ diff --git a/repo/entry.json b/repo/entry.json new file mode 100644 index 0000000..583c906 --- /dev/null +++ b/repo/entry.json @@ -0,0 +1 @@ +{"timestamp": 1744661681000, "version": 20002, "index": {"name": "/index-v2.json", "sha256": "571c9e7ad83d5f420ff7e249eb9031f273ad28ab42374c943ca59359964aa72b", "size": 3229, "numPackages": 1}, "diffs": {}} \ No newline at end of file diff --git a/repo/icons/icon.png b/repo/icons/icon.png new file mode 100644 index 0000000..922853b Binary files /dev/null and b/repo/icons/icon.png differ diff --git a/repo/index-v1.jar b/repo/index-v1.jar new file mode 100644 index 0000000..870e4c1 Binary files /dev/null and b/repo/index-v1.jar differ diff --git a/repo/index-v1.json b/repo/index-v1.json new file mode 100644 index 0000000..48ed170 --- /dev/null +++ b/repo/index-v1.json @@ -0,0 +1 @@ +{"repo": {"timestamp": 1744661681000, "version": 20002, "name": "My First F-Droid Repo Demo", "icon": "icon.png", "address": "https://MyFirstFDroidRepo.org/fdroid/repo", "description": "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."}, "requests": {"install": [], "uninstall": []}, "apps": [{"categories": ["html"], "suggestedVersionCode": "2147483647", "license": "Unknown", "name": "Duolingo", "added": 1744661681000, "packageName": "com.duolingo", "lastUpdated": 1744661681000}], "packages": {"com.duolingo": [{"added": 1744661681000, "apkName": "Duolingo v6.25.3 (Premium).apk", "features": ["android.hardware.screen.portrait", "android.hardware.screen.landscape"], "hash": "8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e", "hashType": "sha256", "minSdkVersion": 29, "nativecode": ["arm64-v8a", "armeabi-v7a", "x86", "x86_64"], "packageName": "com.duolingo", "sig": "ff9398c3885347ddf2e631518d00e072", "signer": "3b61c2a82aff9f7652ffe0b04be3c8f248b5e1aa7063f1a3846f0cf5c778628a", "size": 86455373, "targetSdkVersion": 34, "uses-permission": [["android.permission.INTERNET", null], ["android.permission.ACCESS_NETWORK_STATE", null], ["android.permission.FOREGROUND_SERVICE", null], ["android.permission.VIBRATE", null], ["android.permission.RECEIVE_BOOT_COMPLETED", null], ["android.permission.GET_ACCOUNTS", null], ["android.permission.RECORD_AUDIO", null], ["android.permission.POST_NOTIFICATIONS", null], ["android.permission.READ_EXTERNAL_STORAGE", 32], ["android.permission.READ_CONTACTS", null], ["com.google.android.c2dm.permission.RECEIVE", null], ["android.permission.MODIFY_AUDIO_SETTINGS", null], ["com.google.android.providers.gsf.permission.READ_GSERVICES", null], ["android.permission.WAKE_LOCK", null], ["com.duolingo.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION", null], ["com.sec.android.provider.badge.permission.READ", null], ["com.sec.android.provider.badge.permission.WRITE", null], ["com.htc.launcher.permission.READ_SETTINGS", null], ["com.htc.launcher.permission.UPDATE_SHORTCUT", null], ["com.sonyericsson.home.permission.BROADCAST_BADGE", null], ["com.sonymobile.home.permission.PROVIDER_INSERT_BADGE", null], ["com.anddoes.launcher.permission.UPDATE_COUNT", null], ["com.majeur.launcher.permission.UPDATE_BADGE", null], ["com.huawei.android.launcher.permission.CHANGE_BADGE", null], ["com.huawei.android.launcher.permission.READ_SETTINGS", null], ["com.huawei.android.launcher.permission.WRITE_SETTINGS", null], ["android.permission.READ_APP_BADGE", null], ["com.oppo.launcher.permission.READ_SETTINGS", null], ["com.oppo.launcher.permission.WRITE_SETTINGS", null], ["me.everything.badger.permission.BADGE_COUNT_READ", null], ["me.everything.badger.permission.BADGE_COUNT_WRITE", null]], "versionCode": 2074, "versionName": "6.25.3"}]}} \ No newline at end of file diff --git a/repo/index-v2.json b/repo/index-v2.json new file mode 100644 index 0000000..507fd5e --- /dev/null +++ b/repo/index-v2.json @@ -0,0 +1 @@ +{"repo": {"name": {"en-US": "My First F-Droid Repo Demo"}, "description": {"en-US": "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "b1f27fa87f8cabca50cdcd462a0f500d79d883b965a498d0e49eea560b39be1f", "size": 715}}, "address": "https://MyFirstFDroidRepo.org/fdroid/repo", "timestamp": 1744661681000}, "packages": {"com.duolingo": {"metadata": {"added": 1744661681000, "categories": ["html"], "lastUpdated": 1744661681000, "name": {"en-US": "Duolingo"}, "preferredSigner": "3b61c2a82aff9f7652ffe0b04be3c8f248b5e1aa7063f1a3846f0cf5c778628a"}, "versions": {"8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e": {"added": 1744661681000, "file": {"name": "/Duolingo v6.25.3 (Premium).apk", "sha256": "8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e", "size": 86455373}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86", "x86_64"], "versionName": "6.25.3", "versionCode": 2074, "features": [{"name": "android.hardware.screen.portrait"}, {"name": "android.hardware.screen.landscape"}], "usesSdk": {"minSdkVersion": 29, "targetSdkVersion": 34}, "signer": {"sha256": ["3b61c2a82aff9f7652ffe0b04be3c8f248b5e1aa7063f1a3846f0cf5c778628a"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "android.permission.ACCESS_NETWORK_STATE"}, {"name": "android.permission.FOREGROUND_SERVICE"}, {"name": "android.permission.VIBRATE"}, {"name": "android.permission.RECEIVE_BOOT_COMPLETED"}, {"name": "android.permission.GET_ACCOUNTS"}, {"name": "android.permission.RECORD_AUDIO"}, {"name": "android.permission.POST_NOTIFICATIONS"}, {"name": "android.permission.READ_EXTERNAL_STORAGE", "maxSdkVersion": 32}, {"name": "android.permission.READ_CONTACTS"}, {"name": "com.google.android.c2dm.permission.RECEIVE"}, {"name": "android.permission.MODIFY_AUDIO_SETTINGS"}, {"name": "com.google.android.providers.gsf.permission.READ_GSERVICES"}, {"name": "android.permission.WAKE_LOCK"}, {"name": "com.duolingo.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}, {"name": "com.sec.android.provider.badge.permission.READ"}, {"name": "com.sec.android.provider.badge.permission.WRITE"}, {"name": "com.htc.launcher.permission.READ_SETTINGS"}, {"name": "com.htc.launcher.permission.UPDATE_SHORTCUT"}, {"name": "com.sonyericsson.home.permission.BROADCAST_BADGE"}, {"name": "com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"}, {"name": "com.anddoes.launcher.permission.UPDATE_COUNT"}, {"name": "com.majeur.launcher.permission.UPDATE_BADGE"}, {"name": "com.huawei.android.launcher.permission.CHANGE_BADGE"}, {"name": "com.huawei.android.launcher.permission.READ_SETTINGS"}, {"name": "com.huawei.android.launcher.permission.WRITE_SETTINGS"}, {"name": "android.permission.READ_APP_BADGE"}, {"name": "com.oppo.launcher.permission.READ_SETTINGS"}, {"name": "com.oppo.launcher.permission.WRITE_SETTINGS"}, {"name": "me.everything.badger.permission.BADGE_COUNT_READ"}, {"name": "me.everything.badger.permission.BADGE_COUNT_WRITE"}]}}}}}} \ No newline at end of file diff --git a/repo/index.css b/repo/index.css new file mode 100644 index 0000000..6255e28 --- /dev/null +++ b/repo/index.css @@ -0,0 +1,228 @@ +/* auto-generated - fdroid index updates will overwrite this file */ +BODY { + font-family : Arial, Helvetica, Sans-Serif; + color : #0000ee; + background-color : #ffffff; +} +p { + text-align : justify; +} +p.center { + text-align : center; +} +TD { + font-family : Arial, Helvetica, Sans-Serif; + color : #0000ee; +} +body,td { + font-size : 14px; +} +TH { + font-family : Arial, Helvetica, Sans-Serif; + color : #0000ee; + background-color : #F5EAD4; +} +a:link { + color : #bb0000; +} +a:visited { + color : #ff0000; +} +.zitat { + margin-left : 1cm; + margin-right : 1cm; + font-style : italic; +} +#intro { + border-spacing : 1em; + border : 1px solid gray; + border-radius : 0.5em; + box-shadow : 10px 10px 5px #888; + margin : 1.5em; + font-size : .9em; + width : 600px; + max-width : 90%; + display : table; + margin-left : auto; + margin-right : auto; + font-size : .8em; + color : #555555; +} +#intro > p { + margin-top : 0; +} +#intro p:last-child { + margin-bottom : 0; +} +.last { + border-bottom : 1px solid black; + padding-bottom : .5em; + text-align : center; +} +table { + border-collapse : collapse; +} +h2 { + text-align : center; +} +.perms { + font-family : monospace; + font-size : .8em; +} +.repoapplist { + display : table; + border-collapse : collapse; + margin-left : auto; + margin-right : auto; + width : 600px; + max-width : 90%; +} +.approw, appdetailrow { + display : table-row; +} +.appdetailrow { + display : flex; + padding : .5em; +} +.appiconbig, .appdetailblock, .appdetailcell { + display : table-cell +} +.appiconbig { + vertical-align : middle; + text-align : center; +} +.appdetailinner { + width : 100%; +} +.applinkcell { + text-align : center; + float : right; + width : 100%; + margin-bottom : .1em; +} +.paddedlink { + margin : 1em; +} +.approw { + border-spacing : 1em; + border : 1px solid gray; + border-radius : 0.5em; + padding : 0.5em; + margin : 1.5em; +} +.appdetailinner .appdetailrow:first-child { + background-color : #d5d5d5; +} +.appdetailinner .appdetailrow:first-child .appdetailcell { + min-width : 33%; + flex : 1 33%; + text-align : center; +} +.appdetailinner .appdetailrow:first-child .appdetailcell:first-child { + text-align : left; +} +.appdetailinner .appdetailrow:first-child .appdetailcell:last-child { + float : none; + text-align : right; +} +.minor-details { + font-size : .8em; + color : #555555; +} +.boldname { + font-weight : bold; +} +#appcount { + text-align : center; + margin-bottom : .5em; +} +kbd { + padding : 0.1em 0.6em; + border : 1px solid #CCC; + background-color : #F7F7F7; + color : #333; + box-shadow : 0px 1px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 2px #FFF inset; + border-radius : 3px; + display : inline-block; + margin : 0px 0.1em; + text-shadow : 0px 1px 0px #FFF; + white-space : nowrap; +} +div.filterline, div.repoline { + display : table; + margin-left : auto; + margin-right : auto; + margin-bottom : 1em; + vertical-align : middle; + display : table; + font-size : .8em; +} +.filterline form { + display : table-row; +} +.filterline .filtercell { + display : table-cell; + vertical-align : middle; +} +fieldset { + float : left; +} +fieldset select, fieldset input, #reposelect select, #reposelect input { + font-size : .9em; +} +.pager { + display : table; + margin-left : auto; + margin-right : auto; + width : 600px; + max-width : 90%; + padding-top : .6em; +} +/* should correspond to .repoapplist */ +.pagerrow { + display : table-row; +} +.pagercell { + display : table-cell; +} +.pagercell.left { + text-align : left; + padding-right : 1em; +} +.pagercell.middle { + text-align : center; + font-size : .9em; + color : #555; +} +.pagercell.right { + text-align : right; + padding-left : 1em; +} +.anti { + color : peru; +} +.antibold { + color : crimson; +} +#footer { + text-align : center; + margin-top : 1em; + font-size : 11px; + color : #555; +} +#footer img { + vertical-align : middle; +} +@media (max-width: 600px) { + .repoapplist { + display : block; + } + .appdetailinner, .appdetailrow { + display : block; + } + .appdetailcell { + display : block; + float : left; + line-height : 1.5em; + } +} \ No newline at end of file diff --git a/repo/index.html b/repo/index.html new file mode 100644 index 0000000..5c0862d --- /dev/null +++ b/repo/index.html @@ -0,0 +1,56 @@ + + + + + + + + My First F-Droid Repo Demo + + + + + + + + + + + + +

+ My First F-Droid Repo Demo +

+
+

+ + + QR: test + + + This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid. +
+
+ Currently it serves + + 1 + + apps. To add it to your F-Droid client, scan the QR code (click it to enlarge) or use this URL: +

+

+ + + https://MyFirstFDroidRepo.org/fdroid/repo + + +

+

+ If you would like to manually verify the fingerprint (SHA-256) of the repository signing key, here it is: +
+ + 5C BE F8 C2 57 80 8D 20 B6 56 53 CB C8 96 F0 8F 0A 93 F4 76 59 85 9F CD 9A 6B 75 FC AD DA 61 7D + +

+
+ + diff --git a/repo/index.jar b/repo/index.jar new file mode 100644 index 0000000..6a4a8e5 Binary files /dev/null and b/repo/index.jar differ diff --git a/repo/index.png b/repo/index.png new file mode 100644 index 0000000..6906d20 Binary files /dev/null and b/repo/index.png differ diff --git a/repo/index.xml b/repo/index.xml new file mode 100644 index 0000000..f7815a4 --- /dev/null +++ b/repo/index.xml @@ -0,0 +1 @@ +This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid.com.duolingo2025-04-142025-04-14DuolingoNo description availableUnknownhtmlhtml21474836476.25.32074Duolingo v6.25.3 (Premium).apk8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e8645537329342025-04-14ff9398c3885347ddf2e631518d00e072ACCESS_NETWORK_STATE,FOREGROUND_SERVICE,GET_ACCOUNTS,INTERNET,MODIFY_AUDIO_SETTINGS,POST_NOTIFICATIONS,READ_APP_BADGE,READ_CONTACTS,READ_EXTERNAL_STORAGE,RECEIVE_BOOT_COMPLETED,RECORD_AUDIO,VIBRATE,WAKE_LOCK,com.anddoes.launcher.permission.UPDATE_COUNT,com.duolingo.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION,com.google.android.c2dm.permission.RECEIVE,com.google.android.providers.gsf.permission.READ_GSERVICES,com.htc.launcher.permission.READ_SETTINGS,com.htc.launcher.permission.UPDATE_SHORTCUT,com.huawei.android.launcher.permission.CHANGE_BADGE,com.huawei.android.launcher.permission.READ_SETTINGS,com.huawei.android.launcher.permission.WRITE_SETTINGS,com.majeur.launcher.permission.UPDATE_BADGE,com.oppo.launcher.permission.READ_SETTINGS,com.oppo.launcher.permission.WRITE_SETTINGS,com.sec.android.provider.badge.permission.READ,com.sec.android.provider.badge.permission.WRITE,com.sonyericsson.home.permission.BROADCAST_BADGE,com.sonymobile.home.permission.PROVIDER_INSERT_BADGE,me.everything.badger.permission.BADGE_COUNT_READ,me.everything.badger.permission.BADGE_COUNT_WRITEarm64-v8a,armeabi-v7a,x86,x86_64android.hardware.screen.landscape,android.hardware.screen.portrait \ No newline at end of file diff --git a/repo/status/running.json b/repo/status/running.json new file mode 100644 index 0000000..50d06e2 --- /dev/null +++ b/repo/status/running.json @@ -0,0 +1 @@ +{"/etc/issue.net":"Debian GNU/Linux 12","antiFeatures":{},"apksigner":"/usr/bin/apksigner","archivePolicy0":[],"commandLine":["/usr/bin/fdroid update","-c"],"disabled":[],"endTimestamp":1744661684199,"failedBuilds":{},"fdroiddata":{"commitId":"4eda801d545a17909ebc6f5d589e6d9c78ccfb51","isDirty":false,"modifiedFiles":[],"untrackedFiles":["metadata/com.duolingo.yml","repo/categories.txt","repo/entry.jar","repo/entry.json","repo/icons/icon.png","repo/index-v1.jar","repo/index-v1.json","repo/index-v2.json","repo/index.css","repo/index.html","repo/index.jar","repo/index.png","repo/index.xml","tmp/apkcache.json","tmp/repo_1744661681000.json"]},"jarsigner":"/usr/lib/jvm/default-java/bin/jarsigner","keytool":"/usr/lib/jvm/default-java/bin/keytool","needsUpdate":["com.duolingo"],"noPackages":["com.duolingo"],"noUpdateCheck":["com.duolingo"],"startTimestamp":1744658079000,"subcommand":"update"} \ No newline at end of file diff --git a/repo/status/update.json b/repo/status/update.json new file mode 100644 index 0000000..50d06e2 --- /dev/null +++ b/repo/status/update.json @@ -0,0 +1 @@ +{"/etc/issue.net":"Debian GNU/Linux 12","antiFeatures":{},"apksigner":"/usr/bin/apksigner","archivePolicy0":[],"commandLine":["/usr/bin/fdroid update","-c"],"disabled":[],"endTimestamp":1744661684199,"failedBuilds":{},"fdroiddata":{"commitId":"4eda801d545a17909ebc6f5d589e6d9c78ccfb51","isDirty":false,"modifiedFiles":[],"untrackedFiles":["metadata/com.duolingo.yml","repo/categories.txt","repo/entry.jar","repo/entry.json","repo/icons/icon.png","repo/index-v1.jar","repo/index-v1.json","repo/index-v2.json","repo/index.css","repo/index.html","repo/index.jar","repo/index.png","repo/index.xml","tmp/apkcache.json","tmp/repo_1744661681000.json"]},"jarsigner":"/usr/lib/jvm/default-java/bin/jarsigner","keytool":"/usr/lib/jvm/default-java/bin/keytool","needsUpdate":["com.duolingo"],"noPackages":["com.duolingo"],"noUpdateCheck":["com.duolingo"],"startTimestamp":1744658079000,"subcommand":"update"} \ No newline at end of file diff --git a/tmp/apkcache.json b/tmp/apkcache.json new file mode 100644 index 0000000..1e98957 --- /dev/null +++ b/tmp/apkcache.json @@ -0,0 +1,159 @@ +{ + "METADATA_VERSION": 20002, + "allow_disabled_algorithms": false, + "Duolingo v6.25.3 (Premium).apk": { + "hash": "8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e", + "hashType": "sha256", + "uses-permission": [ + [ + "android.permission.INTERNET", + null + ], + [ + "android.permission.ACCESS_NETWORK_STATE", + null + ], + [ + "android.permission.FOREGROUND_SERVICE", + null + ], + [ + "android.permission.VIBRATE", + null + ], + [ + "android.permission.RECEIVE_BOOT_COMPLETED", + null + ], + [ + "android.permission.GET_ACCOUNTS", + null + ], + [ + "android.permission.RECORD_AUDIO", + null + ], + [ + "android.permission.POST_NOTIFICATIONS", + null + ], + [ + "android.permission.READ_EXTERNAL_STORAGE", + 32 + ], + [ + "android.permission.READ_CONTACTS", + null + ], + [ + "com.google.android.c2dm.permission.RECEIVE", + null + ], + [ + "android.permission.MODIFY_AUDIO_SETTINGS", + null + ], + [ + "com.google.android.providers.gsf.permission.READ_GSERVICES", + null + ], + [ + "android.permission.WAKE_LOCK", + null + ], + [ + "com.duolingo.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION", + null + ], + [ + "com.sec.android.provider.badge.permission.READ", + null + ], + [ + "com.sec.android.provider.badge.permission.WRITE", + null + ], + [ + "com.htc.launcher.permission.READ_SETTINGS", + null + ], + [ + "com.htc.launcher.permission.UPDATE_SHORTCUT", + null + ], + [ + "com.sonyericsson.home.permission.BROADCAST_BADGE", + null + ], + [ + "com.sonymobile.home.permission.PROVIDER_INSERT_BADGE", + null + ], + [ + "com.anddoes.launcher.permission.UPDATE_COUNT", + null + ], + [ + "com.majeur.launcher.permission.UPDATE_BADGE", + null + ], + [ + "com.huawei.android.launcher.permission.CHANGE_BADGE", + null + ], + [ + "com.huawei.android.launcher.permission.READ_SETTINGS", + null + ], + [ + "com.huawei.android.launcher.permission.WRITE_SETTINGS", + null + ], + [ + "android.permission.READ_APP_BADGE", + null + ], + [ + "com.oppo.launcher.permission.READ_SETTINGS", + null + ], + [ + "com.oppo.launcher.permission.WRITE_SETTINGS", + null + ], + [ + "me.everything.badger.permission.BADGE_COUNT_READ", + null + ], + [ + "me.everything.badger.permission.BADGE_COUNT_WRITE", + null + ] + ], + "uses-permission-sdk-23": [], + "features": [ + "android.hardware.screen.portrait", + "android.hardware.screen.landscape" + ], + "icons_src": {}, + "icons": {}, + "antiFeatures": [], + "packageName": "com.duolingo", + "versionCode": 2074, + "name": "Duolingo", + "versionName": "6.25.3", + "minSdkVersion": 29, + "targetSdkVersion": 34, + "nativecode": [ + "arm64-v8a", + "armeabi-v7a", + "x86", + "x86_64" + ], + "sig": "ff9398c3885347ddf2e631518d00e072", + "signer": "3b61c2a82aff9f7652ffe0b04be3c8f248b5e1aa7063f1a3846f0cf5c778628a", + "size": 86455373, + "apkName": "Duolingo v6.25.3 (Premium).apk", + "added": 1744654481.162982 + } +} \ No newline at end of file diff --git a/tmp/repo_1744661681000.json b/tmp/repo_1744661681000.json new file mode 100644 index 0000000..507fd5e --- /dev/null +++ b/tmp/repo_1744661681000.json @@ -0,0 +1 @@ +{"repo": {"name": {"en-US": "My First F-Droid Repo Demo"}, "description": {"en-US": "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."}, "icon": {"en-US": {"name": "/icons/icon.png", "sha256": "b1f27fa87f8cabca50cdcd462a0f500d79d883b965a498d0e49eea560b39be1f", "size": 715}}, "address": "https://MyFirstFDroidRepo.org/fdroid/repo", "timestamp": 1744661681000}, "packages": {"com.duolingo": {"metadata": {"added": 1744661681000, "categories": ["html"], "lastUpdated": 1744661681000, "name": {"en-US": "Duolingo"}, "preferredSigner": "3b61c2a82aff9f7652ffe0b04be3c8f248b5e1aa7063f1a3846f0cf5c778628a"}, "versions": {"8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e": {"added": 1744661681000, "file": {"name": "/Duolingo v6.25.3 (Premium).apk", "sha256": "8d8457a0790ccdc92db03d4fe40cb5ca2da345b0c511d6e37e1f95af290e472e", "size": 86455373}, "manifest": {"nativecode": ["arm64-v8a", "armeabi-v7a", "x86", "x86_64"], "versionName": "6.25.3", "versionCode": 2074, "features": [{"name": "android.hardware.screen.portrait"}, {"name": "android.hardware.screen.landscape"}], "usesSdk": {"minSdkVersion": 29, "targetSdkVersion": 34}, "signer": {"sha256": ["3b61c2a82aff9f7652ffe0b04be3c8f248b5e1aa7063f1a3846f0cf5c778628a"]}, "usesPermission": [{"name": "android.permission.INTERNET"}, {"name": "android.permission.ACCESS_NETWORK_STATE"}, {"name": "android.permission.FOREGROUND_SERVICE"}, {"name": "android.permission.VIBRATE"}, {"name": "android.permission.RECEIVE_BOOT_COMPLETED"}, {"name": "android.permission.GET_ACCOUNTS"}, {"name": "android.permission.RECORD_AUDIO"}, {"name": "android.permission.POST_NOTIFICATIONS"}, {"name": "android.permission.READ_EXTERNAL_STORAGE", "maxSdkVersion": 32}, {"name": "android.permission.READ_CONTACTS"}, {"name": "com.google.android.c2dm.permission.RECEIVE"}, {"name": "android.permission.MODIFY_AUDIO_SETTINGS"}, {"name": "com.google.android.providers.gsf.permission.READ_GSERVICES"}, {"name": "android.permission.WAKE_LOCK"}, {"name": "com.duolingo.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"}, {"name": "com.sec.android.provider.badge.permission.READ"}, {"name": "com.sec.android.provider.badge.permission.WRITE"}, {"name": "com.htc.launcher.permission.READ_SETTINGS"}, {"name": "com.htc.launcher.permission.UPDATE_SHORTCUT"}, {"name": "com.sonyericsson.home.permission.BROADCAST_BADGE"}, {"name": "com.sonymobile.home.permission.PROVIDER_INSERT_BADGE"}, {"name": "com.anddoes.launcher.permission.UPDATE_COUNT"}, {"name": "com.majeur.launcher.permission.UPDATE_BADGE"}, {"name": "com.huawei.android.launcher.permission.CHANGE_BADGE"}, {"name": "com.huawei.android.launcher.permission.READ_SETTINGS"}, {"name": "com.huawei.android.launcher.permission.WRITE_SETTINGS"}, {"name": "android.permission.READ_APP_BADGE"}, {"name": "com.oppo.launcher.permission.READ_SETTINGS"}, {"name": "com.oppo.launcher.permission.WRITE_SETTINGS"}, {"name": "me.everything.badger.permission.BADGE_COUNT_READ"}, {"name": "me.everything.badger.permission.BADGE_COUNT_WRITE"}]}}}}}} \ No newline at end of file