From a06caa2e605c4394ccbe33bf1b929099b8dd598d Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 4 Apr 2023 19:14:25 +0200 Subject: [PATCH 01/13] Migrate to new stale bot (dry-run active) --- .github/no-response.yml | 30 ++++++++++++++++----------- .github/stale.yml | 46 ++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/.github/no-response.yml b/.github/no-response.yml index 090694a5b..20fa4629a 100644 --- a/.github/no-response.yml +++ b/.github/no-response.yml @@ -1,13 +1,19 @@ -# Configuration for probot-no-response - https://github.com/probot/no-response +# Configuration for close-stale-issues - https://github.com/marketplace/actions/close-stale-issues -# Number of days of inactivity before an Issue is closed for lack of response -daysUntilClose: 14 -# Label requiring a response -responseRequiredLabel: state:awaiting-response -# Comment to post when closing an Issue for lack of response. Set to `false` to disable -closeComment: > - This issue has been automatically closed because there has been no response - to our request for more information from the original author. With only the - information that is currently in the issue, we don't have enough information - to take action. Please reach out if you have or find the answers we need so - that we can investigate further. +name: 'Close awaiting response issues' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v8 + with: + days-before-stale: -1 + days-before-close: 14 + days-before-pr-close: -1 + close-issue-message: 'This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.' + only-labels: 'state:awaiting-response' + debug-only: true diff --git a/.github/stale.yml b/.github/stale.yml index e32981b00..dccc0f650 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,24 +1,22 @@ -# Number of days of inactivity before an issue becomes stale -daysUntilStale: 365 -# Number of days of inactivity before a stale issue is closed -daysUntilClose: 90 -# Issues with these labels will never be considered stale -exemptLabels: - - type:security-issue # never close automatically - - type:feature-request # never close automatically - - type:enhancement # never close automatically - - type:upstream-bug # never close automatically - - state:awaiting-response # handled by different bot - - state:blocked - - state:confirmed -# Set to true to ignore issues in a milestone (defaults to false) -exemptMilestones: true -# Label to use when marking an issue as stale -staleLabel: state:stale -# Comment to post when marking an issue as stale. Set to `false` to disable -markComment: > - This issue has been automatically marked as stale because it has not had - recent activity. It will be closed if no further activity occurs. Thank you - for your contributions. -# Comment to post when closing a stale issue. Set to `false` to disable -closeComment: false +# Configuration for close-stale-issues - https://github.com/marketplace/actions/close-stale-issues + +name: 'Close stale issues' +on: + schedule: + - cron: '30 1 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v8 + with: + days-before-stale: 365 + days-before-close: 90 + exempt-issue-labels: 'type:security-issue,type:feature-request,type:enhancement,type:upstream-bug,state:awaiting-response,state:blocked,state:confirmed' + exempt-all-milestones: true + stale-issue-label: 'state:stale' + stale-pr-label: 'state:stale' + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + debug-only: true From fb6ae1cfc7a7d216cb23247204c20748d1bc1aa2 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 5 Apr 2023 12:55:42 +0200 Subject: [PATCH 02/13] Enhance new stale bot (still dry-run active) --- .github/{ => workflows}/no-response.yml | 11 +++++++---- .github/{ => workflows}/stale.yml | 5 ++++- 2 files changed, 11 insertions(+), 5 deletions(-) rename .github/{ => workflows}/no-response.yml (72%) rename .github/{ => workflows}/stale.yml (91%) diff --git a/.github/no-response.yml b/.github/workflows/no-response.yml similarity index 72% rename from .github/no-response.yml rename to .github/workflows/no-response.yml index 20fa4629a..96c2af2e6 100644 --- a/.github/no-response.yml +++ b/.github/workflows/no-response.yml @@ -3,17 +3,20 @@ name: 'Close awaiting response issues' on: schedule: - - cron: '30 1 * * *' + - cron: '00 12 * * *' jobs: - stale: + no-response: runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write steps: - uses: actions/stale@v8 with: days-before-stale: -1 days-before-close: 14 days-before-pr-close: -1 - close-issue-message: 'This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.' + close-issue-message: "This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further." only-labels: 'state:awaiting-response' - debug-only: true + debug-only: true \ No newline at end of file diff --git a/.github/stale.yml b/.github/workflows/stale.yml similarity index 91% rename from .github/stale.yml rename to .github/workflows/stale.yml index dccc0f650..e8791b185 100644 --- a/.github/stale.yml +++ b/.github/workflows/stale.yml @@ -3,11 +3,14 @@ name: 'Close stale issues' on: schedule: - - cron: '30 1 * * *' + - cron: '00 12 * * *' jobs: stale: runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write steps: - uses: actions/stale@v8 with: From 9891b6f91386b7e9faf711290287e20fd77ebb0c Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 5 Apr 2023 15:09:33 +0200 Subject: [PATCH 03/13] Activate new stale bot --- .github/workflows/no-response.yml | 3 +-- .github/workflows/stale.yml | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml index 96c2af2e6..e41a69c4f 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/no-response.yml @@ -3,7 +3,7 @@ name: 'Close awaiting response issues' on: schedule: - - cron: '00 12 * * *' + - cron: '30 13 * * *' jobs: no-response: @@ -19,4 +19,3 @@ jobs: days-before-pr-close: -1 close-issue-message: "This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further." only-labels: 'state:awaiting-response' - debug-only: true \ No newline at end of file diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index e8791b185..9d08af9c0 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -3,7 +3,7 @@ name: 'Close stale issues' on: schedule: - - cron: '00 12 * * *' + - cron: '30 13 * * *' jobs: stale: @@ -22,4 +22,3 @@ jobs: stale-pr-label: 'state:stale' stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' - debug-only: true From 7a4a4a778eb65ff90d2f05c6699bc4f4fa76a2e2 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 5 Apr 2023 16:01:35 +0200 Subject: [PATCH 04/13] Fix new no-response bot --- .github/workflows/no-response.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml index e41a69c4f..141e4176e 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/no-response.yml @@ -14,8 +14,8 @@ jobs: steps: - uses: actions/stale@v8 with: - days-before-stale: -1 - days-before-close: 14 + days-before-stale: 14 + days-before-close: 1 days-before-pr-close: -1 close-issue-message: "This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further." only-labels: 'state:awaiting-response' From edc47c9914e5e6a1f600e2577594535f5be09591 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 5 Apr 2023 16:03:23 +0200 Subject: [PATCH 05/13] Adjust state label in no-response bot as well --- .github/workflows/no-response.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml index 141e4176e..167ed041b 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/no-response.yml @@ -17,5 +17,6 @@ jobs: days-before-stale: 14 days-before-close: 1 days-before-pr-close: -1 + stale-issue-label: 'state:stale' close-issue-message: "This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further." only-labels: 'state:awaiting-response' From 6e2ee8c02c79d41f9ee07e2fac025f2a3c4b37c1 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 11 Apr 2023 15:52:19 +0200 Subject: [PATCH 06/13] "Invalid SSL certificate" dialog should show SHA-256 using WebDAV Fixes #490 --- .../java/org/cryptomator/data/util/X509CertificateHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/src/main/java/org/cryptomator/data/util/X509CertificateHelper.kt b/data/src/main/java/org/cryptomator/data/util/X509CertificateHelper.kt index 163ba70a5..176852c5d 100644 --- a/data/src/main/java/org/cryptomator/data/util/X509CertificateHelper.kt +++ b/data/src/main/java/org/cryptomator/data/util/X509CertificateHelper.kt @@ -32,7 +32,7 @@ object X509CertificateHelper { @Throws(CertificateEncodingException::class) fun getFingerprintFormatted(certificate: X509Certificate): String { - var hash = String(Hex.encodeHex(DigestUtils.sha1(certificate.encoded))) // + var hash = String(Hex.encodeHex(DigestUtils.sha256(certificate.encoded))) // .uppercase() // .replace("(.{2})".toRegex(), "$1:") hash = hash.substring(0, hash.length - 1) From 78a22b9ad7e872f3929b8db1932e79809e295ab8 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Wed, 12 Apr 2023 15:13:01 +0200 Subject: [PATCH 07/13] Update build dependencies Update Gradle plugin to 7.4.2 and Gradle to 7.6.1 Update Android SDK Command-Line Tools of Docker image Update Build tools version --- build.gradle | 2 +- buildsystem/Dockerfile | 4 ++-- buildsystem/dependencies.gradle | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 60756 -> 61574 bytes gradle/wrapper/gradle-wrapper.properties | 4 ++-- gradlew | 12 ++++++++---- gradlew.bat | 1 + lib/pcloud-sdk-java | 2 +- lib/subsampling-scale-image-view | 2 +- 9 files changed, 17 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index beba0a103..69a479e22 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.android.tools.build:gradle:7.4.2' classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/buildsystem/Dockerfile b/buildsystem/Dockerfile index 97f51df1f..9c1b1bf0a 100644 --- a/buildsystem/Dockerfile +++ b/buildsystem/Dockerfile @@ -19,9 +19,9 @@ RUN apt-get update -y && apt-get install -y apt-utils wget git unzip RUN apt-get update -y && apt-get install -y $(cat docker/dependencies.txt) RUN docker/print-versions.sh docker/dependencies.txt -ENV ANDROID_COMMAND_LINE_TOOLS_FILENAME commandlinetools-linux-8512546_latest.zip +ENV ANDROID_COMMAND_LINE_TOOLS_FILENAME commandlinetools-linux-9477386_latest.zip ENV ANDROID_API_LEVELS android-33 -ENV ANDROID_BUILD_TOOLS_VERSION 33.0.0 +ENV ANDROID_BUILD_TOOLS_VERSION 33.0.2 ENV ANDROID_HOME /usr/local/android-sdk-linux ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/cmdline-tools/bin diff --git a/buildsystem/dependencies.gradle b/buildsystem/dependencies.gradle index 814f25f40..fe2662a7f 100644 --- a/buildsystem/dependencies.gradle +++ b/buildsystem/dependencies.gradle @@ -19,7 +19,7 @@ allprojects { } ext { - androidBuildToolsVersion = "33.0.0" + androidBuildToolsVersion = "33.0.2" androidMinSdkVersion = 26 androidTargetSdkVersion = 33 androidCompileSdkVersion = 33 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e5832f090a2944b7473328c07c9755baa3196..943f0cbfa754578e88a3dae77fce6e3dea56edbf 100644 GIT binary patch delta 36524 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%0DGK?7GHTj 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 VwlMN}`%er%aGR6olj~j${vQ;P=LY}) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 5116c5b18..508322917 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip -distributionSha256Sum=f6b8596b10cce501591e92f229816aa4046424f3b24d771751b06779d58c8ec4 +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb6c..65dcd68d6 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac diff --git a/gradlew.bat b/gradlew.bat index 53a6b238d..6689b85be 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/lib/pcloud-sdk-java b/lib/pcloud-sdk-java index 9c0ea5792..c6681ed37 160000 --- a/lib/pcloud-sdk-java +++ b/lib/pcloud-sdk-java @@ -1 +1 @@ -Subproject commit 9c0ea5792fa2403da098eec8788e6425385c36d2 +Subproject commit c6681ed3762fdb3bda63fc9c147a369d3812f7d9 diff --git a/lib/subsampling-scale-image-view b/lib/subsampling-scale-image-view index b78658b13..b3f141e40 160000 --- a/lib/subsampling-scale-image-view +++ b/lib/subsampling-scale-image-view @@ -1 +1 @@ -Subproject commit b78658b13c43c18d63765f804fb3cd54fe0192bf +Subproject commit b3f141e408dbcddb60e8203b96af6d610f7ecccd From 8ecdc68d0aa3707d6f9a6fa0fe1cd74b48390e9d Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 13 Apr 2023 13:05:59 +0200 Subject: [PATCH 08/13] Check androidVersionCode explicitly set during release Required for F-Droid, see https://gitlab.com/fdroid/rfp/-/issues/713\#note_1350910336 --- build.gradle | 2 +- fastlane/Fastfile | 20 ++++++++++++++++---- fastlane/README.md | 28 ++-------------------------- 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/build.gradle b/build.gradle index 69a479e22..31dd3b987 100644 --- a/build.gradle +++ b/build.gradle @@ -38,7 +38,7 @@ def getVersionCode = { -> allprojects { ext { androidApplicationId = 'org.cryptomator' - androidVersionCode = getVersionCode() + androidVersionCode = getVersionCode() // must be getVersionCode(). only at release tag set the actual value androidVersionName = '1.9.0-SNAPSHOT' } repositories { diff --git a/fastlane/Fastfile b/fastlane/Fastfile index fe650ed0d..c410658f2 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -26,6 +26,8 @@ platform :android do |options| # use english-change-log for french language too FileUtils.cp(release_note_path_en, "metadata/android/fr-FR/changelogs/default.txt") + checkVersionCodeSet(alpha:options[:alpha], beta:options[:beta]) + deployToPlaystore(alpha:options[:alpha], beta:options[:beta]) deployToServer(alpha:options[:alpha], beta:options[:beta]) deployToFDroid(alpha:options[:alpha], beta:options[:beta]) @@ -41,8 +43,16 @@ platform :android do |options| ) end + lane :checkVersionCodeSet do |options| + puts "Make sure you adjusted androidVersionName and set androidVersionCode to #{build} before building and tagging!!!" + puts "If check failed, adjust/commit/tag it and restart when finished" + puts "When merged to develop, set it back to getVersionCode()" + + sh("cat ../build.gradle | grep -q 'androidVersionCode = #{build}'") + end + desc "Deploy new version to Play Store" - lane :deployToPlaystore do |options| + private_lane :deployToPlaystore do |options| deploy_target = "production" if options[:alpha] @@ -88,7 +98,7 @@ platform :android do |options| end desc "Deploy new version to server" - lane :deployToServer do |options| + private_lane :deployToServer do |options| gradle(task: "clean") gradle( @@ -173,7 +183,7 @@ platform :android do |options| end desc "Deploy new version to F-Droid" - lane :deployToFDroid do |options| + private_lane :deployToFDroid do |options| gradle(task: "clean") gradle( @@ -222,7 +232,7 @@ platform :android do |options| end desc "Deploy new lite version" - lane :deployLite do |options| + private_lane :deployLite do |options| sh("docker build -t cryptomator-android ../buildsystem") sh("docker run --rm -u $(id -u):$(id -g) -v $(cd .. && pwd):/project -w /project cryptomator-android ./gradlew clean assembleLiteRelease") @@ -326,6 +336,8 @@ platform :android do |options| desc "Dry run - check tracking added for all flavors" lane :dryRun do |options| + checkVersionCodeSet(alpha:options[:alpha], beta:options[:beta]) + gradle(task: "clean") gradle( diff --git a/fastlane/README.md b/fastlane/README.md index 72aaa68b8..1f50eec51 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -31,37 +31,13 @@ Run all the tests Deploy new version to Google Play and APK Store options: beta:false (default) -### android deployToPlaystore +### android checkVersionCodeSet ```sh -[bundle exec] fastlane android deployToPlaystore +[bundle exec] fastlane android checkVersionCodeSet ``` -Deploy new version to Play Store -### android deployToServer - -```sh -[bundle exec] fastlane android deployToServer -``` - -Deploy new version to server - -### android deployToFDroid - -```sh -[bundle exec] fastlane android deployToFDroid -``` - -Deploy new version to F-Droid - -### android deployLite - -```sh -[bundle exec] fastlane android deployLite -``` - -Deploy new lite version ### android checkTrackingAddedInDependencyUsingIzzyScript From 6a7653b2241a28eeac9f785096485d2b0951bbe6 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 13 Apr 2023 13:17:06 +0200 Subject: [PATCH 09/13] Add lite flavor to the variants screen again --- .../src/main/res/layout/activity_cryptomator_variants.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/presentation/src/main/res/layout/activity_cryptomator_variants.xml b/presentation/src/main/res/layout/activity_cryptomator_variants.xml index f69028e33..20aa63398 100644 --- a/presentation/src/main/res/layout/activity_cryptomator_variants.xml +++ b/presentation/src/main/res/layout/activity_cryptomator_variants.xml @@ -97,8 +97,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/global_padding" - android:paddingBottom="16dp" - android:visibility="gone"> + android:paddingBottom="16dp"> Date: Thu, 13 Apr 2023 13:25:20 +0200 Subject: [PATCH 10/13] New Crowdin updates (#487) New translations strings.xml (Belarusian, Chinese Traditional Hong Kong, Chinese Simplified, Chinese Traditional, Danish, Dutch, French, German, Greek, Hebrew, Italian, Japanese, Korean, Norwegian Bokmal, Polish, Portuguese, Russian, Spanish, Swahili Tanzania, Swedish, Turkish) --- .../src/main/res/values-be-rBY/strings.xml | 14 ++++++ .../src/main/res/values-da-rDK/strings.xml | 1 + .../src/main/res/values-de-rDE/strings.xml | 9 ++-- .../src/main/res/values-el-rGR/strings.xml | 1 + .../src/main/res/values-es-rES/strings.xml | 19 +++---- .../src/main/res/values-fr-rFR/strings.xml | 1 + .../src/main/res/values-it-rIT/strings.xml | 1 + .../src/main/res/values-iw-rIL/strings.xml | 1 + .../src/main/res/values-ja-rJP/strings.xml | 1 + .../src/main/res/values-ko-rKR/strings.xml | 38 ++++++++++++++ .../src/main/res/values-nb-rNO/strings.xml | 1 + .../src/main/res/values-nl-rNL/strings.xml | 1 + .../src/main/res/values-pl-rPL/strings.xml | 1 + .../src/main/res/values-pt-rPT/strings.xml | 50 +++++++++++++++++++ .../src/main/res/values-ru-rRU/strings.xml | 1 + .../src/main/res/values-sv-rSE/strings.xml | 1 + .../src/main/res/values-sw-rTZ/strings.xml | 1 + .../src/main/res/values-tr-rTR/strings.xml | 1 + .../src/main/res/values-zh-rCN/strings.xml | 9 ++-- .../src/main/res/values-zh-rHK/strings.xml | 1 + .../src/main/res/values-zh-rTW/strings.xml | 1 + 21 files changed, 137 insertions(+), 17 deletions(-) diff --git a/presentation/src/main/res/values-be-rBY/strings.xml b/presentation/src/main/res/values-be-rBY/strings.xml index da21f92b7..6d5bcf37c 100644 --- a/presentation/src/main/res/values-be-rBY/strings.xml +++ b/presentation/src/main/res/values-be-rBY/strings.xml @@ -33,9 +33,22 @@ Чытаць далей + Стварыць новую скарбніцу + Дадаць існуючую скрабніцу Выдаліць + Націсні тут, каб стварыць новую скрабніцу + Пароль паспяхова зменены Скарбніца + Абяры файл masterkey + Размясціць тут + Імя скрабніцы: %1$s + Перамясціць + Пустая тэчка + Абагуліць з + Абяры месцазнаходжанне + Абраць + Няма што абагуліць Абагуліць Пераназваць Рэдагаваць @@ -46,6 +59,7 @@ Вылучыць Вылучыць усё + Паспяхова захавана тэкст файл diff --git a/presentation/src/main/res/values-da-rDK/strings.xml b/presentation/src/main/res/values-da-rDK/strings.xml index c19b3ce92..ccc22b7f3 100644 --- a/presentation/src/main/res/values-da-rDK/strings.xml +++ b/presentation/src/main/res/values-da-rDK/strings.xml @@ -348,6 +348,7 @@ Hvis du har til hensigt at tilføje en ny pCloud-konto, skal du trykke på denne Url www.pcloud.com, logge ud af den aktuelle konto og tryk igen på \'+\' i denne app for at oprette en ny cloud-forbindelse. Cryptomator skal bruge lageradgang for at tilgå lokale bokse Cryptomator har brug for lageradgang for at kunne uploade fotos automatisk + Cryptomator har brug for notifikationstilladelser for at vise f.eks. boksstatus diff --git a/presentation/src/main/res/values-de-rDE/strings.xml b/presentation/src/main/res/values-de-rDE/strings.xml index 361dfb09e..82fd6c0b5 100644 --- a/presentation/src/main/res/values-de-rDE/strings.xml +++ b/presentation/src/main/res/values-de-rDE/strings.xml @@ -10,7 +10,7 @@ Falsches Passwort Die Datei oder der Ordner existiert bereits. Tresorversion %1$s wird nicht unterstützt. Dieser Tresor wurde mit einer älteren oder neueren Version von Cryptomator erstellt. - %1$s -Datei fehlt in Ihrem Tresorordner. Stellen Sie sicher, dass diese Datei in Ihrem Tresorordner in der Cloud existiert. + Datei %1$s fehlt in Ihrem Tresorordner. Stellen Sie sicher, dass diese Datei in Ihrem Tresorordner in der Cloud existiert. Tresor existiert bereits. Datei wurde nicht gefunden. Tresor wurde gesperrt. @@ -29,7 +29,7 @@ Google-Play-Dienste nicht installiert Biometrischer Login abgebrochen Die in %1$s angegebene Version ist nicht identisch mit der Version in %2$s - %1$s stimmt nicht mit %2$s überein + %1$s passt nicht zu diesem %2$s Allgemeiner Fehler beim Laden der Tresorkonfiguration Lokale Datei ist nach dem Zurückwechseln zu Cryptomator nicht mehr vorhanden. Mögliche Änderungen können nicht in die Cloud übertragen werden. Bucket existiert nicht @@ -217,7 +217,7 @@ Varianten von Cryptomator Haupt-Repository von F-Droid - Ausgeschlossen weil sie API-Schlüssel benötigen. + Ausgeschlossen, weil sie API-Schlüssel benötigen. Installieren F-Droid-Repository von Cryptomator Ausgeschlossen, weil es proprietäre Abhängigkeiten enthält. @@ -312,7 +312,7 @@ Schließen Bitte Tresore für die %1s-Cloud erneut hinzufügen Während der Migration auf diese App-Version müssen wir folgende Tresore aus der App entfernen:\n%2s \n\nDiese Tresore werden nicht aus der Cloud entfernt, sondern nur aus dieser App. Entschuldigung für die Unannehmlichkeiten. Füge diese Tresore bitte erneut hinzu, um weiter mit ihnen zu arbeiten. - Tresor ist Wurzelverzeichnis der Cloud-Verbindung + Tresor ist das Wurzelverzeichnis der Cloud-Verbindung Erstelle eine neue Cloud-Verbindung, wo du mindestens den übergeordneten Ordner dieses Tresors als Wurzelverzeichnis auswählst, um diesen Tresor hinzuzufügen. Dies ist eine Sicherheitsfunktion, die andere Anwendungen daran hindert, Nutzer zu ungewollten Aktionen zu verleiten.\n\nDurch Deaktivieren bestätigst du, dass du dir der Risiken bewusst bist. Bist du dir sicher, dass du die Cloud-Verbindung entfernen möchtest? @@ -348,6 +348,7 @@ Falls du ein neues pCloud-Konto hinzufügen wolltest, klicke auf diese Url www.pcloud.com, melde dich vom aktuellen Konto ab und klicke in dieser App erneut auf das „+“, um eine neue Cloud-Verbindung zu erstellen. Cryptomator benötigt Speicherzugriff, um lokale Tresore nutzen zu können Cryptomator benötigt Zugriff auf den Speicher um den automatischen Foto-Upload zu nutzen + Cryptomator benötigt Benachrichtigungsberechtigungen, beispielsweise zum Anzeigen des Tresorstatus diff --git a/presentation/src/main/res/values-el-rGR/strings.xml b/presentation/src/main/res/values-el-rGR/strings.xml index 492b0653b..3a2557cbb 100644 --- a/presentation/src/main/res/values-el-rGR/strings.xml +++ b/presentation/src/main/res/values-el-rGR/strings.xml @@ -348,6 +348,7 @@ Αν σκοπεύατε να προσθέσετε ένα νέο λογαριασμό pCloud, πατήστε σε αυτό το url www.pcloud. om, αποσυνδεθείτε από τον τρέχοντα λογαριασμό και πατήστε ξανά στο \'+\' σε αυτήν την εφαρμογή για να δημιουργήσετε μια νέα σύνδεση στο cloud. Το Cryptomator χρειάζεται πρόσβαση στον αποθηκευτικό χώρο για τη χρήση τοπικών κρυπτών Το Cryptomator χρειάζεται πρόσβαση στον αποθηκευτικό χώρο για να χρησιμοποιηθεί η αυτόματη μεταφόρτωση φωτογραφιών + Το Cryptomator χρειάζεται δικαιώματα ειδοποίησης για να εμφανίσει για παράδειγμα την κατάσταση κρύπτης diff --git a/presentation/src/main/res/values-es-rES/strings.xml b/presentation/src/main/res/values-es-rES/strings.xml index 3dca144de..f0a66b874 100644 --- a/presentation/src/main/res/values-es-rES/strings.xml +++ b/presentation/src/main/res/values-es-rES/strings.xml @@ -32,7 +32,7 @@ %1$s no coincide con este %2$s Error general al cargar la configuración de la bóveda El archivo local ya no está presente después de volver a Cryptomator. Los posibles cambios no se pueden propagar a la nube. - No hay tal cubeta + El bucket no existe Ubicación personalizada Masterkey aún no soportada Error al comunicarse con la aplicación F-Droid. ¿No está instalada? @@ -47,7 +47,7 @@ Configuración Buscar Anterior - Continuar + Siguiente Ordenar A - Z Z - A @@ -134,8 +134,8 @@ Nombre para mostrar Clave de acceso Clave secreta - Cubeta existente - Punto final + Bucket existente + Punto de enlace Región El nombre para mostrar no puede estar vacío La clave de acceso no puede estar vacía @@ -238,7 +238,7 @@ Las contraseñas nuevas no coinciden. Bóveda %1$s no encontrada - La bóveda ha sido renombrada, movida o eliminada. Eliminar esta bóveda de la lista y añadirla de nuevo para continuar. ¿Eliminar ahora? + La bóveda ha sido renombrada, movida o eliminada. Elimine esta bóveda de la lista y añádala de nuevo para continuar. ¿Eliminar ahora? Eliminar El archivo ya existe Reemplazar @@ -291,7 +291,7 @@ Detalles Esto podría ser un riesgo para la seguridad. Sé lo que estoy haciendo. Desactivar optimizaciones de la batería - Para recuperar imágenes y videos nuevos sin ejecutar en segundo plano, tenemos que dejar de usar las optimizaciones de la batería. Pero no se preocupe, %1$s no consume mucha energía.\n\nPara aplicarlo, cambie \'No optimizado\' a \'Todas las aplicaciones\', seleccione %1$s y elija \'No optimizar\' después de pulsar \'%2$s\' en esta ventana. + Para recuperar imágenes y videos nuevos sin ejecutar en segundo plano, es necesario desactivar las optimizaciones de la batería. Pero no se preocupe, %1$s no consume mucha energía.\n\nPara aplicarlo, cambie \'No optimizado\' a \'Todas las aplicaciones\', seleccione %1$s y elija \'No optimizar\' después de pulsar \'%2$s\' en esta ventana. ¿No volver a preguntar? El uso de HTTP no es seguro. Recomendamos usar HTTPS en su lugar. Si conoce los riesgos puede seguir usando HTTP. Cambiar a HTTPS @@ -348,6 +348,7 @@ Si desea añadir una cuenta pCloud nueva, pulse en esta url www.pcloud.com, cierre la sesión de la cuenta actual y pulse de nuevo en \'+\' de esta aplicación para crear una conexión nueva en la nube. Cryptomator necesita acceso de almacenamiento para usar bóvedas locales Cryptomator necesita acceso de almacenamiento para cargar fotos automáticamente + Cryptomator necesita permisos de notificación para mostrar el estado de la bóveda por ejemplo @@ -379,7 +380,7 @@ No se pueden cargar archivos automáticamente Bóvedas desbloqueadas: %1$d - Autobloquear en %1$s + Bloqueo automático en %1$s Bloquear todas Cancelar carga Carga automática de fotos en ejecución @@ -396,14 +397,14 @@ Última versión instalada Autenticando… Caché - Almacene en caché los archivos a los que se accedió recientemente cifrados localmente en el dispositivo para su posterior reutilización cuando se vuelva a abrir + Almacene en caché los archivos cifrados localmente a los que accedió recientemente en el dispositivo para su posterior reutilización cuando se vuelvan a abrir Tamaño total de la caché Vaciar la caché Los cambios se aplicarán en el próximo reinicio de la aplicación Registrado para %1$s Actualizar intervalo de verificación - Comprobar atualizaciones + Comprobar actualizaciones Última ejecución %1$s Tamaño de la caché por nube diff --git a/presentation/src/main/res/values-fr-rFR/strings.xml b/presentation/src/main/res/values-fr-rFR/strings.xml index 317728b7c..c52966efd 100644 --- a/presentation/src/main/res/values-fr-rFR/strings.xml +++ b/presentation/src/main/res/values-fr-rFR/strings.xml @@ -348,6 +348,7 @@ Si vous avez l\'intention d\'ajouter un nouveau compte pCloud, cliquez sur cette url www.pcloud.com, déconnectez-vous du compte actuel et cliquez à nouveau sur le \'+\' dans cette application pour créer une nouvelle connexion pCloud. Cryptomator a besoin de l\'accès au stockage pour utiliser les coffres locaux Cryptomator a besoin de l\'accès au stockage pour effectuer le téléversement automatique de photos + Cryptomator requiert des permissions de notification pour afficher le statut du coffre, par exemple diff --git a/presentation/src/main/res/values-it-rIT/strings.xml b/presentation/src/main/res/values-it-rIT/strings.xml index 23e76e6af..729d29fe8 100644 --- a/presentation/src/main/res/values-it-rIT/strings.xml +++ b/presentation/src/main/res/values-it-rIT/strings.xml @@ -348,6 +348,7 @@ Se hai intenzione di aggiungere un nuovo account pCloud, tocca questo url www.pcloud. om, esci dall\'account corrente e tocca di nuovo il \'+\' in questa app per creare una nuova connessione cloud. Cryptomator ha bisogno dell\'accesso all\'archivio per utilizzare le cassaforti locali Cryptomator ha bisogno di accesso all\'archivio per utilizzare il caricamento automatico delle foto + Cryptomator necessita dei permessi di notifica per visualizzare lo stato della cassaforte ad esempio diff --git a/presentation/src/main/res/values-iw-rIL/strings.xml b/presentation/src/main/res/values-iw-rIL/strings.xml index d51b6a710..092fabc6a 100644 --- a/presentation/src/main/res/values-iw-rIL/strings.xml +++ b/presentation/src/main/res/values-iw-rIL/strings.xml @@ -350,6 +350,7 @@ אם ברצונך להוסיף חשבון pCloud חדש, לחץ על הקישור www.pcloud.com, התנתק מהחשבון הנוכחי ולחץ על ה \'+\' בישום זה ליצירת חיבור ענן חדש. Cryptomator זקוק להרשאת גישה לזיכרון המכשיר כדי להשתמש בכספת מקומית Cryptomator זקוק להרשאת גישה לזיכרון המכשיר כדי לבצע העלאה אוטומטית של תמונות + Cryptomator צריך הרשאה לשליחת התראות על מנת, לדוגמה, להציג לכם את מצב הכספת diff --git a/presentation/src/main/res/values-ja-rJP/strings.xml b/presentation/src/main/res/values-ja-rJP/strings.xml index 34993e5be..615684d2e 100644 --- a/presentation/src/main/res/values-ja-rJP/strings.xml +++ b/presentation/src/main/res/values-ja-rJP/strings.xml @@ -347,6 +347,7 @@ 新しいpCloudのアカウントを追加する場合は、このURLwww.pcloud.comをタップし、現在のアカウントからログアウトして、このアプリの「+」をもう一度タップして、新しいクラウド接続を作成してください。 ローカルの金庫を使用するには、Cryptomator がストレージにアクセスする許可が必要です 自動的に画像をアップロードするには、Cryptomator がストレージにアクセスする許可が必要です + 金庫の状態などを表示するには、Cryptomator に通知権限が必要です。 diff --git a/presentation/src/main/res/values-ko-rKR/strings.xml b/presentation/src/main/res/values-ko-rKR/strings.xml index ded7d9a62..9f6dae088 100644 --- a/presentation/src/main/res/values-ko-rKR/strings.xml +++ b/presentation/src/main/res/values-ko-rKR/strings.xml @@ -9,6 +9,8 @@ 네트워크가 연결되어 있지 않습니다. 잘못된 비밀번호입니다. 파일 또는 폴더가 이미 존재합니다. + %1$s 버전의 Vault는 지원되지 않습니다. 해당 vault는 타 버전의 Cryptomator로 생성되었습니다. + 해당 vault 폴더 내에 %1$s 파일이 없습니다. Vault 폴더 안에 해당 파일이 있는지 다시 확인해주세요. Vault가 이미 존재합니다. 파일이 존재하지 않습니다. Vault가 잠겼습니다. @@ -27,6 +29,8 @@ 생체 인증 취소됨 %1$s에 기록된 버전이 %2$s에 기록된 버전과 다릅니다 Vault 설정을 불러오는 중 에러 발생 + 해당 버킷을 찾을 수 없습니다. + F-Droid 앱을 찾을 수 없습니다. 앱을 설치했는지 확인해주세요. 로컬 저장소 @@ -47,16 +51,20 @@ 등록순 큰 파일순 작은 파일순 + 자세히 알아보기 + 저장소가 목록에 없나요? Cryptomator에 추가하기 새 Vault 생성 기존 Vault 추가 제거 + 여기를 눌러 새 Vault를 생성하세요 비밀번호 변경 성공 Vault 마스터키 파일 선택 + 여기에 만들기 Vault 이름: %1$s 이동 빈 폴더 @@ -90,6 +98,7 @@ 성공적으로 저장되었습니다 + %1$s을 저장할 위치 선택 텍스트 파일 파일 @@ -100,6 +109,7 @@ 클라우드 서비스 위치 선택 + WebDAV가 지원되지 않는 서버입니다 URL 사용자명 @@ -140,6 +150,7 @@ 생체 인증 생체 인증 활성화 얼굴인식 잠금해제 적용 (가능한 경우) + 타 앱이 화면을 가릴 경우 Cryptomator 비활성화 스크린샷 차단 최근 사용 목록과 앱 내부에서 스크린샷 차단 검색 @@ -153,6 +164,7 @@ 사진 자동 업로드 업로드 할 Vault 선택 활성화 + 바로 업로드하기 Vault가 잠금 해제되어 있을 때 바로 업로드하기 Wi-Fi 상태에서만 업로드 동영상 업로드 @@ -173,6 +185,7 @@ 잠금해제 가속 잠금해제유지 + OneDrive 연결 WebDAV 연결 pCloud 연결 S3 연결 @@ -183,6 +196,12 @@ pCloud 자격증명 업데이트 + 주 F-Droid 리포지토리 + API키가 필요하므로 제외되었습니다. + 설치 + Cryptomator F-Droid 리포지토리 + 추가 + 웹사이트 취소 잠금해제 @@ -193,10 +212,12 @@ 새 비밀번호는 비워둘 수 없습니다 비밀번호가 일치하지 않습니다 + Vault %1$s를 찾을 수 없음 이 Vault는 이름이 변경됐거나, 경로가 옮겨졌거나, 삭제되었습니다. 이 Vault를 목록에서 삭제하고 다시 추가하여 계속 진행하세요. 지금 삭제할까요? 제거 파일이 이미 존재합니다 교체 + \'%1$s\' 파일이 이미 존재합니다. 중복 파일 건너뛰기 모두 바꾸기 중복 파일 덮어쓰기 @@ -215,9 +236,11 @@ 저장되지 않은 변경사항이 있습니다 저장하지 않고 종료하시겠습니까? 취소 + 파일명 text.txt 이 Vault를 정말로 제거하시겠습니까? … 업로드 중 + 내보내는중 (%1$d/%2$d) 잠시 기다려주세요… 폴더 만드는 중… 텍스트 파일 만드는 중… @@ -266,12 +289,16 @@ 다운로드중 최신 버전의 Cryptomator 다운로드중 이전 + 더 띄울 사진들이 없습니다. \'%1$s\' 자격증명 업데이트됨 + 새 pCloud 계정을 추가하려면 이 링크 www.pcloud.com를 누르고, 현재 계정에서 로그아웃한 뒤 여기에서 \'+\'를 다시 눌러서 추가해주세요. Cryptomator에서 로컬 Vault에 접근하기 위해 저장소 접근 권한이 필요합니다. Cryptomator에서 자동으로 사진을 업로드하기 위해 저장소 접근 권한이 필요합니다. + Cryptomator는 vault 상태 표시등의 이유로 알림 귄한이 필요합니다 + 0 kB 바이트 kB MB @@ -303,9 +330,18 @@ 모두 잠그기 업로드 취소 자동 사진 업로드중 + 업로드중 %1d/%2d + 사진 자동 업로드 완료 + 사진 %1$d개를 vault로 업로드함 + 자동 사진 업로드 실패 + 업로드 중에 오류 발생 + 선택한 폴더로 더이상 업로드할 수 없습니다. 설정에서 새로 선택해주세요. + 업로드중에 vault가 잠겼습니다. 해당 vault를 다시 열어주세요. + 자동 업로드를 할 vault가 더이상 존재하지 않습니다. 쓰기 가능한 파일 열림 파일 수정이 완료될 때까지 Vault가 계속 잠금해제됩니다 최신 버전 설치됨 + 로그인중… 캐시 최근의 사용한 암호화된 파일을 기기에 저장한 후 나중에 파일을 다시 열 때 재사용합니다 총 캐시 크기 @@ -318,6 +354,8 @@ 마지막 확인 %1$s 클라우드당 캐시 크기 + 1분 + 2분 5분 10분 잠그지 않음 diff --git a/presentation/src/main/res/values-nb-rNO/strings.xml b/presentation/src/main/res/values-nb-rNO/strings.xml index 26edec7df..593df4296 100644 --- a/presentation/src/main/res/values-nb-rNO/strings.xml +++ b/presentation/src/main/res/values-nb-rNO/strings.xml @@ -348,6 +348,7 @@ Dersom du akter å legge til en ny pCloud-konto, trykk på denne URL-en www.pcloud.com, logg ut fra den nåværende kontoen og trykk på «+» i denne app\'en for å opprette en ny nettskyforbindelse. Cryptomator trenger lagringstilgang for å bruke lokale hvelv Cryptomator trenger lagringstilgang for å bruke automatisk bildeopplasting + Cryptomator trenger varseltillatelser for å for eksempel vise hvelvets status diff --git a/presentation/src/main/res/values-nl-rNL/strings.xml b/presentation/src/main/res/values-nl-rNL/strings.xml index 6c0fca665..9477c0eaf 100644 --- a/presentation/src/main/res/values-nl-rNL/strings.xml +++ b/presentation/src/main/res/values-nl-rNL/strings.xml @@ -348,6 +348,7 @@ Als je een nieuwe pCloud account probeerde toe te voegen, klik dan op deze url www.pcloud. om, log de huidige account uit en klik opnieuw op de \'+\' in deze app om een nieuwe cloud verbinding te maken. Cryptomator heeft toegang tot opslag nodig om lokale kluizen te kunnen gebruiken Cryptomator heeft toegang tot opslag nodig om automatisch uploaden van foto\'s te kunnen gebruiken + Cryptomator heeft notificatie toegang nodig om een voorbeeld van de kluis status weer te geven diff --git a/presentation/src/main/res/values-pl-rPL/strings.xml b/presentation/src/main/res/values-pl-rPL/strings.xml index b842b582b..d557ddfba 100644 --- a/presentation/src/main/res/values-pl-rPL/strings.xml +++ b/presentation/src/main/res/values-pl-rPL/strings.xml @@ -350,6 +350,7 @@ Jeśli chcesz dodać nowe konto pCloud, przejdź na podany adres www.pcloud.com, wyloguj się z aktualnie zalogowanego konta i ponownie kliknij na \'+\' aby utworzyć nowe połączenie z chmurą. Cryptomator potrzebuje dostępu do pamięci lokalnej, aby uzyskać dostęp do sejfu Cryptomator potrzebuje dostępu do pamięci lokalnej, aby automatycznie przesyłać zdjęcia + Cryptomator potrzebuje uprawnień do powiadomień, aby wyświetlić np. status sejfu diff --git a/presentation/src/main/res/values-pt-rPT/strings.xml b/presentation/src/main/res/values-pt-rPT/strings.xml index 717bcbf29..5b7b3d33c 100644 --- a/presentation/src/main/res/values-pt-rPT/strings.xml +++ b/presentation/src/main/res/values-pt-rPT/strings.xml @@ -33,6 +33,7 @@ Erro geral ao carregar a configuração do cofre O ficheiro local não está presente ao voltar para Cryptomator. Novas alterações não serão guardadas na nuvem. Bucket inexistente + A localização de Chave-Mestra personalizada ainda não é suportada Falha em comunicar-se com a aplicação F-Droid. Não está instalado? @@ -55,6 +56,7 @@ Maiores primeiro Menores primeiro Ler mais + Nuvem não está na lista? Adicionar ao Cryptomator @@ -65,18 +67,25 @@ Palavra-passe alterada com sucesso Cofre + Selecionar ficheiro MasterKey + Colocar aqui Nome do cofre: %1$s Mover Pasta vazia + modificado %1$s atrás Partilhar com + Escolher o destino Escolher Nada a partilhar Adicionar a %1$s + Criar pasta + Criar documento de texto Carregar ficheiros Ficheiros Ficheiro Exportado Ficheiros Exportados Nada para exportar + Falha a criar o diretório de transferência Compartilhar Renomear Editar @@ -84,21 +93,61 @@ Apagar Abrir com… Selecionar itens + %1$d selecionado(s) + Selecionar + Selecionar tudo + Atualizar + Sem ligação + Tentar novamente + Guardado com sucesso + Guardar %1$s em… texto ficheiro ficheiros + Os nomes de ficheiros têm de ser únicos, por favor renomeia os duplicados. + Local de armazenamento Salvar + Encriptação concluída + Serviços na nuvem + Escolher uma localização + Toque aqui para adicionar localizações + O servidor não parece ser compatível com WebDAV Não foi encontrado nenhum gestor de arquivos compatível com a abertura de diretórios + URL + Nome de utilizador Senha + Conectar + O URL (endereço) não pode estar vazio. + O URL (endereço) é inválido. + O nome de utilizador não pode estar vazio. + A palavra-passe não pode estar vazia. + Nome para exibição + Chave de acesso + Chave Secreta + Compartimento existente + Região + O Nome não pode ser vazio + Chave de acesso não pode estar vazia + A chave secreta não pode estar vazia + O nome do cofre não pode estar vazio. + Nome do cofre + Criar + Definir palavra-passe + A senha não coincide com a senha digitada. Ok + IMPORTANTE: Se você se esquecer da palavra-passe, não há forma de recuperar os seus dados. + Reescreva a palavra-passe + Muito fraca para criar um cofre + Fraca + Razoável Forte Geral @@ -124,6 +173,7 @@ + minutos Autenticação… diff --git a/presentation/src/main/res/values-ru-rRU/strings.xml b/presentation/src/main/res/values-ru-rRU/strings.xml index 477f3ed50..8f0cc6216 100644 --- a/presentation/src/main/res/values-ru-rRU/strings.xml +++ b/presentation/src/main/res/values-ru-rRU/strings.xml @@ -350,6 +350,7 @@ Если вы намеревались добавить новую учётную запись pCloud, нажмите на этот URL www.pcloud.com, выйдите из текущей учётной записи и снова нажмите \'+\' в этом приложении, чтобы создать новое облачное подключение. Для использования локальных хранилищ необходим доступ к месту хранения Для автозагрузки фото у Cryptomator должен быть доступ к месту хранения + Для отображения состояния хранилища Cryptomator требуется разрешение на уведомление diff --git a/presentation/src/main/res/values-sv-rSE/strings.xml b/presentation/src/main/res/values-sv-rSE/strings.xml index 2e830b8ab..8701c2630 100644 --- a/presentation/src/main/res/values-sv-rSE/strings.xml +++ b/presentation/src/main/res/values-sv-rSE/strings.xml @@ -348,6 +348,7 @@ Om du avsåg att lägga till ett nytt pCloud-konto, tryck på denna url www.pcloud.com, logga ut från det nuvarande kontot och tryck igen på \'+\' i den här appen för att skapa en ny molnanslutning. Cryptomator behöver åtkomst till lagringsutrymmet för att använda lokala valv Cryptomator behöver åtkomst till lagringsutrymmet för att kunna använda automatisk uppladdning av foton + Cryptomator behöver aviseringsbehörigheter för att till exempel visa valvstatus diff --git a/presentation/src/main/res/values-sw-rTZ/strings.xml b/presentation/src/main/res/values-sw-rTZ/strings.xml index 9e132b231..1f80e177e 100644 --- a/presentation/src/main/res/values-sw-rTZ/strings.xml +++ b/presentation/src/main/res/values-sw-rTZ/strings.xml @@ -344,6 +344,7 @@ Ikiwa ulitaka kuongeza akaunti mpya ya pCloud, gusa url hii www.pcloud.com, ondoka kwenye akaunti ya sasa na uguse tena \'+\' katika programu hii ili kuunda muunganisho mpya wa wingu. Cryptomator inahitaji ufikiaji wa kuhifadhi ili kutumia kuba za ndani Cryptomator inahitaji ufikiaji wa kuhifadhi ili kutumia upakiaji wa picha kiotomatiki + Cryptomator inahitaji ruhusa za taarifa ili kuonyesha hali ya kuba kwa mfano diff --git a/presentation/src/main/res/values-tr-rTR/strings.xml b/presentation/src/main/res/values-tr-rTR/strings.xml index 63eb9f44b..28e2fd1ba 100644 --- a/presentation/src/main/res/values-tr-rTR/strings.xml +++ b/presentation/src/main/res/values-tr-rTR/strings.xml @@ -348,6 +348,7 @@ Yeni bir pCloud hesabı eklemeyi düşünüyorsanız, bu url www.pcloud.com dokunun, mevcut hesaptan çıkın ve yeni bir bulut bağlantısı oluşturmak için \'+\'. tekrar dokunun. Cryptomator\'un yerel kasaları kullanmak için depolama erişimine ihtiyacı var Cryptomator\'un otomatik fotoğraf yüklemesi için depolama erişimine ihtiyacı var + Cryptomator, örneğin kasa durumunu görüntülemek için bildirim izinlerine ihtiyaç duyar diff --git a/presentation/src/main/res/values-zh-rCN/strings.xml b/presentation/src/main/res/values-zh-rCN/strings.xml index 4d7f69bd8..df37db2a2 100644 --- a/presentation/src/main/res/values-zh-rCN/strings.xml +++ b/presentation/src/main/res/values-zh-rCN/strings.xml @@ -51,10 +51,10 @@ 排序 A - Z Z - A - 日期(升序) - 日期(降序) - 大小(降序) - 大小(升序) + 新文件优先 + 旧文件优先 + 大文件优先 + 小文件优先 了解更多 Cloud不在列表中? @@ -347,6 +347,7 @@ 如果您打算添加一个新的 pCloud 账户,请点击此链接 www.pcloud.com,登出当前账户,然后点击此应用中的 \'+\' 来创建新的云连接 Cryptomator 需要存储权限以使用本地保险库 Cryptomator 需要存储权限以自动上传图片 + Cryptomator 需要通知权限以显示保险库状态等 diff --git a/presentation/src/main/res/values-zh-rHK/strings.xml b/presentation/src/main/res/values-zh-rHK/strings.xml index 34ec0fa20..49ece676a 100644 --- a/presentation/src/main/res/values-zh-rHK/strings.xml +++ b/presentation/src/main/res/values-zh-rHK/strings.xml @@ -347,6 +347,7 @@ 如果您想要新增一個 pCloud 帳戶,請在點擊此連結 www.pcloud.com 後登出目前的帳號,再點擊 App 中的「+」來建立新的雲端連結。 Cryptomator 需要儲存權限以存取本機上的加密庫 Cryptomator 需要儲存權限以便開啟自動圖片上傳。 + Cryptomator 需要通知權限以顯示加密檔案庫的狀態等。 diff --git a/presentation/src/main/res/values-zh-rTW/strings.xml b/presentation/src/main/res/values-zh-rTW/strings.xml index f2db1e47a..1b91cd93a 100644 --- a/presentation/src/main/res/values-zh-rTW/strings.xml +++ b/presentation/src/main/res/values-zh-rTW/strings.xml @@ -347,6 +347,7 @@ 如果您想要新增一個 pCloud 帳戶,請在點擊此連結 www.pcloud.com 後登出目前的帳號,並重新點擊本程式中的「+」來建立一個新的雲端連結。 Cryptomator 需要存儲訪問權限用以使用本地加密檔案庫 Cryptomator 需要存儲權限以便開啟自動圖片上傳 + Cryptomator 需要通知權限以顯示加密檔案庫的狀態等。 From e25c1e23aefc4780074903954a343bf8fc6b13ae Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 13 Apr 2023 16:36:41 +0200 Subject: [PATCH 11/13] Update release note and adjust Fastfile to the new Flavors --- fastlane/Fastfile | 45 ++++++++++++++++--- fastlane/README.md | 18 +++++++- .../android/de-DE/changelogs/default.txt | 1 - .../android/en-US/changelogs/default.txt | 1 - .../android/fr-FR/changelogs/.gitignore | 4 -- fastlane/release-notes-de.txt | 3 ++ fastlane/release-notes-en.txt | 3 ++ fastlane/release-notes.html | 4 +- .../android/de-DE/changelogs/default.txt | 6 +-- .../android/en-US/changelogs/default.txt | 6 +-- .../android/fr-FR/changelogs/default.txt | 3 ++ .../android/de-DE/changelogs/default.txt | 6 +-- .../android/en-US/changelogs/default.txt | 6 +-- .../android/fr-FR/changelogs/default.txt | 3 ++ .../android/de-DE/changelogs/default.txt | 6 +-- .../android/en-US/changelogs/default.txt | 6 +-- .../android/fr-FR/changelogs/default.txt | 3 ++ 17 files changed, 91 insertions(+), 33 deletions(-) delete mode 100644 fastlane/metadata/android/de-DE/changelogs/default.txt delete mode 100644 fastlane/metadata/android/en-US/changelogs/default.txt delete mode 100644 fastlane/metadata/android/fr-FR/changelogs/.gitignore create mode 100644 fastlane/release-notes-de.txt create mode 100644 fastlane/release-notes-en.txt create mode 100644 src/fdroid/fastlane/metadata/android/fr-FR/changelogs/default.txt create mode 100644 src/lite/fastlane/metadata/android/fr-FR/changelogs/default.txt create mode 100644 src/playstore/fastlane/metadata/android/fr-FR/changelogs/default.txt diff --git a/fastlane/Fastfile b/fastlane/Fastfile index c410658f2..c14dadf31 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -12,7 +12,13 @@ version = get_version_name( ext_constant_name:"androidVersionName") version = version.delete "'" -release_note_path_en = "metadata/android/en-US/changelogs/default.txt" +playstoreMetadataDir = "../src/playstore/fastlane/metadata/android/" +fdroidMetadataDir = "../src/fdroid/fastlane/metadata/android/" +liteMetadataDir = "../src/lite/fastlane/metadata/android/" +changeLogSubPath = "changelogs/default.txt" + +releaseNotePathEn = "release-notes-en.txt" +releaseNotePathDe = "release-notes-de.txt" platform :android do |options| @@ -23,8 +29,7 @@ platform :android do |options| desc "Deploy new version to Google Play and APK Store options: beta:false (default)" lane :deploy do |options| - # use english-change-log for french language too - FileUtils.cp(release_note_path_en, "metadata/android/fr-FR/changelogs/default.txt") + checkMetadata(alpha:options[:alpha], beta:options[:beta]) checkVersionCodeSet(alpha:options[:alpha], beta:options[:beta]) @@ -38,11 +43,35 @@ platform :android do |options| default_payloads: [], # reduce the notification to the minimum message: ":rocket: Successfully deployed #{version} with code #{build} :cryptomator:", payload: { - "Changes" => File.read(release_note_path_en) + "Changes" => File.read(releaseNotePathEn) } ) end + desc "Check Metadata" + lane :checkMetadata do |options| + puts "Make sure you run and commited updateMetadata before tagging and releasing!!!" + puts "If check failed, run updateMetadata, commit/tag it and restart when finished" + + metadataDirs = [playstoreMetadataDir, fdroidMetadataDir, liteMetadataDir] + for metadataDir in metadataDirs do + sh("diff -s #{releaseNotePathDe} #{metadataDir}de-DE/#{changeLogSubPath} > /dev/null") + sh("diff -s #{releaseNotePathEn} #{metadataDir}en-US/#{changeLogSubPath} > /dev/null") + sh("diff -s #{releaseNotePathEn} #{metadataDir}fr-FR/#{changeLogSubPath} > /dev/null") + end + end + + desc "Update Metadata" + lane :updateMetadata do |options| + metadataDirs = [playstoreMetadataDir, fdroidMetadataDir, liteMetadataDir] + for metadataDir in metadataDirs do + FileUtils.cp(releaseNotePathDe, "#{metadataDir}de-DE/#{changeLogSubPath}") + FileUtils.cp(releaseNotePathEn, "#{metadataDir}en-US/#{changeLogSubPath}") + FileUtils.cp(releaseNotePathEn, "#{metadataDir}fr-FR/#{changeLogSubPath}") + end + end + + desc "Check if the version code was set" lane :checkVersionCodeSet do |options| puts "Make sure you adjusted androidVersionName and set androidVersionCode to #{build} before building and tagging!!!" puts "If check failed, adjust/commit/tag it and restart when finished" @@ -91,7 +120,7 @@ platform :android do |options| skip_upload_metadata: false, skip_upload_images: true, skip_upload_screenshots: true, - metadata_path: "fastlane/metadata/android" + metadata_path: playstoreMetadataDir ) FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}_playstore_signed.apk") @@ -209,7 +238,7 @@ platform :android do |options| FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "repo/Cryptomator.apk") - sh("cp -r metadata/android/ metadata/org.cryptomator/") + sh("cp -r #{fdroidMetadataDir} metadata/org.cryptomator/") FileUtils.cp("metadata/org.cryptomator/en-US/changelogs/default.txt", "metadata/org.cryptomator/en-US/changelogs/#{version}.txt") FileUtils.cp("metadata/org.cryptomator/de-DE/changelogs/default.txt", "metadata/org.cryptomator/de-DE/changelogs/#{version}.txt") sh("fdroid update && fdroid rewritemeta") @@ -317,7 +346,7 @@ platform :android do |options| fdroid_apk_sha256 = Digest::SHA256.hexdigest File.read "release/Cryptomator-#{version}_fdroid_signed.apk" lite_sha256 = Digest::SHA256.hexdigest File.read "release/Cryptomator-#{version}_lite_signed.apk" - release_note = "## What's New\n\n" + File.read(release_note_path_en) + "\n\n---\n\nSHA256 Signature: `#{website_apk_sha256}`\nSHA256 Signature fdroid: `#{fdroid_apk_sha256}`\nSHA256 Signature lite: `#{lite_sha256}`\n" + release_note = "## What's New\n\n" + File.read(releaseNotePathEn) + "\n\n---\n\nSHA256 Signature: `#{website_apk_sha256}`\nSHA256 Signature fdroid: `#{fdroid_apk_sha256}`\nSHA256 Signature lite: `#{lite_sha256}`\n" puts release_note @@ -336,6 +365,8 @@ platform :android do |options| desc "Dry run - check tracking added for all flavors" lane :dryRun do |options| + checkMetadata(alpha:options[:alpha], beta:options[:beta]) + checkVersionCodeSet(alpha:options[:alpha], beta:options[:beta]) gradle(task: "clean") diff --git a/fastlane/README.md b/fastlane/README.md index 1f50eec51..e9c80e977 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -31,13 +31,29 @@ Run all the tests Deploy new version to Google Play and APK Store options: beta:false (default) +### android checkMetadata + +```sh +[bundle exec] fastlane android checkMetadata +``` + +Check Metadata + +### android updateMetadata + +```sh +[bundle exec] fastlane android updateMetadata +``` + +Update Metadata + ### android checkVersionCodeSet ```sh [bundle exec] fastlane android checkVersionCodeSet ``` - +Check if the version code was set ### android checkTrackingAddedInDependencyUsingIzzyScript diff --git a/fastlane/metadata/android/de-DE/changelogs/default.txt b/fastlane/metadata/android/de-DE/changelogs/default.txt deleted file mode 100644 index bf197f6aa..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/default.txt +++ /dev/null @@ -1 +0,0 @@ -- Problem mit Speicher- und Benachrichtigungsberechtigungen unter Android Version 13 behoben \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/default.txt b/fastlane/metadata/android/en-US/changelogs/default.txt deleted file mode 100644 index 0a1a7045f..000000000 --- a/fastlane/metadata/android/en-US/changelogs/default.txt +++ /dev/null @@ -1 +0,0 @@ -- Fixed storage and notification permissions issue on Android version 13 \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/.gitignore b/fastlane/metadata/android/fr-FR/changelogs/.gitignore deleted file mode 100644 index 5e7d2734c..000000000 --- a/fastlane/metadata/android/fr-FR/changelogs/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/fastlane/release-notes-de.txt b/fastlane/release-notes-de.txt new file mode 100644 index 000000000..11a577c44 --- /dev/null +++ b/fastlane/release-notes-de.txt @@ -0,0 +1,3 @@ +- Anpassungen zur Integration in das F-Droid Haupt-Repository abgeschlossen +- SHA-256 Fingerabdruck eines ungültigen WebDAV TLS Zertifikats wird angezeigt +- Übersetzungen aktualisiert \ No newline at end of file diff --git a/fastlane/release-notes-en.txt b/fastlane/release-notes-en.txt new file mode 100644 index 000000000..3872124d8 --- /dev/null +++ b/fastlane/release-notes-en.txt @@ -0,0 +1,3 @@ +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file diff --git a/fastlane/release-notes.html b/fastlane/release-notes.html index 6c26fba5c..7a004aa06 100644 --- a/fastlane/release-notes.html +++ b/fastlane/release-notes.html @@ -1,3 +1,5 @@
    -
  • Fixed storage and notification permissions issue on Android version 13
  • +
  • Completed customizations for integration into the F-Droid main repository
  • +
  • Show SHA-256 fingerprint of an invalid WebDAV TLS certificate
  • +
  • Update translations
\ No newline at end of file diff --git a/src/fdroid/fastlane/metadata/android/de-DE/changelogs/default.txt b/src/fdroid/fastlane/metadata/android/de-DE/changelogs/default.txt index 46552aaee..11a577c44 100644 --- a/src/fdroid/fastlane/metadata/android/de-DE/changelogs/default.txt +++ b/src/fdroid/fastlane/metadata/android/de-DE/changelogs/default.txt @@ -1,3 +1,3 @@ -- Update auf das neue Material3-Design -- Authentifizierungsfehler mit Umlauten im WebDAV-Passwort bei Verwendung der Digest-Authentifizierung behoben -- Öffnen des Kauflinks in der F-Droid- und Website-Variante behoben \ No newline at end of file +- Anpassungen zur Integration in das F-Droid Haupt-Repository abgeschlossen +- SHA-256 Fingerabdruck eines ungültigen WebDAV TLS Zertifikats wird angezeigt +- Übersetzungen aktualisiert \ No newline at end of file diff --git a/src/fdroid/fastlane/metadata/android/en-US/changelogs/default.txt b/src/fdroid/fastlane/metadata/android/en-US/changelogs/default.txt index 25cc551cc..3872124d8 100644 --- a/src/fdroid/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/src/fdroid/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1,3 +1,3 @@ -- Migrated to the new Material3 design -- Fixed umlauts in WebDAV password using digest authentication leads to authentication fail -- Fixed opening the purchase link in the F-Droid and website variant \ No newline at end of file +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file diff --git a/src/fdroid/fastlane/metadata/android/fr-FR/changelogs/default.txt b/src/fdroid/fastlane/metadata/android/fr-FR/changelogs/default.txt new file mode 100644 index 000000000..3872124d8 --- /dev/null +++ b/src/fdroid/fastlane/metadata/android/fr-FR/changelogs/default.txt @@ -0,0 +1,3 @@ +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file diff --git a/src/lite/fastlane/metadata/android/de-DE/changelogs/default.txt b/src/lite/fastlane/metadata/android/de-DE/changelogs/default.txt index 46552aaee..11a577c44 100644 --- a/src/lite/fastlane/metadata/android/de-DE/changelogs/default.txt +++ b/src/lite/fastlane/metadata/android/de-DE/changelogs/default.txt @@ -1,3 +1,3 @@ -- Update auf das neue Material3-Design -- Authentifizierungsfehler mit Umlauten im WebDAV-Passwort bei Verwendung der Digest-Authentifizierung behoben -- Öffnen des Kauflinks in der F-Droid- und Website-Variante behoben \ No newline at end of file +- Anpassungen zur Integration in das F-Droid Haupt-Repository abgeschlossen +- SHA-256 Fingerabdruck eines ungültigen WebDAV TLS Zertifikats wird angezeigt +- Übersetzungen aktualisiert \ No newline at end of file diff --git a/src/lite/fastlane/metadata/android/en-US/changelogs/default.txt b/src/lite/fastlane/metadata/android/en-US/changelogs/default.txt index 25cc551cc..3872124d8 100644 --- a/src/lite/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/src/lite/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1,3 +1,3 @@ -- Migrated to the new Material3 design -- Fixed umlauts in WebDAV password using digest authentication leads to authentication fail -- Fixed opening the purchase link in the F-Droid and website variant \ No newline at end of file +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file diff --git a/src/lite/fastlane/metadata/android/fr-FR/changelogs/default.txt b/src/lite/fastlane/metadata/android/fr-FR/changelogs/default.txt new file mode 100644 index 000000000..3872124d8 --- /dev/null +++ b/src/lite/fastlane/metadata/android/fr-FR/changelogs/default.txt @@ -0,0 +1,3 @@ +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file diff --git a/src/playstore/fastlane/metadata/android/de-DE/changelogs/default.txt b/src/playstore/fastlane/metadata/android/de-DE/changelogs/default.txt index 46552aaee..11a577c44 100644 --- a/src/playstore/fastlane/metadata/android/de-DE/changelogs/default.txt +++ b/src/playstore/fastlane/metadata/android/de-DE/changelogs/default.txt @@ -1,3 +1,3 @@ -- Update auf das neue Material3-Design -- Authentifizierungsfehler mit Umlauten im WebDAV-Passwort bei Verwendung der Digest-Authentifizierung behoben -- Öffnen des Kauflinks in der F-Droid- und Website-Variante behoben \ No newline at end of file +- Anpassungen zur Integration in das F-Droid Haupt-Repository abgeschlossen +- SHA-256 Fingerabdruck eines ungültigen WebDAV TLS Zertifikats wird angezeigt +- Übersetzungen aktualisiert \ No newline at end of file diff --git a/src/playstore/fastlane/metadata/android/en-US/changelogs/default.txt b/src/playstore/fastlane/metadata/android/en-US/changelogs/default.txt index 25cc551cc..3872124d8 100644 --- a/src/playstore/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/src/playstore/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1,3 +1,3 @@ -- Migrated to the new Material3 design -- Fixed umlauts in WebDAV password using digest authentication leads to authentication fail -- Fixed opening the purchase link in the F-Droid and website variant \ No newline at end of file +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file diff --git a/src/playstore/fastlane/metadata/android/fr-FR/changelogs/default.txt b/src/playstore/fastlane/metadata/android/fr-FR/changelogs/default.txt new file mode 100644 index 000000000..3872124d8 --- /dev/null +++ b/src/playstore/fastlane/metadata/android/fr-FR/changelogs/default.txt @@ -0,0 +1,3 @@ +- Completed customizations for integration into the F-Droid main repository +- Show SHA-256 fingerprint of an invalid WebDAV TLS certificate +- Update translations \ No newline at end of file From d756bb7e386ea27bdd1f0e755317127bef7ea25e Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 13 Apr 2023 16:56:37 +0200 Subject: [PATCH 12/13] Update Izzy script results --- fastlane/izzyscript/result_apkstore.json | 2 +- fastlane/izzyscript/result_fdroid.json | 2 +- fastlane/izzyscript/result_lite.json | 2 +- fastlane/izzyscript/result_playstore.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fastlane/izzyscript/result_apkstore.json b/fastlane/izzyscript/result_apkstore.json index c95e015be..336c3eef4 100644 --- a/fastlane/izzyscript/result_apkstore.json +++ b/fastlane/izzyscript/result_apkstore.json @@ -1 +1 @@ -{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\nOffending libs:
\n
    \n
  • Azure SDK for Java (/com/azure): NonFreeNet
  • \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • Google Mobile Services (/com/google/android/gms): NonFreeDep
  • \n
  • Google API Client Libraries (/com/google/api/client): NonFreeNet
  • \n
  • Google Drive API (/com/google/api/services/drive): NonFreeDep,NonFreeNet
  • \n
  • Google Java API Client Services (/com/google/api/services): NonFreeNet
  • \n
  • Microsoft Authentication Library (/com/microsoft/identity): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n8 offender(s). Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Asynclayoutinflater/androidx/asynclayoutinflaterUI ComponentApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Browser/androidx/browserUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
Azure SDK for Java/com/azureDevelopment FrameworkMITNonFreeNet
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Woodstox/com/ctc/wstxUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
Dropbox Core SDK for Java/com/dropbox/coreUtilityMITNonFreeNet
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Mobile Services/com/google/android/gmsDevelopment FrameworkProprietaryNonFreeDep
Google Material Design/com/google/android/materialUtilityApache-2.0
Google API Client Libraries/com/google/api/clientDevelopment FrameworkApache-2.0NonFreeNet
Google Drive API/com/google/api/services/driveUtilityApache-2.0NonFreeDep,NonFreeNet
Google Java API Client Services/com/google/api/servicesUtilityApache-2.0NonFreeNet
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
Microsoft Azure Active Directory Authentication Library/com/microsoft/aad/adalUtilityMIT
Surface Duo SDK/com/microsoft/device/dualscreenUtilityMIT
Microsoft Graph-SDK/com/microsoft/graphDevelopment FrameworkMIT
Microsoft Authentication Library/com/microsoft/identityUtilityMITNonFreeNet
Nimbus JOSE+JWT/com/nimbusds/joseUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
pCloud Java SDK/com/pcloud/sdkUtilityApache-2.0NonFreeNet
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Yubico Mobile Android SDK/com/yubico/yubikitUtilityApache-2.0
HttpClient Android repackaged/cz/msebera/android/httpclientUtilityApache-2.0
Dagger/daggerUtilityApache-2.0
FindBugs/edu/umd/cs/findbugsUtilityLGPL-3.0-or-later
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
JCIP Annotations/net/jcip/annotationsUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Apache Http/org/apache/httpUtilityApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
Stax2 API/org/codehaus/stax2UtilityBSD
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Reactor Core/reactor/coreUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/asynclayoutinflater","name":"Asynclayoutinflater","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/browser","name":"Browser","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/browser","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/azure","name":"Azure SDK for Java","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/Azure/azure-sdk-for-java","license":"MIT"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/ctc/wstx","name":"Woodstox","typ":"Utility","anti":"","url":"https://github.com/FasterXML/woodstox","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/dropbox/dropbox-sdk-java","license":"MIT"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/gms","name":"Google Mobile Services","typ":"Development Framework","anti":"NonFreeDep","url":"https://developers.google.com/android/reference/com/google/android/gms/package-summary","license":"Proprietary"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/api/client","name":"Google API Client Libraries","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client","license":"Apache-2.0"},{"id":"/com/google/api/services/drive","name":"Google Drive API","typ":"Utility","anti":"NonFreeDep,NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services/tree/main/clients/google-api-services-drive","license":"Apache-2.0"},{"id":"/com/google/api/services","name":"Google Java API Client Services","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/microsoft/aad/adal","name":"Microsoft Azure Active Directory Authentication Library","typ":"Utility","anti":"","url":"https://github.com/AzureAD/azure-activedirectory-library-for-android","license":"MIT"},{"id":"/com/microsoft/device/dualscreen","name":"Surface Duo SDK","typ":"Utility","anti":"","url":"https://github.com/microsoft/surface-duo-sdk","license":"MIT"},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":"","url":"https://github.com/microsoftgraph/msgraph-sdk-java","license":"MIT"},{"id":"/com/microsoft/identity","name":"Microsoft Authentication Library","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/AzureAD/microsoft-authentication-library-for-android","license":"MIT"},{"id":"/com/nimbusds/jose","name":"Nimbus JOSE+JWT","typ":"Utility","anti":"","url":"https://github.com/gesellix/Nimbus-JOSE-JWT","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/pCloud/pcloud-sdk-java","license":"Apache-2.0"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/yubico/yubikit","name":"Yubico Mobile Android SDK","typ":"Utility","anti":"","url":"https://github.com/Yubico/yubikit-android","license":"Apache-2.0"},{"id":"/cz/msebera/android/httpclient","name":"HttpClient Android repackaged","typ":"Utility","anti":"","url":"https://github.com/smarek/httpclient-android","license":"Apache-2.0"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/edu/umd/cs/findbugs","name":"FindBugs","typ":"Utility","anti":"","url":"http://findbugs.sourceforge.net/","license":"LGPL-3.0-or-later"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/net/jcip/annotations","name":"JCIP Annotations","typ":"Utility","anti":"","url":"https://github.com/stephenc/jcip-annotations","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/apache/http","name":"Apache Http","typ":"Utility","anti":"","url":"https://hc.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/codehaus/stax2","name":"Stax2 API","typ":"Utility","anti":"","url":"https://github.com/FasterXML/stax2-api","license":"BSD"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/reactor/core","name":"Reactor Core","typ":"Utility","anti":"","url":"https://github.com/reactor/reactor-core","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3356 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 74877 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 101 libraries, 8 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file +{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\nOffending libs:
\n
    \n
  • Azure SDK for Java (/com/azure): NonFreeNet
  • \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • Google Mobile Services (/com/google/android/gms): NonFreeDep
  • \n
  • Google API Client Libraries (/com/google/api/client): NonFreeNet
  • \n
  • Google Drive API (/com/google/api/services/drive): NonFreeDep,NonFreeNet
  • \n
  • Google Java API Client Services (/com/google/api/services): NonFreeNet
  • \n
  • Microsoft Authentication Library (/com/microsoft/identity): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n8 offender(s). Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Asynclayoutinflater/androidx/asynclayoutinflaterUI ComponentApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Browser/androidx/browserUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
Azure SDK for Java/com/azureDevelopment FrameworkMITNonFreeNet
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Woodstox/com/ctc/wstxUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
Dropbox Core SDK for Java/com/dropbox/coreUtilityMITNonFreeNet
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Mobile Services/com/google/android/gmsDevelopment FrameworkProprietaryNonFreeDep
Google Material Design/com/google/android/materialUtilityApache-2.0
Google API Client Libraries/com/google/api/clientDevelopment FrameworkApache-2.0NonFreeNet
Google Drive API/com/google/api/services/driveUtilityApache-2.0NonFreeDep,NonFreeNet
Google Java API Client Services/com/google/api/servicesUtilityApache-2.0NonFreeNet
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
Microsoft Azure Active Directory Authentication Library/com/microsoft/aad/adalUtilityMIT
Surface Duo SDK/com/microsoft/device/dualscreenUtilityMIT
Microsoft Graph-SDK/com/microsoft/graphDevelopment FrameworkMIT
Microsoft Authentication Library/com/microsoft/identityUtilityMITNonFreeNet
Nimbus JOSE+JWT/com/nimbusds/joseUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
pCloud Java SDK/com/pcloud/sdkUtilityApache-2.0NonFreeNet
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Wutka DTD/com/wutka/dtdDevelopment Aidnone
Yubico Mobile Android SDK/com/yubico/yubikitUtilityApache-2.0
HttpClient Android repackaged/cz/msebera/android/httpclientUtilityApache-2.0
Dagger/daggerUtilityApache-2.0
FindBugs/edu/umd/cs/findbugsUtilityLGPL-3.0-or-later
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Javax XML/javax/xmlUtilityGPL-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
JCIP Annotations/net/jcip/annotationsUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Apache Http/org/apache/httpUtilityApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
Stax2 API/org/codehaus/stax2UtilityBSD
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Reactor Core/reactor/coreUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/asynclayoutinflater","name":"Asynclayoutinflater","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/browser","name":"Browser","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/browser","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/azure","name":"Azure SDK for Java","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/Azure/azure-sdk-for-java","license":"MIT"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/ctc/wstx","name":"Woodstox","typ":"Utility","anti":"","url":"https://github.com/FasterXML/woodstox","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/dropbox/dropbox-sdk-java","license":"MIT"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/gms","name":"Google Mobile Services","typ":"Development Framework","anti":"NonFreeDep","url":"https://developers.google.com/android/reference/com/google/android/gms/package-summary","license":"Proprietary"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/api/client","name":"Google API Client Libraries","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client","license":"Apache-2.0"},{"id":"/com/google/api/services/drive","name":"Google Drive API","typ":"Utility","anti":"NonFreeDep,NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services/tree/main/clients/google-api-services-drive","license":"Apache-2.0"},{"id":"/com/google/api/services","name":"Google Java API Client Services","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/microsoft/aad/adal","name":"Microsoft Azure Active Directory Authentication Library","typ":"Utility","anti":"","url":"https://github.com/AzureAD/azure-activedirectory-library-for-android","license":"MIT"},{"id":"/com/microsoft/device/dualscreen","name":"Surface Duo SDK","typ":"Utility","anti":"","url":"https://github.com/microsoft/surface-duo-sdk","license":"MIT"},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":"","url":"https://github.com/microsoftgraph/msgraph-sdk-java","license":"MIT"},{"id":"/com/microsoft/identity","name":"Microsoft Authentication Library","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/AzureAD/microsoft-authentication-library-for-android","license":"MIT"},{"id":"/com/nimbusds/jose","name":"Nimbus JOSE+JWT","typ":"Utility","anti":"","url":"https://github.com/gesellix/Nimbus-JOSE-JWT","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/pCloud/pcloud-sdk-java","license":"Apache-2.0"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/wutka/dtd","name":"Wutka DTD","typ":"Development Aid","anti":"","url":"https://mvnrepository.com/artifact/com.liferay/com.wutka.dtd","license":""},{"id":"/com/yubico/yubikit","name":"Yubico Mobile Android SDK","typ":"Utility","anti":"","url":"https://github.com/Yubico/yubikit-android","license":"Apache-2.0"},{"id":"/cz/msebera/android/httpclient","name":"HttpClient Android repackaged","typ":"Utility","anti":"","url":"https://github.com/smarek/httpclient-android","license":"Apache-2.0"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/edu/umd/cs/findbugs","name":"FindBugs","typ":"Utility","anti":"","url":"http://findbugs.sourceforge.net/","license":"LGPL-3.0-or-later"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/javax/xml","name":"Javax XML","typ":"Utility","anti":"","url":"https://docs.oracle.com/en/java/javase/17/docs/api/java.xml/javax/xml/package-summary.html","license":"GPL-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/net/jcip/annotations","name":"JCIP Annotations","typ":"Utility","anti":"","url":"https://github.com/stephenc/jcip-annotations","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/apache/http","name":"Apache Http","typ":"Utility","anti":"","url":"https://hc.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/codehaus/stax2","name":"Stax2 API","typ":"Utility","anti":"","url":"https://github.com/FasterXML/stax2-api","license":"BSD"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/reactor/core","name":"Reactor Core","typ":"Utility","anti":"","url":"https://github.com/reactor/reactor-core","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3386 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 74877 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 103 libraries, 8 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file diff --git a/fastlane/izzyscript/result_fdroid.json b/fastlane/izzyscript/result_fdroid.json index 9c4a0ab12..eef17f87d 100644 --- a/fastlane/izzyscript/result_fdroid.json +++ b/fastlane/izzyscript/result_fdroid.json @@ -1 +1 @@ -{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\nOffending libs:
\n
    \n
  • Azure SDK for Java (/com/azure): NonFreeNet
  • \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • Microsoft Authentication Library (/com/microsoft/identity): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n4 offender(s). Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Asynclayoutinflater/androidx/asynclayoutinflaterUI ComponentApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Browser/androidx/browserUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
Azure SDK for Java/com/azureDevelopment FrameworkMITNonFreeNet
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Woodstox/com/ctc/wstxUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
Dropbox Core SDK for Java/com/dropbox/coreUtilityMITNonFreeNet
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Material Design/com/google/android/materialUtilityApache-2.0
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
Microsoft Azure Active Directory Authentication Library/com/microsoft/aad/adalUtilityMIT
Surface Duo SDK/com/microsoft/device/dualscreenUtilityMIT
Microsoft Graph-SDK/com/microsoft/graphDevelopment FrameworkMIT
Microsoft Authentication Library/com/microsoft/identityUtilityMITNonFreeNet
Nimbus JOSE+JWT/com/nimbusds/joseUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
pCloud Java SDK/com/pcloud/sdkUtilityApache-2.0NonFreeNet
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Yubico Mobile Android SDK/com/yubico/yubikitUtilityApache-2.0
HttpClient Android repackaged/cz/msebera/android/httpclientUtilityApache-2.0
Dagger/daggerUtilityApache-2.0
FindBugs/edu/umd/cs/findbugsUtilityLGPL-3.0-or-later
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
JCIP Annotations/net/jcip/annotationsUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
Stax2 API/org/codehaus/stax2UtilityBSD
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Reactor Core/reactor/coreUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/asynclayoutinflater","name":"Asynclayoutinflater","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/browser","name":"Browser","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/browser","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/azure","name":"Azure SDK for Java","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/Azure/azure-sdk-for-java","license":"MIT"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/ctc/wstx","name":"Woodstox","typ":"Utility","anti":"","url":"https://github.com/FasterXML/woodstox","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/dropbox/dropbox-sdk-java","license":"MIT"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/microsoft/aad/adal","name":"Microsoft Azure Active Directory Authentication Library","typ":"Utility","anti":"","url":"https://github.com/AzureAD/azure-activedirectory-library-for-android","license":"MIT"},{"id":"/com/microsoft/device/dualscreen","name":"Surface Duo SDK","typ":"Utility","anti":"","url":"https://github.com/microsoft/surface-duo-sdk","license":"MIT"},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":"","url":"https://github.com/microsoftgraph/msgraph-sdk-java","license":"MIT"},{"id":"/com/microsoft/identity","name":"Microsoft Authentication Library","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/AzureAD/microsoft-authentication-library-for-android","license":"MIT"},{"id":"/com/nimbusds/jose","name":"Nimbus JOSE+JWT","typ":"Utility","anti":"","url":"https://github.com/gesellix/Nimbus-JOSE-JWT","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/pCloud/pcloud-sdk-java","license":"Apache-2.0"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/yubico/yubikit","name":"Yubico Mobile Android SDK","typ":"Utility","anti":"","url":"https://github.com/Yubico/yubikit-android","license":"Apache-2.0"},{"id":"/cz/msebera/android/httpclient","name":"HttpClient Android repackaged","typ":"Utility","anti":"","url":"https://github.com/smarek/httpclient-android","license":"Apache-2.0"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/edu/umd/cs/findbugs","name":"FindBugs","typ":"Utility","anti":"","url":"http://findbugs.sourceforge.net/","license":"LGPL-3.0-or-later"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/net/jcip/annotations","name":"JCIP Annotations","typ":"Utility","anti":"","url":"https://github.com/stephenc/jcip-annotations","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/codehaus/stax2","name":"Stax2 API","typ":"Utility","anti":"","url":"https://github.com/FasterXML/stax2-api","license":"BSD"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/reactor/core","name":"Reactor Core","typ":"Utility","anti":"","url":"https://github.com/reactor/reactor-core","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3356 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 67468 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 96 libraries, 4 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file +{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\nOffending libs:
\n
    \n
  • Azure SDK for Java (/com/azure): NonFreeNet
  • \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • Microsoft Authentication Library (/com/microsoft/identity): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n4 offender(s). Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Asynclayoutinflater/androidx/asynclayoutinflaterUI ComponentApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Browser/androidx/browserUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
Azure SDK for Java/com/azureDevelopment FrameworkMITNonFreeNet
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Woodstox/com/ctc/wstxUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
Dropbox Core SDK for Java/com/dropbox/coreUtilityMITNonFreeNet
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Material Design/com/google/android/materialUtilityApache-2.0
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
Microsoft Azure Active Directory Authentication Library/com/microsoft/aad/adalUtilityMIT
Surface Duo SDK/com/microsoft/device/dualscreenUtilityMIT
Microsoft Graph-SDK/com/microsoft/graphDevelopment FrameworkMIT
Microsoft Authentication Library/com/microsoft/identityUtilityMITNonFreeNet
Nimbus JOSE+JWT/com/nimbusds/joseUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
pCloud Java SDK/com/pcloud/sdkUtilityApache-2.0NonFreeNet
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Wutka DTD/com/wutka/dtdDevelopment Aidnone
Yubico Mobile Android SDK/com/yubico/yubikitUtilityApache-2.0
HttpClient Android repackaged/cz/msebera/android/httpclientUtilityApache-2.0
Dagger/daggerUtilityApache-2.0
FindBugs/edu/umd/cs/findbugsUtilityLGPL-3.0-or-later
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Javax XML/javax/xmlUtilityGPL-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
JCIP Annotations/net/jcip/annotationsUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
Stax2 API/org/codehaus/stax2UtilityBSD
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Reactor Core/reactor/coreUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/asynclayoutinflater","name":"Asynclayoutinflater","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/browser","name":"Browser","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/browser","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/azure","name":"Azure SDK for Java","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/Azure/azure-sdk-for-java","license":"MIT"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/ctc/wstx","name":"Woodstox","typ":"Utility","anti":"","url":"https://github.com/FasterXML/woodstox","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/dropbox/dropbox-sdk-java","license":"MIT"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/microsoft/aad/adal","name":"Microsoft Azure Active Directory Authentication Library","typ":"Utility","anti":"","url":"https://github.com/AzureAD/azure-activedirectory-library-for-android","license":"MIT"},{"id":"/com/microsoft/device/dualscreen","name":"Surface Duo SDK","typ":"Utility","anti":"","url":"https://github.com/microsoft/surface-duo-sdk","license":"MIT"},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":"","url":"https://github.com/microsoftgraph/msgraph-sdk-java","license":"MIT"},{"id":"/com/microsoft/identity","name":"Microsoft Authentication Library","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/AzureAD/microsoft-authentication-library-for-android","license":"MIT"},{"id":"/com/nimbusds/jose","name":"Nimbus JOSE+JWT","typ":"Utility","anti":"","url":"https://github.com/gesellix/Nimbus-JOSE-JWT","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/pCloud/pcloud-sdk-java","license":"Apache-2.0"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/wutka/dtd","name":"Wutka DTD","typ":"Development Aid","anti":"","url":"https://mvnrepository.com/artifact/com.liferay/com.wutka.dtd","license":""},{"id":"/com/yubico/yubikit","name":"Yubico Mobile Android SDK","typ":"Utility","anti":"","url":"https://github.com/Yubico/yubikit-android","license":"Apache-2.0"},{"id":"/cz/msebera/android/httpclient","name":"HttpClient Android repackaged","typ":"Utility","anti":"","url":"https://github.com/smarek/httpclient-android","license":"Apache-2.0"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/edu/umd/cs/findbugs","name":"FindBugs","typ":"Utility","anti":"","url":"http://findbugs.sourceforge.net/","license":"LGPL-3.0-or-later"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/javax/xml","name":"Javax XML","typ":"Utility","anti":"","url":"https://docs.oracle.com/en/java/javase/17/docs/api/java.xml/javax/xml/package-summary.html","license":"GPL-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/net/jcip/annotations","name":"JCIP Annotations","typ":"Utility","anti":"","url":"https://github.com/stephenc/jcip-annotations","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/codehaus/stax2","name":"Stax2 API","typ":"Utility","anti":"","url":"https://github.com/FasterXML/stax2-api","license":"BSD"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/reactor/core","name":"Reactor Core","typ":"Utility","anti":"","url":"https://github.com/reactor/reactor-core","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3386 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 67523 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 98 libraries, 4 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file diff --git a/fastlane/izzyscript/result_lite.json b/fastlane/izzyscript/result_lite.json index 6128f6635..44a326e52 100644 --- a/fastlane/izzyscript/result_lite.json +++ b/fastlane/izzyscript/result_lite.json @@ -1 +1 @@ -{"applicationId":"org.cryptomator","emoji":[],"labels":[],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\n
  • Library definitions checked against: 3356
  • Libraries matched in this APK: 79
\nNo offending libs found. Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Material Design/com/google/android/materialUtilityApache-2.0
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Dagger/daggerUtilityApache-2.0
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3356 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 44532 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 79 libraries, 0 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file +{"applicationId":"org.cryptomator","emoji":[],"labels":[],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\n
  • Library definitions checked against: 3386
  • Libraries matched in this APK: 81
\nNo offending libs found. Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Material Design/com/google/android/materialUtilityApache-2.0
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Wutka DTD/com/wutka/dtdDevelopment Aidnone
Dagger/daggerUtilityApache-2.0
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Javax XML/javax/xmlUtilityGPL-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/wutka/dtd","name":"Wutka DTD","typ":"Development Aid","anti":"","url":"https://mvnrepository.com/artifact/com.liferay/com.wutka.dtd","license":""},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/javax/xml","name":"Javax XML","typ":"Utility","anti":"","url":"https://docs.oracle.com/en/java/javase/17/docs/api/java.xml/javax/xml/package-summary.html","license":"GPL-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3386 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 44532 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 81 libraries, 0 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file diff --git a/fastlane/izzyscript/result_playstore.json b/fastlane/izzyscript/result_playstore.json index c95e015be..336c3eef4 100644 --- a/fastlane/izzyscript/result_playstore.json +++ b/fastlane/izzyscript/result_playstore.json @@ -1 +1 @@ -{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\nOffending libs:
\n
    \n
  • Azure SDK for Java (/com/azure): NonFreeNet
  • \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • Google Mobile Services (/com/google/android/gms): NonFreeDep
  • \n
  • Google API Client Libraries (/com/google/api/client): NonFreeNet
  • \n
  • Google Drive API (/com/google/api/services/drive): NonFreeDep,NonFreeNet
  • \n
  • Google Java API Client Services (/com/google/api/services): NonFreeNet
  • \n
  • Microsoft Authentication Library (/com/microsoft/identity): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n8 offender(s). Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Asynclayoutinflater/androidx/asynclayoutinflaterUI ComponentApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Browser/androidx/browserUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
Azure SDK for Java/com/azureDevelopment FrameworkMITNonFreeNet
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Woodstox/com/ctc/wstxUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
Dropbox Core SDK for Java/com/dropbox/coreUtilityMITNonFreeNet
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Mobile Services/com/google/android/gmsDevelopment FrameworkProprietaryNonFreeDep
Google Material Design/com/google/android/materialUtilityApache-2.0
Google API Client Libraries/com/google/api/clientDevelopment FrameworkApache-2.0NonFreeNet
Google Drive API/com/google/api/services/driveUtilityApache-2.0NonFreeDep,NonFreeNet
Google Java API Client Services/com/google/api/servicesUtilityApache-2.0NonFreeNet
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
Microsoft Azure Active Directory Authentication Library/com/microsoft/aad/adalUtilityMIT
Surface Duo SDK/com/microsoft/device/dualscreenUtilityMIT
Microsoft Graph-SDK/com/microsoft/graphDevelopment FrameworkMIT
Microsoft Authentication Library/com/microsoft/identityUtilityMITNonFreeNet
Nimbus JOSE+JWT/com/nimbusds/joseUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
pCloud Java SDK/com/pcloud/sdkUtilityApache-2.0NonFreeNet
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Yubico Mobile Android SDK/com/yubico/yubikitUtilityApache-2.0
HttpClient Android repackaged/cz/msebera/android/httpclientUtilityApache-2.0
Dagger/daggerUtilityApache-2.0
FindBugs/edu/umd/cs/findbugsUtilityLGPL-3.0-or-later
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
JCIP Annotations/net/jcip/annotationsUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Apache Http/org/apache/httpUtilityApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
Stax2 API/org/codehaus/stax2UtilityBSD
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Reactor Core/reactor/coreUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/asynclayoutinflater","name":"Asynclayoutinflater","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/browser","name":"Browser","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/browser","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/azure","name":"Azure SDK for Java","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/Azure/azure-sdk-for-java","license":"MIT"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/ctc/wstx","name":"Woodstox","typ":"Utility","anti":"","url":"https://github.com/FasterXML/woodstox","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/dropbox/dropbox-sdk-java","license":"MIT"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/gms","name":"Google Mobile Services","typ":"Development Framework","anti":"NonFreeDep","url":"https://developers.google.com/android/reference/com/google/android/gms/package-summary","license":"Proprietary"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/api/client","name":"Google API Client Libraries","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client","license":"Apache-2.0"},{"id":"/com/google/api/services/drive","name":"Google Drive API","typ":"Utility","anti":"NonFreeDep,NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services/tree/main/clients/google-api-services-drive","license":"Apache-2.0"},{"id":"/com/google/api/services","name":"Google Java API Client Services","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/microsoft/aad/adal","name":"Microsoft Azure Active Directory Authentication Library","typ":"Utility","anti":"","url":"https://github.com/AzureAD/azure-activedirectory-library-for-android","license":"MIT"},{"id":"/com/microsoft/device/dualscreen","name":"Surface Duo SDK","typ":"Utility","anti":"","url":"https://github.com/microsoft/surface-duo-sdk","license":"MIT"},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":"","url":"https://github.com/microsoftgraph/msgraph-sdk-java","license":"MIT"},{"id":"/com/microsoft/identity","name":"Microsoft Authentication Library","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/AzureAD/microsoft-authentication-library-for-android","license":"MIT"},{"id":"/com/nimbusds/jose","name":"Nimbus JOSE+JWT","typ":"Utility","anti":"","url":"https://github.com/gesellix/Nimbus-JOSE-JWT","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/pCloud/pcloud-sdk-java","license":"Apache-2.0"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/yubico/yubikit","name":"Yubico Mobile Android SDK","typ":"Utility","anti":"","url":"https://github.com/Yubico/yubikit-android","license":"Apache-2.0"},{"id":"/cz/msebera/android/httpclient","name":"HttpClient Android repackaged","typ":"Utility","anti":"","url":"https://github.com/smarek/httpclient-android","license":"Apache-2.0"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/edu/umd/cs/findbugs","name":"FindBugs","typ":"Utility","anti":"","url":"http://findbugs.sourceforge.net/","license":"LGPL-3.0-or-later"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/net/jcip/annotations","name":"JCIP Annotations","typ":"Utility","anti":"","url":"https://github.com/stephenc/jcip-annotations","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/apache/http","name":"Apache Http","typ":"Utility","anti":"","url":"https://hc.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/codehaus/stax2","name":"Stax2 API","typ":"Utility","anti":"","url":"https://github.com/FasterXML/stax2-api","license":"BSD"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/reactor/core","name":"Reactor Core","typ":"Utility","anti":"","url":"https://github.com/reactor/reactor-core","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3356 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 74877 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 101 libraries, 8 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file +{"applicationId":"org.cryptomator","emoji":[],"labels":["scanner-warning"],"report":"

APK library scanner

\nunsigned/org.cryptomator_fdroid.apk\nOffending libs:
\n
    \n
  • Azure SDK for Java (/com/azure): NonFreeNet
  • \n
  • Dropbox Core SDK for Java (/com/dropbox/core): NonFreeNet
  • \n
  • Google Mobile Services (/com/google/android/gms): NonFreeDep
  • \n
  • Google API Client Libraries (/com/google/api/client): NonFreeNet
  • \n
  • Google Drive API (/com/google/api/services/drive): NonFreeDep,NonFreeNet
  • \n
  • Google Java API Client Services (/com/google/api/services): NonFreeNet
  • \n
  • Microsoft Authentication Library (/com/microsoft/identity): NonFreeNet
  • \n
  • pCloud Java SDK (/com/pcloud/sdk): NonFreeNet
  • \n
\n8 offender(s). Full report available here.\n
Full list of libraries detected:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
LibraryIdTypeLicenseAntiFeatures
Android Support v4/android/support/v4Development FrameworkApache-2.0
AndroidX Activity/androidx/activityUtilityApache-2.0
Android Jetpack Annotations/androidx/annotationUtilityApache-2.0
Arch/androidx/archUtilityApache-2.0
AppCompat/androidx/appcompatUtilityApache-2.0
Asynclayoutinflater/androidx/asynclayoutinflaterUI ComponentApache-2.0
Biometric/androidx/biometricUtilityApache-2.0
Browser/androidx/browserUtilityApache-2.0
Cardview/androidx/cardviewUI ComponentApache-2.0
Android Support Library collections/androidx/collectionUtilityApache-2.0
Concurrent/androidx/concurrentUtilityApache-2.0
Constraint Layout Library/androidx/constraintlayoutUtilityApache-2.0
Coordinatorlayout/androidx/coordinatorlayoutUI ComponentApache-2.0
Androidx Core/androidx/coreUtilityApache-2.0
AndroidX Cursor Adapter/androidx/cursoradapterUtilityApache-2.0
Android Support Library Custom View/androidx/customviewUI ComponentApache-2.0
Documentfile/androidx/documentfileUI ComponentApache-2.0
Drawerlayout/androidx/drawerlayoutUI ComponentApache-2.0
Dynamicanimation/androidx/dynamicanimationUI ComponentApache-2.0
Android Emoji2 Compat/androidx/emoji2UI ComponentApache-2.0
Exifinterface/androidx/exifinterfaceUtilityApache-2.0
AndroidX Fragment/androidx/fragmentUI ComponentApache-2.0
Interpolator/androidx/interpolatorUI ComponentApache-2.0
androidx.legacy/androidx/legacyUtilityApache-2.0
Lifecycle/androidx/lifecycleUtilityApache-2.0
Loader/androidx/loaderUtilityApache-2.0
AndroidX Local Broadcast Manager/androidx/localbroadcastmanagerUtilityApache-2.0
Android Multi Dex Library/androidx/multidexUtilityApache-2.0
Preference/androidx/preferenceUtilityApache-2.0
Print/androidx/printUtilityApache-2.0
ResourceInspection/androidx/resourceinspectionDevelopment AidApache-2.0
Recyclerview/androidx/recyclerviewUtilityApache-2.0
Android Activity Saved State/androidx/savedstateUtilityApache-2.0
Slidingpanelayout/androidx/slidingpanelayoutUI ComponentApache-2.0
Startup/androidx/startupUtilityApache-2.0
Swiperefreshlayout/androidx/swiperefreshlayoutUI ComponentApache-2.0
AndroidX Test/androidx/testDevelopment FrameworkApache-2.0
Tracing/androidx/tracingUtilityApache-2.0
Transition/androidx/transitionUI ComponentApache-2.0
Vectordrawable/androidx/vectordrawableUI ComponentApache-2.0
Android Jetpack VersionedParcelable/androidx/versionedparcelableUtilityApache-2.0
Viewpager/androidx/viewpagerUI ComponentApache-2.0
AndroidX Widget ViewPager2/androidx/viewpager2UI ComponentApache-2.0
Jetpack WindowManager Library/androidx/windowUtilityApache-2.0
Azure SDK for Java/com/azureDevelopment FrameworkMITNonFreeNet
okhttp-digest/com/burgstaller/okhttpUtilityApache-2.0
Woodstox/com/ctc/wstxUtilityApache-2.0
Subsampling Scale Image View/com/davemorrissey/labs/subscaleviewUI ComponentApache-2.0
Dropbox Core SDK for Java/com/dropbox/coreUtilityMITNonFreeNet
FasterXML Jackson/com/fasterxml/jacksonUtilityApache-2.0
Google Mobile Services/com/google/android/gmsDevelopment FrameworkProprietaryNonFreeDep
Google Material Design/com/google/android/materialUtilityApache-2.0
Google API Client Libraries/com/google/api/clientDevelopment FrameworkApache-2.0NonFreeNet
Google Drive API/com/google/api/services/driveUtilityApache-2.0NonFreeDep,NonFreeNet
Google Java API Client Services/com/google/api/servicesUtilityApache-2.0NonFreeNet
Google Core Libraries for Java 6+/com/google/commonUtilityApache-2.0
Error Prone/com/google/errorproneUtilityApache-2.0
Google Gson/com/google/gsonUtilityApache-2.0
J2ObjC/com/google/j2objcUtilityApache-2.0
RxBinding/com/jakewharton/rxbindingUtilityApache-2.0
Microsoft Azure Active Directory Authentication Library/com/microsoft/aad/adalUtilityMIT
Surface Duo SDK/com/microsoft/device/dualscreenUtilityMIT
Microsoft Graph-SDK/com/microsoft/graphDevelopment FrameworkMIT
Microsoft Authentication Library/com/microsoft/identityUtilityMITNonFreeNet
Nimbus JOSE+JWT/com/nimbusds/joseUtilityApache-2.0
zxcvbn4j/com/nulabinc/zxcvbnUtilityMIT
pCloud Java SDK/com/pcloud/sdkUtilityApache-2.0NonFreeNet
RecyclerView-FastScroll/com/simplecityapps/recyclerview_fastscrollUI ComponentApache-2.0
OkHttp/com/squareup/okhttpUtilityApache-2.0
Disk LRU Cache/com/tomclaw/cacheUtilityMIT
Wutka DTD/com/wutka/dtdDevelopment Aidnone
Yubico Mobile Android SDK/com/yubico/yubikitUtilityApache-2.0
HttpClient Android repackaged/cz/msebera/android/httpclientUtilityApache-2.0
Dagger/daggerUtilityApache-2.0
FindBugs/edu/umd/cs/findbugsUtilityLGPL-3.0-or-later
Java JWT/io/jsonwebtokenUtilityApache-2.0
MinIO Client SDK for Java/io/minioUtilityApache-2.0
RxJava/io/reactivexUtilityApache-2.0
JavaX Annotation API/javax/annotationUtilityBSD-3-Clause
JavaX Dependency Injection/javax/injectUtilityApache-2.0
Javax XML/javax/xmlUtilityGPL-2.0
Junit/junitUtilityEPL-1.0
Kotlin/kotlinUtilityApache-2.0
Kotlin Android Extensions Runtime/kotlinx/android/extensions-runtimeUtilityApache-2.0
kotlinx.coroutines/kotlinx/coroutinesUtilityApache-2.0
JCIP Annotations/net/jcip/annotationsUtilityApache-2.0
OkHttp okio Framework/okioUtilityApache-2.0
Apache Commons/org/apache/commonsDevelopment FrameworkApache-2.0
Apache Http/org/apache/httpUtilityApache-2.0
Bouncy Castle/org/bouncycastleUtilityMIT
Checker Framework/org/checkerframeworkUtilityGPL-2.0-only
Stax2 API/org/codehaus/stax2UtilityBSD
greenDAO/org/greenrobot/greendaoUtilityApache-2.0
Java Hamcrest/org/hamcrestUtilityBSD-3-Clause
IntelliJ IDEA/org/intellijUtilityApache-2.0
JSON in Java/org/jsonUtilityMIT
jUnit Java Unit Test/org/junitUtilityEPL-2.0
Reactive Streams/org/reactivestreamsUtilityMIT
Simple/org/simpleframework/xmlUtilityLGPL-2.1-only
Simple Logging Facade for Java/org/slf4jUtilityMIT
snappy-java/org/xerial/snappyUtilityApache-2.0
Reactor Core/reactor/coreUtilityApache-2.0
Timber/timber/logUtilityApache-2.0

\n\n
\n","reportData":{"unsigned/org.cryptomator_fdroid.apk":[{"id":"/android/support/v4","name":"Android Support v4","typ":"Development Framework","anti":"","url":"https://developer.android.com/reference/android/support/v4/app/package-summary.html","license":"Apache-2.0"},{"id":"/androidx/activity","name":"AndroidX Activity","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/annotation","name":"Android Jetpack Annotations","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/annotation","license":"Apache-2.0"},{"id":"/androidx/arch","name":"Arch","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/arch","license":"Apache-2.0"},{"id":"/androidx/appcompat","name":"AppCompat","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/appcompat","license":"Apache-2.0"},{"id":"/androidx/asynclayoutinflater","name":"Asynclayoutinflater","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/asynclayoutinflater","license":"Apache-2.0"},{"id":"/androidx/biometric","name":"Biometric","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/biometric","license":"Apache-2.0"},{"id":"/androidx/browser","name":"Browser","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/browser","license":"Apache-2.0"},{"id":"/androidx/cardview","name":"Cardview","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/cardview/","license":"Apache-2.0"},{"id":"/androidx/collection","name":"Android Support Library collections","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/concurrent","name":"Concurrent","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/concurrent","license":"Apache-2.0"},{"id":"/androidx/constraintlayout","name":"Constraint Layout Library","typ":"Utility","anti":"","url":"https://github.com/androidx/constraintlayout","license":"Apache-2.0"},{"id":"/androidx/coordinatorlayout","name":"Coordinatorlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/coordinatorlayout","license":"Apache-2.0"},{"id":"/androidx/core","name":"Androidx Core","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/core","license":"Apache-2.0"},{"id":"/androidx/cursoradapter","name":"AndroidX Cursor Adapter","typ":"Utility","anti":"","url":"https://developer.android.com/tools/extras/support-library.html","license":"Apache-2.0"},{"id":"/androidx/customview","name":"Android Support Library Custom View","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/customview/","license":"Apache-2.0"},{"id":"/androidx/documentfile","name":"Documentfile","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/documentfile","license":"Apache-2.0"},{"id":"/androidx/drawerlayout","name":"Drawerlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/drawerlayout","license":"Apache-2.0"},{"id":"/androidx/dynamicanimation","name":"Dynamicanimation","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/dynamicanimation","license":"Apache-2.0"},{"id":"/androidx/emoji2","name":"Android Emoji2 Compat","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/emoji2/","license":"Apache-2.0"},{"id":"/androidx/exifinterface","name":"Exifinterface","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/exifinterface","license":"Apache-2.0"},{"id":"/androidx/fragment","name":"AndroidX Fragment","typ":"UI Component","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/fragment/","license":"Apache-2.0"},{"id":"/androidx/interpolator","name":"Interpolator","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/interpolator","license":"Apache-2.0"},{"id":"/androidx/legacy","name":"androidx.legacy","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/legacy","license":"Apache-2.0"},{"id":"/androidx/lifecycle","name":"Lifecycle","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/lifecycle","license":"Apache-2.0"},{"id":"/androidx/loader","name":"Loader","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/loader","license":"Apache-2.0"},{"id":"/androidx/localbroadcastmanager","name":"AndroidX Local Broadcast Manager","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-localbroadcastmanager-release/localbroadcastmanager/","license":"Apache-2.0"},{"id":"/androidx/multidex","name":"Android Multi Dex Library","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/multidex","license":"Apache-2.0"},{"id":"/androidx/preference","name":"Preference","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/preference","license":"Apache-2.0"},{"id":"/androidx/print","name":"Print","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/print","license":"Apache-2.0"},{"id":"/androidx/resourceinspection","name":"ResourceInspection","typ":"Development Aid","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection","license":"Apache-2.0"},{"id":"/androidx/recyclerview","name":"Recyclerview","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/recyclerview","license":"Apache-2.0"},{"id":"/androidx/savedstate","name":"Android Activity Saved State","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx","license":"Apache-2.0"},{"id":"/androidx/slidingpanelayout","name":"Slidingpanelayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/slidingpanelayout","license":"Apache-2.0"},{"id":"/androidx/startup","name":"Startup","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/startup","license":"Apache-2.0"},{"id":"/androidx/swiperefreshlayout","name":"Swiperefreshlayout","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout","license":"Apache-2.0"},{"id":"/androidx/test","name":"AndroidX Test","typ":"Development Framework","anti":"","url":"https://github.com/android/android-test","license":"Apache-2.0"},{"id":"/androidx/tracing","name":"Tracing","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/tracing","license":"Apache-2.0"},{"id":"/androidx/transition","name":"Transition","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/transition","license":"Apache-2.0"},{"id":"/androidx/vectordrawable","name":"Vectordrawable","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/vectordrawable","license":"Apache-2.0"},{"id":"/androidx/versionedparcelable","name":"Android Jetpack VersionedParcelable","typ":"Utility","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/versionedparcelable","license":"Apache-2.0"},{"id":"/androidx/viewpager","name":"Viewpager","typ":"UI Component","anti":"","url":"https://developer.android.com/jetpack/androidx/releases/viewpager","license":"Apache-2.0"},{"id":"/androidx/viewpager2","name":"AndroidX Widget ViewPager2","typ":"UI Component","anti":"","url":"https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2","license":"Apache-2.0"},{"id":"/androidx/window","name":"Jetpack WindowManager Library","typ":"Utility","anti":"","url":"https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-main/window/","license":"Apache-2.0"},{"id":"/com/azure","name":"Azure SDK for Java","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/Azure/azure-sdk-for-java","license":"MIT"},{"id":"/com/burgstaller/okhttp","name":"okhttp-digest","typ":"Utility","anti":"","url":"https://github.com/rburgst/okhttp-digest","license":"Apache-2.0"},{"id":"/com/ctc/wstx","name":"Woodstox","typ":"Utility","anti":"","url":"https://github.com/FasterXML/woodstox","license":"Apache-2.0"},{"id":"/com/davemorrissey/labs/subscaleview","name":"Subsampling Scale Image View","typ":"UI Component","anti":"","url":"https://github.com/davemorrissey/subsampling-scale-image-view","license":"Apache-2.0"},{"id":"/com/dropbox/core","name":"Dropbox Core SDK for Java","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/dropbox/dropbox-sdk-java","license":"MIT"},{"id":"/com/fasterxml/jackson","name":"FasterXML Jackson","typ":"Utility","anti":"","url":"https://github.com/FasterXML/jackson-core","license":"Apache-2.0"},{"id":"/com/google/android/gms","name":"Google Mobile Services","typ":"Development Framework","anti":"NonFreeDep","url":"https://developers.google.com/android/reference/com/google/android/gms/package-summary","license":"Proprietary"},{"id":"/com/google/android/material","name":"Google Material Design","typ":"Utility","anti":"","url":"https://github.com/material-components/material-components-android","license":"Apache-2.0"},{"id":"/com/google/api/client","name":"Google API Client Libraries","typ":"Development Framework","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client","license":"Apache-2.0"},{"id":"/com/google/api/services/drive","name":"Google Drive API","typ":"Utility","anti":"NonFreeDep,NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services/tree/main/clients/google-api-services-drive","license":"Apache-2.0"},{"id":"/com/google/api/services","name":"Google Java API Client Services","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/googleapis/google-api-java-client-services","license":"Apache-2.0"},{"id":"/com/google/common","name":"Google Core Libraries for Java 6+","typ":"Utility","anti":"","url":"https://github.com/google/guava","license":"Apache-2.0"},{"id":"/com/google/errorprone","name":"Error Prone","typ":"Utility","anti":"","url":"https://github.com/google/error-prone","license":"Apache-2.0"},{"id":"/com/google/gson","name":"Google Gson","typ":"Utility","anti":"","url":"https://github.com/google/gson","license":"Apache-2.0"},{"id":"/com/google/j2objc","name":"J2ObjC","typ":"Utility","anti":"","url":"https://github.com/google/j2objc","license":"Apache-2.0"},{"id":"/com/jakewharton/rxbinding","name":"RxBinding","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/RxBinding","license":"Apache-2.0"},{"id":"/com/microsoft/aad/adal","name":"Microsoft Azure Active Directory Authentication Library","typ":"Utility","anti":"","url":"https://github.com/AzureAD/azure-activedirectory-library-for-android","license":"MIT"},{"id":"/com/microsoft/device/dualscreen","name":"Surface Duo SDK","typ":"Utility","anti":"","url":"https://github.com/microsoft/surface-duo-sdk","license":"MIT"},{"id":"/com/microsoft/graph","name":"Microsoft Graph-SDK","typ":"Development Framework","anti":"","url":"https://github.com/microsoftgraph/msgraph-sdk-java","license":"MIT"},{"id":"/com/microsoft/identity","name":"Microsoft Authentication Library","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/AzureAD/microsoft-authentication-library-for-android","license":"MIT"},{"id":"/com/nimbusds/jose","name":"Nimbus JOSE+JWT","typ":"Utility","anti":"","url":"https://github.com/gesellix/Nimbus-JOSE-JWT","license":"Apache-2.0"},{"id":"/com/nulabinc/zxcvbn","name":"zxcvbn4j","typ":"Utility","anti":"","url":"https://github.com/nulab/zxcvbn4j","license":"MIT"},{"id":"/com/pcloud/sdk","name":"pCloud Java SDK","typ":"Utility","anti":"NonFreeNet","url":"https://github.com/pCloud/pcloud-sdk-java","license":"Apache-2.0"},{"id":"/com/simplecityapps/recyclerview_fastscroll","name":"RecyclerView-FastScroll","typ":"UI Component","anti":"","url":"https://github.com/timusus/RecyclerView-FastScroll","license":"Apache-2.0"},{"id":"/com/squareup/okhttp","name":"OkHttp","typ":"Utility","anti":"","url":"https://github.com/square/okhttp","license":"Apache-2.0"},{"id":"/com/tomclaw/cache","name":"Disk LRU Cache","typ":"Utility","anti":"","url":"https://github.com/solkin/disk-lru-cache","license":"MIT"},{"id":"/com/wutka/dtd","name":"Wutka DTD","typ":"Development Aid","anti":"","url":"https://mvnrepository.com/artifact/com.liferay/com.wutka.dtd","license":""},{"id":"/com/yubico/yubikit","name":"Yubico Mobile Android SDK","typ":"Utility","anti":"","url":"https://github.com/Yubico/yubikit-android","license":"Apache-2.0"},{"id":"/cz/msebera/android/httpclient","name":"HttpClient Android repackaged","typ":"Utility","anti":"","url":"https://github.com/smarek/httpclient-android","license":"Apache-2.0"},{"id":"/dagger","name":"Dagger","typ":"Utility","anti":"","url":"https://github.com/google/dagger","license":"Apache-2.0"},{"id":"/edu/umd/cs/findbugs","name":"FindBugs","typ":"Utility","anti":"","url":"http://findbugs.sourceforge.net/","license":"LGPL-3.0-or-later"},{"id":"/io/jsonwebtoken","name":"Java JWT","typ":"Utility","anti":"","url":"https://github.com/jwtk/jjwt","license":"Apache-2.0"},{"id":"/io/minio","name":"MinIO Client SDK for Java","typ":"Utility","anti":"","url":"https://github.com/minio/minio-java","license":"Apache-2.0"},{"id":"/io/reactivex","name":"RxJava","typ":"Utility","anti":"","url":"https://github.com/ReactiveX/RxJava","license":"Apache-2.0"},{"id":"/javax/annotation","name":"JavaX Annotation API","typ":"Utility","anti":"","url":"https://github.com/amaembo/jsr-305/tree/master/ri","license":"BSD-3-Clause"},{"id":"/javax/inject","name":"JavaX Dependency Injection","typ":"Utility","anti":"","url":"https://docs.oracle.com/javaee/6/api/javax/inject/package-summary.html","license":"Apache-2.0"},{"id":"/javax/xml","name":"Javax XML","typ":"Utility","anti":"","url":"https://docs.oracle.com/en/java/javase/17/docs/api/java.xml/javax/xml/package-summary.html","license":"GPL-2.0"},{"id":"/junit","name":"Junit","typ":"Utility","anti":"","url":"https://junit.org/junit4/","license":"EPL-1.0"},{"id":"/kotlin","name":"Kotlin","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin","license":"Apache-2.0"},{"id":"/kotlinx/android/extensions-runtime","name":"Kotlin Android Extensions Runtime","typ":"Utility","anti":"","url":"https://github.com/JetBrains/kotlin/tree/master/plugins/android-extensions/android-extensions-runtime","license":"Apache-2.0"},{"id":"/kotlinx/coroutines","name":"kotlinx.coroutines","typ":"Utility","anti":"","url":"https://github.com/Kotlin/kotlinx.coroutines","license":"Apache-2.0"},{"id":"/net/jcip/annotations","name":"JCIP Annotations","typ":"Utility","anti":"","url":"https://github.com/stephenc/jcip-annotations","license":"Apache-2.0"},{"id":"/okio","name":"OkHttp okio Framework","typ":"Utility","anti":"","url":"https://github.com/square/okio","license":"Apache-2.0"},{"id":"/org/apache/commons","name":"Apache Commons","typ":"Development Framework","anti":"","url":"https://commons.apache.org/","license":"Apache-2.0"},{"id":"/org/apache/http","name":"Apache Http","typ":"Utility","anti":"","url":"https://hc.apache.org/","license":"Apache-2.0"},{"id":"/org/bouncycastle","name":"Bouncy Castle","typ":"Utility","anti":"","url":"http://www.bouncycastle.org/java.html","license":"MIT"},{"id":"/org/checkerframework","name":"Checker Framework","typ":"Utility","anti":"","url":"https://checkerframework.org/","license":"GPL-2.0-only"},{"id":"/org/codehaus/stax2","name":"Stax2 API","typ":"Utility","anti":"","url":"https://github.com/FasterXML/stax2-api","license":"BSD"},{"id":"/org/greenrobot/greendao","name":"greenDAO","typ":"Utility","anti":"","url":"https://github.com/greenrobot/greenDAO","license":"Apache-2.0"},{"id":"/org/hamcrest","name":"Java Hamcrest","typ":"Utility","anti":"","url":"https://github.com/hamcrest/JavaHamcrest","license":"BSD-3-Clause"},{"id":"/org/intellij","name":"IntelliJ IDEA","typ":"Utility","anti":"","url":"https://github.com/JetBrains/intellij-community","license":"Apache-2.0"},{"id":"/org/json","name":"JSON in Java","typ":"Utility","anti":"","url":"https://github.com/stleary/JSON-java","license":"MIT"},{"id":"/org/junit","name":"jUnit Java Unit Test","typ":"Utility","anti":"","url":"http://junit.org/","license":"EPL-2.0"},{"id":"/org/reactivestreams","name":"Reactive Streams","typ":"Utility","anti":"","url":"http://www.reactive-streams.org/","license":"MIT"},{"id":"/org/simpleframework/xml","name":"Simple","typ":"Utility","anti":"","url":"https://sourceforge.net/projects/simple/","license":"LGPL-2.1-only"},{"id":"/org/slf4j","name":"Simple Logging Facade for Java","typ":"Utility","anti":"","url":"https://www.slf4j.org/","license":"MIT"},{"id":"/org/xerial/snappy","name":"snappy-java","typ":"Utility","anti":"","url":"https://github.com/xerial/snappy-java","license":"Apache-2.0"},{"id":"/reactor/core","name":"Reactor Core","typ":"Utility","anti":"","url":"https://github.com/reactor/reactor-core","license":"Apache-2.0"},{"id":"/timber/log","name":"Timber","typ":"Utility","anti":"","url":"https://github.com/JakeWharton/timber","license":"Apache-2.0"}],"log":["Fetching library definitions from https://gitlab.com/IzzyOnDroid/repo/-/raw/master/lib","Loaded 3386 library definitions","Analyzing 'unsigned/org.cryptomator_fdroid.apk'...","Apktool returned: 0","Read 74877 bytes of smali path names from 'org.cryptomator_fdroid.dirlist'","Identified 103 libraries, 8 offenders.","Done analyzing 'unsigned/org.cryptomator_fdroid.apk'"],"self_url":"/artifacts/public/issuebot///iod-scan-apk.php.json"}} \ No newline at end of file From 833f951468534cefa0a02587b2d7068461f4785a Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Thu, 13 Apr 2023 17:00:24 +0200 Subject: [PATCH 13/13] Bump version to 1.9.0 [ci skip] --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 31dd3b987..d137e52d1 100644 --- a/build.gradle +++ b/build.gradle @@ -38,8 +38,8 @@ def getVersionCode = { -> allprojects { ext { androidApplicationId = 'org.cryptomator' - androidVersionCode = getVersionCode() // must be getVersionCode(). only at release tag set the actual value - androidVersionName = '1.9.0-SNAPSHOT' + androidVersionCode = 2797 // must be getVersionCode(). only at release tag set the actual value + androidVersionName = '1.9.0' } repositories { mavenCentral()