Compare commits

..

5 Commits

Author SHA1 Message Date
Koitharu
fae958f6ef Remove unused resources 2021-07-07 07:25:31 +03:00
Koitharu
d8db89326f Info about background restrictions 2021-07-07 07:13:02 +03:00
Koitharu
3804896788 Save backup instead of sharing 2021-07-06 20:26:52 +03:00
Koitharu
4aedea7e15 Improve accesibility in reader 2021-07-06 19:20:41 +03:00
Koitharu
ed89d76488 Fix resource shrinking 2021-07-03 16:12:16 +03:00
21 changed files with 112 additions and 74 deletions

View File

@@ -13,8 +13,9 @@ android {
applicationId 'org.koitharu.kotatsu' applicationId 'org.koitharu.kotatsu'
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 30 targetSdkVersion 30
versionCode 366 versionCode 367
versionName '1.1.1' versionName '1.1.2'
generatedDensities = []
kapt { kapt {
arguments { arguments {
@@ -93,7 +94,7 @@ dependencies {
implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.0' implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.0'
implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.0' implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.0'
implementation 'io.insert-koin:koin-android:3.1.0' implementation 'io.insert-koin:koin-android:3.1.2'
implementation 'io.coil-kt:coil-base:1.2.2' implementation 'io.coil-kt:coil-base:1.2.2'
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0' implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
implementation 'com.github.solkin:disk-lru-cache:1.2' implementation 'com.github.solkin:disk-lru-cache:1.2'
@@ -102,5 +103,5 @@ dependencies {
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
testImplementation 'org.json:json:20210307' testImplementation 'org.json:json:20210307'
testImplementation 'io.insert-koin:koin-test-junit4:3.1.0' testImplementation 'io.insert-koin:koin-test-junit4:3.1.2'
} }

View File

@@ -166,6 +166,7 @@ class AppSettings private constructor(private val prefs: SharedPreferences) :
const val KEY_LOCAL_STORAGE = "local_storage" const val KEY_LOCAL_STORAGE = "local_storage"
const val KEY_READER_SWITCHERS = "reader_switchers" const val KEY_READER_SWITCHERS = "reader_switchers"
const val KEY_TRACK_SOURCES = "track_sources" const val KEY_TRACK_SOURCES = "track_sources"
const val KEY_TRACK_WARNING = "track_warning"
const val KEY_APP_UPDATE = "app_update" const val KEY_APP_UPDATE = "app_update"
const val KEY_APP_UPDATE_AUTO = "app_update_auto" const val KEY_APP_UPDATE_AUTO = "app_update_auto"
const val KEY_TRACKER_NOTIFICATIONS = "tracker_notifications" const val KEY_TRACKER_NOTIFICATIONS = "tracker_notifications"

View File

@@ -220,7 +220,7 @@ class ReaderActivity : BaseFullscreenActivity<ActivityReaderBinding>(),
} }
override fun onGridTouch(area: Int) { override fun onGridTouch(area: Int) {
controlDelegate.onGridTouch(area) controlDelegate.onGridTouch(area, binding.container)
} }
override fun onProcessTouch(rawX: Int, rawY: Int): Boolean { override fun onProcessTouch(rawX: Int, rawY: Int): Boolean {

View File

@@ -1,6 +1,8 @@
package org.koitharu.kotatsu.reader.ui package org.koitharu.kotatsu.reader.ui
import android.view.KeyEvent import android.view.KeyEvent
import android.view.SoundEffectConstants
import android.view.View
import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleCoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
@@ -30,18 +32,27 @@ class ReaderControlDelegate(
}.launchIn(scope) }.launchIn(scope)
} }
fun onGridTouch(area: Int) { fun onGridTouch(area: Int, view: View) {
when (area) { when (area) {
GridTouchHelper.AREA_CENTER -> { GridTouchHelper.AREA_CENTER -> {
listener.toggleUiVisibility() listener.toggleUiVisibility()
view.playSoundEffect(SoundEffectConstants.CLICK)
}
GridTouchHelper.AREA_TOP -> if (isTapSwitchEnabled) {
listener.switchPageBy(-1)
view.playSoundEffect(SoundEffectConstants.NAVIGATION_UP)
} }
GridTouchHelper.AREA_TOP,
GridTouchHelper.AREA_LEFT -> if (isTapSwitchEnabled) { GridTouchHelper.AREA_LEFT -> if (isTapSwitchEnabled) {
listener.switchPageBy(-1) listener.switchPageBy(-1)
view.playSoundEffect(SoundEffectConstants.NAVIGATION_LEFT)
}
GridTouchHelper.AREA_BOTTOM -> if (isTapSwitchEnabled) {
listener.switchPageBy(1)
view.playSoundEffect(SoundEffectConstants.NAVIGATION_DOWN)
} }
GridTouchHelper.AREA_BOTTOM,
GridTouchHelper.AREA_RIGHT -> if (isTapSwitchEnabled) { GridTouchHelper.AREA_RIGHT -> if (isTapSwitchEnabled) {
listener.switchPageBy(1) listener.switchPageBy(1)
view.playSoundEffect(SoundEffectConstants.NAVIGATION_RIGHT)
} }
} }
} }

View File

@@ -4,6 +4,9 @@ import android.content.Intent
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.text.style.URLSpan
import androidx.core.text.buildSpannedString
import androidx.core.text.inSpans
import androidx.preference.MultiSelectListPreference import androidx.preference.MultiSelectListPreference
import androidx.preference.Preference import androidx.preference.Preference
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
@@ -19,6 +22,17 @@ class TrackerSettingsFragment : BasePreferenceFragment(R.string.new_chapters_che
findPreference<MultiSelectListPreference>(AppSettings.KEY_TRACK_SOURCES) findPreference<MultiSelectListPreference>(AppSettings.KEY_TRACK_SOURCES)
?.summaryProvider = MultiSummaryProvider(R.string.dont_check) ?.summaryProvider = MultiSummaryProvider(R.string.dont_check)
val warningPreference = findPreference<Preference>(AppSettings.KEY_TRACK_WARNING)
if (warningPreference != null) {
warningPreference.summary = buildSpannedString {
append(getString(R.string.tracker_warning))
append(" ")
inSpans(URLSpan("https://dontkillmyapp.com/")) {
append(getString(R.string.read_more))
}
}
warningPreference
}
} }
override fun onPreferenceTreeClick(preference: Preference?): Boolean { override fun onPreferenceTreeClick(preference: Preference?): Boolean {

View File

@@ -1,27 +1,41 @@
package org.koitharu.kotatsu.settings.backup package org.koitharu.kotatsu.settings.backup
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible import androidx.core.view.isVisible
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.AlertDialogFragment import org.koitharu.kotatsu.base.ui.AlertDialogFragment
import org.koitharu.kotatsu.databinding.DialogProgressBinding import org.koitharu.kotatsu.databinding.DialogProgressBinding
import org.koitharu.kotatsu.utils.ShareHelper
import org.koitharu.kotatsu.utils.ext.getDisplayMessage import org.koitharu.kotatsu.utils.ext.getDisplayMessage
import org.koitharu.kotatsu.utils.progress.Progress import org.koitharu.kotatsu.utils.progress.Progress
import java.io.File import java.io.File
import java.io.FileOutputStream
class BackupDialogFragment : AlertDialogFragment<DialogProgressBinding>() { class BackupDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
private val viewModel by viewModel<BackupViewModel>(mode = LazyThreadSafetyMode.NONE) private val viewModel by viewModel<BackupViewModel>(mode = LazyThreadSafetyMode.NONE)
private var backup: File? = null
private val saveFileContract =
registerForActivityResult(ActivityResultContracts.CreateDocument()) { uri ->
val file = backup
if (uri != null && file != null) {
saveBackup(file, uri)
} else {
dismiss()
}
}
override fun onInflateView( override fun onInflateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup? container: ViewGroup?,
) = DialogProgressBinding.inflate(inflater, container, false) ) = DialogProgressBinding.inflate(inflater, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@@ -60,8 +74,22 @@ class BackupDialogFragment : AlertDialogFragment<DialogProgressBinding>() {
} }
private fun onBackupDone(file: File) { private fun onBackupDone(file: File) {
ShareHelper(context ?: return).shareBackup(file) this.backup = file
dismiss() saveFileContract.launch(file.name)
}
private fun saveBackup(file: File, output: Uri) {
try {
requireContext().contentResolver.openFileDescriptor(output, "w")?.use { fd ->
FileOutputStream(fd.fileDescriptor).use {
it.write(file.readBytes())
}
}
Toast.makeText(requireContext(), R.string.backup_saved, Toast.LENGTH_LONG).show()
dismiss()
} catch (e: Exception) {
onError(e)
}
} }
companion object { companion object {

View File

@@ -0,0 +1,23 @@
package org.koitharu.kotatsu.settings.utils
import android.content.Context
import android.text.method.LinkMovementMethod
import android.util.AttributeSet
import android.widget.TextView
import androidx.preference.Preference
import androidx.preference.PreferenceViewHolder
class LinksPreference @JvmOverloads constructor(
context: Context?,
attrs: AttributeSet? = null,
defStyleAttr: Int = androidx.preference.R.attr.preferenceStyle,
defStyleRes: Int = 0,
) : Preference(context, attrs, defStyleAttr, defStyleRes) {
override fun onBindViewHolder(holder: PreferenceViewHolder) {
super.onBindViewHolder(holder)
val summaryView = holder.findViewById(android.R.id.summary) as TextView
summaryView.movementMethod = LinkMovementMethod.getInstance()
}
}

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:pathData="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z" />
</vector>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:enterFadeDuration="@android:integer/config_mediumAnimTime"
android:exitFadeDuration="@android:integer/config_mediumAnimTime">
<item android:drawable="@drawable/ic_eye" android:state_checked="true" />
<item android:drawable="@drawable/ic_eye_off" android:state_checked="false" />
</selector>

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000"
android:fillAlpha="0.3"
android:pathData="M2,5.27L3.28,4L20,20.72L18.73,22L15.65,18.92C14.5,19.3 13.28,19.5 12,19.5C7,19.5 2.73,16.39 1,12C1.69,10.24 2.79,8.69 4.19,7.46L2,5.27M12,9A3,3 0 0,1 15,12C15,12.35 14.94,12.69 14.83,13L11,9.17C11.31,9.06 11.65,9 12,9M12,4.5C17,4.5 21.27,7.61 23,12C22.18,14.08 20.79,15.88 19,17.19L17.58,15.76C18.94,14.82 20.06,13.54 20.82,12C19.17,8.64 15.76,6.5 12,6.5C10.91,6.5 9.84,6.68 8.84,7L7.3,5.47C8.74,4.85 10.33,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C12.69,17.5 13.37,17.43 14,17.29L11.72,15C10.29,14.85 9.15,13.71 9,12.28L5.6,8.87C4.61,9.72 3.78,10.78 3.18,12Z" />
</vector>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView
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="match_parent"
android:layout_height="?listPreferredItemHeightSmall"
android:background="?selectableItemBackground"
android:drawablePadding="20dp"
android:gravity="center_vertical"
android:paddingStart="?listPreferredItemPaddingStart"
android:paddingEnd="?listPreferredItemPaddingEnd"
android:textAppearance="?textAppearanceListItemSmall"
android:textColor="?android:textColorPrimary"
android:theme="@style/AppPopupTheme"
tools:text="@tools:sample/full_names"
app:drawableStartCompat="@drawable/ic_history" />

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@drawable/ic_denied_large,@drawable/ic_alert_outline,@drawable/ic_error_large" />

View File

@@ -75,7 +75,6 @@
<string name="webtoon">Манхва</string> <string name="webtoon">Манхва</string>
<string name="read_mode">Рэжым чытання</string> <string name="read_mode">Рэжым чытання</string>
<string name="grid_size">Памер табліцы</string> <string name="grid_size">Памер табліцы</string>
<string name="search_results_on_s">Вынікі пошуку па %s</string>
<string name="search_on_s">Пошук па %s</string> <string name="search_on_s">Пошук па %s</string>
<string name="delete_manga">Выдаліць мангу</string> <string name="delete_manga">Выдаліць мангу</string>
<string name="reader_settings">Настаўленні чытання</string> <string name="reader_settings">Настаўленні чытання</string>
@@ -96,7 +95,6 @@
<string name="internal_storage">Унутраны назапашвальнік</string> <string name="internal_storage">Унутраны назапашвальнік</string>
<string name="external_storage">Знешняе сховішча</string> <string name="external_storage">Знешняе сховішча</string>
<string name="domain">Дамен</string> <string name="domain">Дамен</string>
<string name="_default">Безумоўна</string>
<string name="application_update">Правяраць абнаўленне прыкладання</string> <string name="application_update">Правяраць абнаўленне прыкладання</string>
<string name="app_update_available">Даступна абнаўленне прыкладання</string> <string name="app_update_available">Даступна абнаўленне прыкладання</string>
<string name="show_notification_app_update">Паказваць апавяшчэнне пры наяўнасці новай версіі</string> <string name="show_notification_app_update">Паказваць апавяшчэнне пры наяўнасці новай версіі</string>

View File

@@ -74,7 +74,6 @@
<string name="webtoon">Webtoon</string> <string name="webtoon">Webtoon</string>
<string name="read_mode">Modo de lectura</string> <string name="read_mode">Modo de lectura</string>
<string name="grid_size">Tamaño de la cuadrícula</string> <string name="grid_size">Tamaño de la cuadrícula</string>
<string name="search_results_on_s">Resultados de búsqueda en %s</string>
<string name="search_on_s">Buscar en %s</string> <string name="search_on_s">Buscar en %s</string>
<string name="delete_manga">Borrar manga</string> <string name="delete_manga">Borrar manga</string>
<string name="text_delete_local_manga">¿Realmente quieres borrar \"%s\" del almacenamiento local de tu teléfono? \nEsta operación no se puede deshacer.</string> <string name="text_delete_local_manga">¿Realmente quieres borrar \"%s\" del almacenamiento local de tu teléfono? \nEsta operación no se puede deshacer.</string>
@@ -95,7 +94,6 @@
<string name="internal_storage">Almacenamiento interno</string> <string name="internal_storage">Almacenamiento interno</string>
<string name="external_storage">Almacenamiento externo</string> <string name="external_storage">Almacenamiento externo</string>
<string name="domain">Dominio</string> <string name="domain">Dominio</string>
<string name="_default">Por defecto</string>
<string name="application_update">Comprobar actualizaciones automáticamente</string> <string name="application_update">Comprobar actualizaciones automáticamente</string>
<string name="app_update_available">Una nueva versión de la aplicación está disponible</string> <string name="app_update_available">Una nueva versión de la aplicación está disponible</string>
<string name="show_notification_app_update">Mostrar notificación si la actualización está disponible</string> <string name="show_notification_app_update">Mostrar notificación si la actualización está disponible</string>

View File

@@ -74,7 +74,6 @@
<string name="webtoon">Манхва</string> <string name="webtoon">Манхва</string>
<string name="read_mode">Режим чтения</string> <string name="read_mode">Режим чтения</string>
<string name="grid_size">Размер таблицы</string> <string name="grid_size">Размер таблицы</string>
<string name="search_results_on_s">Результаты поиска по %s</string>
<string name="search_on_s">Поиск по %s</string> <string name="search_on_s">Поиск по %s</string>
<string name="delete_manga">Удалить мангу</string> <string name="delete_manga">Удалить мангу</string>
<string name="text_delete_local_manga">Вы уверены, что хотите удалить \"%s\" с устройства? \nЭто действие нельзя будет отменить.</string> <string name="text_delete_local_manga">Вы уверены, что хотите удалить \"%s\" с устройства? \nЭто действие нельзя будет отменить.</string>
@@ -95,7 +94,6 @@
<string name="internal_storage">Внутренний накопитель</string> <string name="internal_storage">Внутренний накопитель</string>
<string name="external_storage">Внешнее хранилище</string> <string name="external_storage">Внешнее хранилище</string>
<string name="domain">Домен</string> <string name="domain">Домен</string>
<string name="_default">По умолчанию</string>
<string name="application_update">Проверять обновление приложения</string> <string name="application_update">Проверять обновление приложения</string>
<string name="app_update_available">Доступно обновление приложения</string> <string name="app_update_available">Доступно обновление приложения</string>
<string name="show_notification_app_update">Показывать уведомление при наличии новой версии</string> <string name="show_notification_app_update">Показывать уведомление при наличии новой версии</string>
@@ -211,4 +209,7 @@
<string name="languages">Языки</string> <string name="languages">Языки</string>
<string name="welcome">Добро пожаловать</string> <string name="welcome">Добро пожаловать</string>
<string name="text_clear_search_history_prompt">Вы действительно хотите удалить все недавние поисковые запросы? Это действие не может быть отменено.</string> <string name="text_clear_search_history_prompt">Вы действительно хотите удалить все недавние поисковые запросы? Это действие не может быть отменено.</string>
<string name="backup_saved">Резервная копия успешно сохранена</string>
<string name="tracker_warning">Некоторые производители могут изменять поведение системы, нарушая работу фоновых задач.</string>
<string name="read_more">Подробнее</string>
</resources> </resources>

View File

@@ -75,7 +75,6 @@
<string name="webtoon">Webtoon</string> <string name="webtoon">Webtoon</string>
<string name="read_mode">Read mode</string> <string name="read_mode">Read mode</string>
<string name="grid_size">Grid size</string> <string name="grid_size">Grid size</string>
<string name="search_results_on_s">Search results on %s</string>
<string name="search_on_s">Search on %s</string> <string name="search_on_s">Search on %s</string>
<string name="delete_manga">Delete manga</string> <string name="delete_manga">Delete manga</string>
<string name="text_delete_local_manga">Do you really want to delete \"%s\" from your phone\'s local storage? \nThis operation cannot be undone.</string> <string name="text_delete_local_manga">Do you really want to delete \"%s\" from your phone\'s local storage? \nThis operation cannot be undone.</string>
@@ -96,7 +95,6 @@
<string name="internal_storage">Internal storage</string> <string name="internal_storage">Internal storage</string>
<string name="external_storage">External storage</string> <string name="external_storage">External storage</string>
<string name="domain">Domain</string> <string name="domain">Domain</string>
<string name="_default">Default</string>
<string name="application_update">Check for updates automatically</string> <string name="application_update">Check for updates automatically</string>
<string name="app_update_available">Application update is available</string> <string name="app_update_available">Application update is available</string>
<string name="show_notification_app_update">Show notification if update is available</string> <string name="show_notification_app_update">Show notification if update is available</string>
@@ -213,4 +211,7 @@
<string name="other">Other</string> <string name="other">Other</string>
<string name="languages">Languages</string> <string name="languages">Languages</string>
<string name="welcome">Welcome</string> <string name="welcome">Welcome</string>
<string name="backup_saved">Backup saved successfully</string>
<string name="tracker_warning">Some manufacturers can change the system behavior, which may breaks background tasks.</string>
<string name="read_more">Read more</string>
</resources> </resources>

View File

@@ -16,7 +16,7 @@
app:iconSpaceReserved="false" /> app:iconSpaceReserved="false" />
<Preference <Preference
android:icon="@drawable/ic_info_outilne" android:icon="@drawable/ic_info_outline"
android:persistent="false" android:persistent="false"
android:selectable="false" android:selectable="false"
android:summary="@string/backup_information" android:summary="@string/backup_information"

View File

@@ -24,4 +24,12 @@
android:title="@string/notifications_settings" android:title="@string/notifications_settings"
app:iconSpaceReserved="false" /> app:iconSpaceReserved="false" />
<org.koitharu.kotatsu.settings.utils.LinksPreference
android:key="track_warning"
android:icon="@drawable/ic_info_outline"
android:persistent="false"
android:selectable="false"
android:summary="@string/tracker_warning"
app:allowDividerAbove="true" />
</PreferenceScreen> </PreferenceScreen>

View File

@@ -5,7 +5,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.1.3' classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong

View File

@@ -1,7 +1,7 @@
#Mon Mar 29 19:25:53 EEST 2021 #Sat Jul 03 12:50:59 EEST 2021
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
distributionSha256Sum=7faa7198769f872826c8ef4f1450f839ec27f0b4d5d1e51bade63667cbccd205 distributionSha256Sum=765442b8069c6bee2ea70713861c027587591c6b1df2c857a23361512560894e