summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/codeql_analysis.yml4
-rw-r--r--.github/workflows/pull_request.yml4
-rw-r--r--AGENTS.md16
-rw-r--r--CONTRIBUTING.md6
-rw-r--r--README.md6
-rw-r--r--app/build.gradle.kts5
-rw-r--r--app/src/main/java/app/passwordstore/Application.kt11
-rw-r--r--app/src/main/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt (renamed from app/src/free/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt)2
-rw-r--r--app/src/nonFree/AndroidManifest.xml12
-rw-r--r--app/src/nonFree/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt171
-rw-r--r--app/src/nonFree/res/layout/activity_oreo_autofill_sms.xml61
-rw-r--r--app/src/nonFree/res/values-ar-rSA/strings.xml8
-rw-r--r--app/src/nonFree/res/values-ar/strings.xml8
-rw-r--r--app/src/nonFree/res/values-de/strings.xml8
-rw-r--r--app/src/nonFree/res/values-es-rES/strings.xml8
-rw-r--r--app/src/nonFree/res/values-es/strings.xml8
-rw-r--r--app/src/nonFree/res/values-fi-rFI/strings.xml8
-rw-r--r--app/src/nonFree/res/values-fi/strings.xml8
-rw-r--r--app/src/nonFree/res/values-gl-rES/strings.xml8
-rw-r--r--app/src/nonFree/res/values-gl/strings.xml8
-rw-r--r--app/src/nonFree/res/values-hu-rHU/strings.xml8
-rw-r--r--app/src/nonFree/res/values-hu/strings.xml8
-rw-r--r--app/src/nonFree/res/values-it/strings.xml8
-rw-r--r--app/src/nonFree/res/values-ko-rKR/strings.xml8
-rw-r--r--app/src/nonFree/res/values-ko/strings.xml8
-rw-r--r--app/src/nonFree/res/values-pl-rPL/strings.xml8
-rw-r--r--app/src/nonFree/res/values-pl/strings.xml8
-rw-r--r--app/src/nonFree/res/values-pt-rBR/strings.xml8
-rw-r--r--app/src/nonFree/res/values-ru/strings.xml8
-rw-r--r--app/src/nonFree/res/values-uk-rUA/strings.xml8
-rw-r--r--app/src/nonFree/res/values-uk/strings.xml8
-rw-r--r--app/src/nonFree/res/values/strings.xml9
-rw-r--r--build-logic/build.gradle.kts5
-rw-r--r--build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt8
-rw-r--r--build-logic/src/main/kotlin/app/passwordstore/gradle/SentryPlugin.kt52
-rw-r--r--build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/ProductFlavors.kt15
-rw-r--r--build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/SlimTests.kt16
-rw-r--r--gradle/libs.versions.toml3
-rw-r--r--sentry-stub/build.gradle.kts5
-rw-r--r--sentry-stub/lint-baseline.xml4
-rw-r--r--sentry-stub/src/main/kotlin/io/sentry/Scope.kt16
-rw-r--r--sentry-stub/src/main/kotlin/io/sentry/Sentry.kt13
-rw-r--r--sentry-stub/src/main/kotlin/io/sentry/protocol/User.kt17
-rw-r--r--settings.gradle.kts2
44 files changed, 23 insertions, 600 deletions
diff --git a/.github/workflows/codeql_analysis.yml b/.github/workflows/codeql_analysis.yml
index 8928d64e..63661320 100644
--- a/.github/workflows/codeql_analysis.yml
+++ b/.github/workflows/codeql_analysis.yml
@@ -5,8 +5,6 @@ on:
schedule:
- cron: '0 6 * * 1'
-env:
- SENTRY_DSN: 'https://public_key@example.com/project_id'
jobs:
analyze:
@@ -29,7 +27,7 @@ jobs:
- name: Build project
shell: bash
- run: ./gradlew assembleNonFreeRelease
+ run: ./gradlew :app:assembleRelease
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@c36620d31ac7c881962c3d9dd939c40ec9434f2b # v3.26.12
diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index b61a5320..8c1b3605 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -11,8 +11,6 @@ concurrency:
group: ${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
-env:
- SENTRY_DSN: 'https://public_key@example.com/project_id'
jobs:
check-codestyle:
@@ -64,7 +62,7 @@ jobs:
- name: Build debug APKs
shell: bash
- run: ./gradlew assembleFreeDebug assembleNonFreeDebug assembleNonFreeRelease
+ run: ./gradlew :app:assembleDebug :app:assembleRelease
- name: Upload Kotlin build report
if: "${{ always() }}"
diff --git a/AGENTS.md b/AGENTS.md
index 2061f26f..619123c3 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -11,7 +11,7 @@ started in November 2026 from upstream's last commit. Kotlin, Gradle, about 18k
Modules: `app` (UI, git sync, autofill service), `autofill-parser`, `crypto:common`,
`crypto:pgpainless`, `format:common`, `passgen:diceware`, `passgen:random`, `ui:compose`,
-`coroutine-utils`, `sentry-stub`. Build conventions live in `build-logic/`.
+`coroutine-utils`. Build conventions live in `build-logic/`.
The app name and `applicationId` (`app.passwordstore`) are still upstream's on purpose. Do not
rename them unless asked: it is tied to the release-signing decision (see Releases).
@@ -30,7 +30,7 @@ rename them unless asked: it is tied to the release-signing decision (see Releas
Needs JDK 17 and the Android SDK. `local.properties` (gitignored) holds `sdk.dir`.
- ./gradlew assembleFreeDebug # debug APK
+ ./gradlew :app:assembleDebug # debug APK
./gradlew test -PslimTests # unit tests, as CI runs them
./gradlew spotlessApply # formatting (ktfmt); CI runs spotlessCheck
./gradlew lint # all modules and variants, as CI runs it
@@ -38,11 +38,13 @@ Needs JDK 17 and the Android SDK. `local.properties` (gitignored) holds `sdk.dir
Prefix with `CI=1` to match CI: it turns Kotlin warnings into errors, so a deprecation warning
that passes locally fails CI. Before committing, run:
- CI=1 ./gradlew spotlessCheck test -PslimTests assembleFreeDebug assembleFreeRelease \
- assembleNonFreeDebug assembleNonFreeRelease lint metalavaCheckCompatibilityRelease
+ CI=1 ./gradlew spotlessCheck test -PslimTests :app:assembleDebug :app:assembleRelease \
+ lint metalavaCheckCompatibilityRelease
-Flavors: `free` (no proprietary dependencies, Sentry replaced by `sentry-stub`) and `nonFree`
-(adds Sentry and Play Services SMS OTP).
+No product flavors: the app has no proprietary dependencies, no Sentry and no Play Services
+(the upstream `nonFree` flavor was removed). Scope `assemble*` to `:app`; a bare
+`assembleRelease` also verifies library modules in release mode, where `ui:compose` fails on a
+drawable using an AppCompat attribute it does not depend on.
CI is `.github/workflows/pull_request.yml` (named "CI"), on push to `master`. Workflows use the
`setup-gradle` composite action from this fork at `@master`. It checks the repository out
@@ -61,7 +63,7 @@ in `local.properties`:
$ANDROID_HOME/emulator/emulator -avd aps-test -no-window -no-audio -no-boot-anim \
-no-snapshot-save -gpu swiftshader_indirect &
- ./gradlew installFreeDebug
+ ./gradlew installDebug
Drive it with `adb shell input`, `uiautomator dump` and `screencap`. Decrypt screens set
`FLAG_SECURE`, so screenshots of them are black; read them from the `uiautomator` dump.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 097c61dc..7f83d413 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -28,7 +28,6 @@ The source code is split across 12 modules and 1 subproject.
- `format/common` handles parsing the `pass` file format.
- `passgen/diceware` is our new password generator that implements the [Diceware](https://theworld.com/~reinhold/diceware.html) algorithm.
- `passgen/random` contains the default password generator.
-- `sentry-stub` contains no-op variants of [Sentry](https://sentry.io/) APIs that we use to ensure the FOSS-only, telemetry-free variant of APS continues to compile in absence of Sentry dependencies.
- `ui/compose` has the theming code for building UI components in [Jetpack Compose](https://developer.android.com/jetpack/compose).
- `app` is everything else that constitutes APS.
@@ -47,11 +46,10 @@ We bundle a [`ignore-revs-file`](https://git-scm.com/docs/git-blame#Documentatio
This document assumes that you already have an Android development environment ready. If not, refer to Google's documentation on [installing Android Studio](https://developer.android.com/studio/preview). APS will build with all editions of Android Studio, but development typically happens with the Canary channel.
-The app comes in two 'flavors', a FOSS-only **free** variant and a **nonFree** variant that contains proprietary Google dependencies to facilitate some additional features as documented [here](https://android-password-store.github.io/docs/users/build-types). Decide what flavor you want to build, then run the following command to generate a debug APK.
+Run the following command to generate a debug APK.
```shell
-./gradlew collectFreeDebugApks # for 'free' flavor
-./gradlew collectNonFreeDebugApks # for 'nonFree' flavor
+./gradlew collectDebugApks
```
You can find the generated APK at `app/outputs`.
diff --git a/README.md b/README.md
index b9de0a24..2e04034b 100644
--- a/README.md
+++ b/README.md
@@ -24,12 +24,12 @@ Requires JDK 17 and the Android SDK command-line tools. Point Gradle at the SDK
`local.properties` file (`sdk.dir=/path/to/Android/Sdk`), then:
```
-./gradlew assembleFreeDebug # APK in app/build/outputs/apk/free/debug/
+./gradlew :app:assembleDebug # APK in app/build/outputs/apk/debug/
./gradlew test -PslimTests # unit tests
```
-The `free` flavor has no proprietary dependencies. The `nonFree` flavor adds Sentry crash
-reporting and Google Play Services SMS OTP autofill.
+The app has no proprietary dependencies: no crash reporting, no telemetry, no Google Play
+Services.
## Issues
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index bff7d73a..0105bd4e 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -8,7 +8,6 @@ plugins {
id("com.github.android-password-store.android-application")
id("com.github.android-password-store.kotlin-android")
id("com.github.android-password-store.versioning-plugin")
- id("com.github.android-password-store.sentry")
id("com.github.android-password-store.rename-artifacts")
alias(libs.plugins.hilt)
alias(libs.plugins.ksp)
@@ -100,10 +99,6 @@ dependencies {
because("SSHJ now uses SLF4J 2.0 which we don't want")
}
- nonFreeImplementation(libs.thirdparty.nonfree.googlePlayAuthApiPhone)
- nonFreeImplementation(libs.thirdparty.nonfree.sentry)
- freeImplementation(projects.sentryStub)
-
testImplementation(libs.testing.robolectric)
testImplementation(libs.testing.sharedPrefsMock)
testImplementation(libs.bundles.testDependencies)
diff --git a/app/src/main/java/app/passwordstore/Application.kt b/app/src/main/java/app/passwordstore/Application.kt
index 9bc4c83e..8eb421f4 100644
--- a/app/src/main/java/app/passwordstore/Application.kt
+++ b/app/src/main/java/app/passwordstore/Application.kt
@@ -17,7 +17,6 @@ import app.passwordstore.injection.context.FilesDirPath
import app.passwordstore.injection.prefs.SettingsPreferences
import app.passwordstore.util.coroutines.DispatcherProvider
import app.passwordstore.util.extensions.getString
-import app.passwordstore.util.features.Feature
import app.passwordstore.util.features.Features
import app.passwordstore.util.git.sshj.setUpBouncyCastleForSshj
import app.passwordstore.util.proxy.ProxyUtils
@@ -26,8 +25,6 @@ import app.passwordstore.util.settings.PreferenceKeys
import app.passwordstore.util.settings.runMigrations
import com.google.android.material.color.DynamicColors
import dagger.hilt.android.HiltAndroidApp
-import io.sentry.Sentry
-import io.sentry.protocol.User
import java.util.concurrent.Executors
import javax.inject.Inject
import logcat.AndroidLogcatLogger
@@ -67,14 +64,6 @@ class Application : android.app.Application(), SharedPreferences.OnSharedPrefere
runMigrations(filesDirPath, prefs, gitSettings)
proxyUtils.setDefaultProxy()
DynamicColors.applyToActivitiesIfAvailable(this)
- Sentry.configureScope { scope ->
- val user = User()
- user.data =
- Feature.entries.associate { feature ->
- "features.${feature.configKey}" to features.isEnabled(feature).toString()
- }
- scope.user = user
- }
setupScreenOffHandler()
}
diff --git a/app/src/free/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt b/app/src/main/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt
index 83d1fdae..7acc72f9 100644
--- a/app/src/free/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt
+++ b/app/src/main/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt
@@ -8,6 +8,8 @@ import android.content.Context
import android.content.IntentSender
import androidx.appcompat.app.AppCompatActivity
+// ponytail: filling OTPs from SMS needed Play Services (removed with the nonFree flavor), so
+// this stub keeps the feature off. Delete it together with the FillOtpFromSms autofill paths.
@Suppress("UNUSED_PARAMETER")
class AutofillSmsActivity : AppCompatActivity() {
diff --git a/app/src/nonFree/AndroidManifest.xml b/app/src/nonFree/AndroidManifest.xml
deleted file mode 100644
index 8a03b626..00000000
--- a/app/src/nonFree/AndroidManifest.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
- <application>
- <meta-data android:name="io.sentry.dsn" android:value="${sentryDsn}" />
- <meta-data android:name="io.sentry.traces.sample-rate" android:value="1.0" />
- <meta-data android:name="io.sentry.traces.profiling.sample-rate" android:value="1.0" />
- </application>
-</manifest>
diff --git a/app/src/nonFree/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt b/app/src/nonFree/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt
deleted file mode 100644
index 1f627c06..00000000
--- a/app/src/nonFree/java/app/passwordstore/autofill/oreo/ui/AutofillSmsActivity.kt
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-package app.passwordstore.autofill.oreo.ui
-
-import android.app.Activity
-import android.app.PendingIntent
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.content.IntentFilter
-import android.content.IntentSender
-import android.os.Build
-import android.os.Bundle
-import android.view.autofill.AutofillManager
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.content.ContextCompat
-import androidx.lifecycle.lifecycleScope
-import app.passwordstore.databinding.ActivityOreoAutofillSmsBinding
-import app.passwordstore.util.autofill.AutofillResponseBuilder
-import app.passwordstore.util.coroutines.DispatcherProvider
-import app.passwordstore.util.extensions.viewBinding
-import com.github.androidpasswordstore.autofillparser.AutofillAction
-import com.github.androidpasswordstore.autofillparser.Credentials
-import com.github.michaelbull.result.onFailure
-import com.github.michaelbull.result.runCatching
-import com.google.android.gms.auth.api.phone.SmsCodeRetriever
-import com.google.android.gms.auth.api.phone.SmsRetriever
-import com.google.android.gms.common.ConnectionResult
-import com.google.android.gms.common.GoogleApiAvailability
-import com.google.android.gms.common.api.ResolvableApiException
-import com.google.android.gms.tasks.Task
-import dagger.hilt.android.AndroidEntryPoint
-import java.util.concurrent.ExecutionException
-import javax.inject.Inject
-import kotlin.coroutines.resume
-import kotlin.coroutines.resumeWithException
-import kotlin.coroutines.suspendCoroutine
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-import logcat.LogPriority.ERROR
-import logcat.LogPriority.WARN
-import logcat.asLog
-import logcat.logcat
-
-suspend fun <T> Task<T>.suspendableAwait() =
- suspendCoroutine<T> { cont ->
- addOnSuccessListener { result: T -> cont.resume(result) }
- addOnFailureListener { e ->
- // Unwrap specific exceptions (e.g. ResolvableApiException) from ExecutionException.
- val cause = (e as? ExecutionException)?.cause ?: e
- cont.resumeWithException(cause)
- }
- }
-
-@AndroidEntryPoint
-class AutofillSmsActivity : AppCompatActivity() {
-
- @Inject lateinit var dispatcherProvider: DispatcherProvider
-
- companion object {
-
- private var fillOtpFromSmsRequestCode = 1
-
- fun shouldOfferFillFromSms(context: Context): Boolean {
- if (Build.VERSION.SDK_INT < 28) return false
- val googleApiAvailabilityInstance = GoogleApiAvailability.getInstance()
- val googleApiStatus = googleApiAvailabilityInstance.isGooglePlayServicesAvailable(context)
- if (googleApiStatus != ConnectionResult.SUCCESS) {
- logcat(WARN) {
- "Google Play Services unavailable or not updated: ${googleApiAvailabilityInstance.getErrorString(googleApiStatus)}"
- }
- return false
- }
- // https://developer.android.com/guide/topics/text/autofill-services#sms-autofill
- if (googleApiAvailabilityInstance.getApkVersion(context) < 190056000) {
- logcat(WARN) { "Google Play Service 19.0.56 or higher required for SMS OTP Autofill" }
- return false
- }
- return true
- }
-
- fun makeFillOtpFromSmsIntentSender(context: Context): IntentSender {
- val intent = Intent(context, AutofillSmsActivity::class.java)
- return PendingIntent.getActivity(
- context,
- fillOtpFromSmsRequestCode++,
- intent,
- PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE,
- )
- .intentSender
- }
- }
-
- private val binding by viewBinding(ActivityOreoAutofillSmsBinding::inflate)
-
- private lateinit var clientState: Bundle
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(binding.root)
- setResult(RESULT_CANCELED)
- binding.cancelButton.setOnClickListener { finish() }
- }
-
- override fun onStart() {
- super.onStart()
- clientState =
- intent?.getBundleExtra(AutofillManager.EXTRA_CLIENT_STATE)
- ?: run {
- logcat(WARN) { "AutofillSmsActivity started without EXTRA_CLIENT_STATE" }
- finish()
- return
- }
-
- ContextCompat.registerReceiver(
- this,
- smsCodeRetrievedReceiver,
- IntentFilter(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION),
- SmsRetriever.SEND_PERMISSION,
- null,
- ContextCompat.RECEIVER_EXPORTED,
- )
- lifecycleScope.launch { waitForSms() }
- }
-
- // Retry starting the SMS code retriever after a permission request.
- @Deprecated("Deprecated in Java")
- override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
- super.onActivityResult(requestCode, resultCode, data)
- if (resultCode != Activity.RESULT_OK) return
- lifecycleScope.launch { waitForSms() }
- }
-
- private suspend fun waitForSms() {
- val smsClient = SmsCodeRetriever.getAutofillClient(this@AutofillSmsActivity)
- runCatching {
- withContext(dispatcherProvider.io()) {
- smsClient.startSmsCodeRetriever().suspendableAwait()
- }
- }
- .onFailure { e ->
- if (e is ResolvableApiException) {
- e.startResolutionForResult(this@AutofillSmsActivity, 1)
- } else {
- logcat(ERROR) { e.asLog() }
- withContext(dispatcherProvider.main()) { finish() }
- }
- }
- }
-
- private val smsCodeRetrievedReceiver =
- object : BroadcastReceiver() {
- override fun onReceive(context: Context, intent: Intent) {
- val smsCode = intent.getStringExtra(SmsCodeRetriever.EXTRA_SMS_CODE)
- val fillInDataset =
- AutofillResponseBuilder.makeFillInDataset(
- this@AutofillSmsActivity,
- Credentials(null, null, smsCode),
- clientState,
- AutofillAction.FillOtpFromSms,
- )
- setResult(
- RESULT_OK,
- Intent().apply { putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, fillInDataset) },
- )
- finish()
- }
- }
-}
diff --git a/app/src/nonFree/res/layout/activity_oreo_autofill_sms.xml b/app/src/nonFree/res/layout/activity_oreo_autofill_sms.xml
deleted file mode 100644
index aa921185..00000000
--- a/app/src/nonFree/res/layout/activity_oreo_autofill_sms.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingHorizontal="10dp"
- tools:context="app.passwordstore.AutofillFilterView">
-
- <ImageView
- android:id="@+id/cover"
- android:layout_width="0dp"
- android:layout_height="50dp"
- android:layout_margin="10dp"
- android:contentDescription="@string/app_name"
- android:src="@drawable/ic_launcher_foreground"
- app:layout_constraintBottom_toTopOf="@id/text"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintVertical_bias="0.0" />
-
- <TextView
- android:id="@+id/text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="10dp"
- android:text="@string/oreo_autofill_waiting_for_sms"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/cover" />
-
- <ProgressBar
- android:id="@+id/progress"
- style="@style/Widget.MaterialComponents.CircularProgressIndicator"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="10dp"
- app:layout_constraintBottom_toTopOf="@id/cancelButton"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/text" />
-
- <Button
- android:id="@+id/cancelButton"
- style="@style/Widget.MaterialComponents.Button.TextButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="10dp"
- android:text="@string/dialog_cancel"
- android:textColor="?attr/colorSecondary"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/progress" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/nonFree/res/values-ar-rSA/strings.xml b/app/src/nonFree/res/values-ar-rSA/strings.xml
deleted file mode 100644
index 7a6a3cb6..00000000
--- a/app/src/nonFree/res/values-ar-rSA/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">في انتظار الرسائل القصيرة…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-ar/strings.xml b/app/src/nonFree/res/values-ar/strings.xml
deleted file mode 100644
index 7a6a3cb6..00000000
--- a/app/src/nonFree/res/values-ar/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">في انتظار الرسائل القصيرة…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-de/strings.xml b/app/src/nonFree/res/values-de/strings.xml
deleted file mode 100644
index 1e615e43..00000000
--- a/app/src/nonFree/res/values-de/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Warte auf SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-es-rES/strings.xml b/app/src/nonFree/res/values-es-rES/strings.xml
deleted file mode 100644
index a80f9454..00000000
--- a/app/src/nonFree/res/values-es-rES/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Esperando por SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-es/strings.xml b/app/src/nonFree/res/values-es/strings.xml
deleted file mode 100644
index a80f9454..00000000
--- a/app/src/nonFree/res/values-es/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Esperando por SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-fi-rFI/strings.xml b/app/src/nonFree/res/values-fi-rFI/strings.xml
deleted file mode 100644
index a57feb73..00000000
--- a/app/src/nonFree/res/values-fi-rFI/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Odotetaan SMS-viestiä…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-fi/strings.xml b/app/src/nonFree/res/values-fi/strings.xml
deleted file mode 100644
index a57feb73..00000000
--- a/app/src/nonFree/res/values-fi/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Odotetaan SMS-viestiä…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-gl-rES/strings.xml b/app/src/nonFree/res/values-gl-rES/strings.xml
deleted file mode 100644
index b68283db..00000000
--- a/app/src/nonFree/res/values-gl-rES/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Agardando polo SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-gl/strings.xml b/app/src/nonFree/res/values-gl/strings.xml
deleted file mode 100644
index b68283db..00000000
--- a/app/src/nonFree/res/values-gl/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Agardando polo SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-hu-rHU/strings.xml b/app/src/nonFree/res/values-hu-rHU/strings.xml
deleted file mode 100644
index 6ebce291..00000000
--- a/app/src/nonFree/res/values-hu-rHU/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">SMS-re várakozás…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-hu/strings.xml b/app/src/nonFree/res/values-hu/strings.xml
deleted file mode 100644
index 6ebce291..00000000
--- a/app/src/nonFree/res/values-hu/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">SMS-re várakozás…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-it/strings.xml b/app/src/nonFree/res/values-it/strings.xml
deleted file mode 100644
index dcd1264d..00000000
--- a/app/src/nonFree/res/values-it/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">In attesa del SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-ko-rKR/strings.xml b/app/src/nonFree/res/values-ko-rKR/strings.xml
deleted file mode 100644
index d98dca63..00000000
--- a/app/src/nonFree/res/values-ko-rKR/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">SMS를 기다리는 중입니다…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-ko/strings.xml b/app/src/nonFree/res/values-ko/strings.xml
deleted file mode 100644
index d98dca63..00000000
--- a/app/src/nonFree/res/values-ko/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">SMS를 기다리는 중입니다…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-pl-rPL/strings.xml b/app/src/nonFree/res/values-pl-rPL/strings.xml
deleted file mode 100644
index ba2f05ed..00000000
--- a/app/src/nonFree/res/values-pl-rPL/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Oczekiwanie na SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-pl/strings.xml b/app/src/nonFree/res/values-pl/strings.xml
deleted file mode 100644
index ba2f05ed..00000000
--- a/app/src/nonFree/res/values-pl/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Oczekiwanie na SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-pt-rBR/strings.xml b/app/src/nonFree/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 0f4b8ed5..00000000
--- a/app/src/nonFree/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Esperando pelo SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-ru/strings.xml b/app/src/nonFree/res/values-ru/strings.xml
deleted file mode 100644
index 5f214d53..00000000
--- a/app/src/nonFree/res/values-ru/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Ожидание SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-uk-rUA/strings.xml b/app/src/nonFree/res/values-uk-rUA/strings.xml
deleted file mode 100644
index 86d935ee..00000000
--- a/app/src/nonFree/res/values-uk-rUA/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Очікування SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values-uk/strings.xml b/app/src/nonFree/res/values-uk/strings.xml
deleted file mode 100644
index 86d935ee..00000000
--- a/app/src/nonFree/res/values-uk/strings.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-<resources>
- <string name="oreo_autofill_waiting_for_sms">Очікування SMS…</string>
-</resources>
diff --git a/app/src/nonFree/res/values/strings.xml b/app/src/nonFree/res/values/strings.xml
deleted file mode 100644
index 7d9570b6..00000000
--- a/app/src/nonFree/res/values/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
- ~ Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- ~ SPDX-License-Identifier: GPL-3.0-only
- -->
-
-<resources>
-
- <string name="oreo_autofill_waiting_for_sms">Waiting for SMS…</string>
-</resources>
diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts
index dd9c0c8b..2d7700f0 100644
--- a/build-logic/build.gradle.kts
+++ b/build-logic/build.gradle.kts
@@ -45,10 +45,6 @@ gradlePlugin {
id = "com.github.android-password-store.rename-artifacts"
implementationClass = "app.passwordstore.gradle.RenameArtifactsPlugin"
}
- register("sentry") {
- id = "com.github.android-password-store.sentry"
- implementationClass = "app.passwordstore.gradle.SentryPlugin"
- }
register("spotless") {
id = "com.github.android-password-store.spotless"
implementationClass = "app.passwordstore.gradle.SpotlessPlugin"
@@ -77,7 +73,6 @@ dependencies {
implementation(libs.build.moshi.kotlin)
implementation(libs.build.okhttp)
implementation(libs.build.semver)
- implementation(libs.build.sentry)
implementation(libs.build.spotless)
implementation(libs.build.vcu)
implementation(libs.kotlinx.coroutines.core)
diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
index 9b43cbe1..6d38d1fc 100644
--- a/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
+++ b/build-logic/src/main/kotlin/app/passwordstore/gradle/ApplicationPlugin.kt
@@ -7,8 +7,6 @@
package app.passwordstore.gradle
-import app.passwordstore.gradle.flavors.FlavorDimensions
-import app.passwordstore.gradle.flavors.ProductFlavors
import app.passwordstore.gradle.signing.configureBuildSigning
import com.android.build.api.dsl.ApplicationExtension
import com.android.build.gradle.AppPlugin
@@ -55,12 +53,6 @@ class ApplicationPlugin : Plugin<Project> {
}
}
- flavorDimensions.add(FlavorDimensions.FREE)
- productFlavors {
- register(ProductFlavors.FREE) {}
- register(ProductFlavors.NON_FREE) {}
- }
-
project.configureBuildSigning()
}
}
diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/SentryPlugin.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/SentryPlugin.kt
deleted file mode 100644
index 1503bb9d..00000000
--- a/build-logic/src/main/kotlin/app/passwordstore/gradle/SentryPlugin.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package app.passwordstore.gradle
-
-import app.passwordstore.gradle.flavors.FlavorDimensions
-import app.passwordstore.gradle.flavors.ProductFlavors
-import com.android.build.api.variant.ApplicationAndroidComponentsExtension
-import io.sentry.android.gradle.SentryPlugin
-import io.sentry.android.gradle.extensions.SentryPluginExtension
-import org.gradle.api.Plugin
-import org.gradle.api.Project
-import org.gradle.kotlin.dsl.apply
-import org.gradle.kotlin.dsl.configure
-
-@Suppress("Unused")
-class SentryPlugin : Plugin<Project> {
-
- override fun apply(project: Project) {
- project.pluginManager.withPlugin("com.android.application") {
- project.extensions.configure<ApplicationAndroidComponentsExtension> {
- onVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) {
- variant ->
- val sentryDsn = project.providers.environmentVariable(SENTRY_DSN_PROPERTY).orElse("")
- variant.manifestPlaceholders.put("sentryDsn", sentryDsn.get())
- }
- }
- project.plugins.apply(SentryPlugin::class)
- project.extensions.configure<SentryPluginExtension> {
- includeProguardMapping.set(
- project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
- )
- autoUploadProguardMapping.set(
- project.providers.gradleProperty(SENTRY_UPLOAD_MAPPINGS_PROPERTY).isPresent
- )
- ignoredBuildTypes.set(setOf("debug"))
- ignoredFlavors.set(setOf(ProductFlavors.FREE))
- tracingInstrumentation { enabled.set(false) }
- autoInstallation.enabled.set(false)
- includeDependenciesReport.set(false)
- }
- }
- }
-
- private companion object {
-
- private const val SENTRY_DSN_PROPERTY = "SENTRY_DSN"
- private const val SENTRY_UPLOAD_MAPPINGS_PROPERTY = "sentryUploadMappings"
- }
-}
diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/ProductFlavors.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/ProductFlavors.kt
deleted file mode 100644
index 2206c4c8..00000000
--- a/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/ProductFlavors.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-package app.passwordstore.gradle.flavors
-
-object FlavorDimensions {
- const val FREE = "free"
-}
-
-object ProductFlavors {
- const val FREE = "free"
- const val NON_FREE = "nonFree"
-}
diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/SlimTests.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/SlimTests.kt
index 0ed72afa..3ba2acf8 100644
--- a/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/SlimTests.kt
+++ b/build-logic/src/main/kotlin/app/passwordstore/gradle/flavors/SlimTests.kt
@@ -12,12 +12,11 @@ import org.gradle.api.Project
import org.gradle.kotlin.dsl.findByType
/**
- * When the "slimTests" project property is provided, disable the unit test tasks on `release` build
- * type and `nonFree` product flavor to avoid running the same tests repeatedly in different build
- * variants.
+ * When the "slimTests" project property is provided, disable the unit test tasks on the `release`
+ * build type to avoid running the same tests twice.
*
- * Examples: `./gradlew test -PslimTests` will run unit tests for `nonFreeDebug` and `debug` build
- * variants in Android App and Library projects, and all tests in JVM projects.
+ * Example: `./gradlew test -PslimTests` runs unit tests for the `debug` variant in Android App and
+ * Library projects, and all tests in JVM projects.
*/
@Suppress("UnstableApiUsage")
internal fun Project.configureSlimTests() {
@@ -30,16 +29,11 @@ internal fun Project.configureSlimTests() {
}
}
- // Disable unit test tasks on the release build type and free flavor for Android Application
- // projects.
+ // Disable unit test tasks on the release build type for Android Application projects.
extensions.findByType<ApplicationAndroidComponentsExtension>()?.run {
beforeVariants(selector().withBuildType(BUILD_TYPE_RELEASE)) {
(it as HasUnitTestBuilder).enableUnitTest = false
}
- beforeVariants(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) {
- (it as HasUnitTestBuilder).enableUnitTest = false
- it.androidTest.enable = false
- }
}
}
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index ca3ecaa5..56a83a3d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -45,7 +45,6 @@ build-moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" }
build-moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" }
build-okhttp = "com.squareup.okhttp3:okhttp:5.5.1"
build-semver = "com.github.zafarkhaja:java-semver:0.10.2"
-build-sentry = "io.sentry.android.gradle:io.sentry.android.gradle.gradle.plugin:6.25.0"
build-spotless = "com.diffplug.spotless:spotless-plugin-gradle:8.10.4"
build-vcu = "nl.littlerobots.version-catalog-update:nl.littlerobots.version-catalog-update.gradle.plugin:1.1.2"
compose-bom = "androidx.compose:compose-bom:2024.09.03"
@@ -85,8 +84,6 @@ thirdparty-kotlinResult-coroutines = { module = "com.michael-bull.kotlin-result:
thirdparty-leakcanary-plumber = "com.squareup.leakcanary:plumber-android-startup:2.14"
thirdparty-logcat = "com.squareup.logcat:logcat:0.1"
thirdparty-modernAndroidPrefs = "de.maxr1998:modernandroidpreferences:2.4.0-beta2"
-thirdparty-nonfree-googlePlayAuthApiPhone = "com.google.android.gms:play-services-auth-api-phone:18.1.0"
-thirdparty-nonfree-sentry = "io.sentry:sentry-android:8.62.0"
thirdparty-pgpainless = "org.pgpainless:pgpainless-core:1.7.8"
thirdparty-slack-lints = "com.slack.lint:slack-lint-checks:0.8.0"
thirdparty-slf4j-api = { module = "org.slf4j:slf4j-api", version = { strictly = "[1.7, 1.8[", prefer = "1.7.36" } }
diff --git a/sentry-stub/build.gradle.kts b/sentry-stub/build.gradle.kts
deleted file mode 100644
index 0a1cdfea..00000000
--- a/sentry-stub/build.gradle.kts
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- * Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-plugins { id("com.github.android-password-store.kotlin-jvm-library") }
diff --git a/sentry-stub/lint-baseline.xml b/sentry-stub/lint-baseline.xml
deleted file mode 100644
index 2c8fe410..00000000
--- a/sentry-stub/lint-baseline.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.6.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.6.0)" variant="all" version="8.6.0">
-
-</issues>
diff --git a/sentry-stub/src/main/kotlin/io/sentry/Scope.kt b/sentry-stub/src/main/kotlin/io/sentry/Scope.kt
deleted file mode 100644
index 256496cd..00000000
--- a/sentry-stub/src/main/kotlin/io/sentry/Scope.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-@file:Suppress("Unused", "UNUSED_PARAMETER")
-
-package io.sentry
-
-import io.sentry.protocol.User
-
-public class Scope {
- public var user: User? = null
-
- public fun setTag(tag: String, value: String) {}
-}
diff --git a/sentry-stub/src/main/kotlin/io/sentry/Sentry.kt b/sentry-stub/src/main/kotlin/io/sentry/Sentry.kt
deleted file mode 100644
index 103766a8..00000000
--- a/sentry-stub/src/main/kotlin/io/sentry/Sentry.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-@file:Suppress("Unused", "UNUSED_PARAMETER")
-
-package io.sentry
-
-/** Stubs for the Sentry SDK */
-public object Sentry {
- public fun configureScope(callback: (Scope) -> Unit) {}
-}
diff --git a/sentry-stub/src/main/kotlin/io/sentry/protocol/User.kt b/sentry-stub/src/main/kotlin/io/sentry/protocol/User.kt
deleted file mode 100644
index 318ab8cf..00000000
--- a/sentry-stub/src/main/kotlin/io/sentry/protocol/User.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright © 2014-2024 The Android Password Store Authors. All Rights Reserved.
- * SPDX-License-Identifier: GPL-3.0-only
- */
-
-@file:Suppress("Unused", "UNUSED_PARAMETER")
-
-package io.sentry.protocol
-
-public data class User(
- public var email: String? = null,
- public var id: String? = null,
- public var username: String? = null,
- public var ipAddress: String? = null,
- public var data: Map<String?, String>? = null,
- public var unknown: Map<String?, String>? = null,
-)
diff --git a/settings.gradle.kts b/settings.gradle.kts
index a27a0cbd..481b2706 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -75,6 +75,4 @@ include("passgen:diceware")
include("passgen:random")
-include("sentry-stub")
-
include("ui:compose")