Compare commits
10 Commits
5642c67249
...
0f77c9cf10
| Author | SHA1 | Date | |
|---|---|---|---|
| 0f77c9cf10 | |||
|
|
109f91059f | ||
|
|
5aed3a06d9 | ||
|
|
8ae2fc93fc | ||
|
|
265843f49d | ||
|
|
3072b8beb3 | ||
|
|
e636b16b0e | ||
|
|
45bd3b33ae | ||
|
|
1dd83c726b | ||
|
|
9b41912e65 |
@ -47,17 +47,17 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
applicationIdSuffix = ".release"
|
||||
|
||||
postprocessing {
|
||||
isRemoveUnusedCode = true
|
||||
isObfuscate = false
|
||||
isOptimizeCode = true
|
||||
}
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
applicationIdSuffix = ".debug"
|
||||
isDebuggable = true
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
create("nightly") {
|
||||
initWith(getByName("release"))
|
||||
|
||||
@ -16,18 +16,26 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
// //consumerProguardFiles("consumer-rules.pro")
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
create("nightly") {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
initWith(getByName("release"))
|
||||
matchingFallbacks += "release"
|
||||
}
|
||||
|
||||
@ -1,18 +1,17 @@
|
||||
package de.mm20.launcher2.ui.launcher.scaffold
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.core.animateDpAsState
|
||||
import androidx.compose.animation.core.animateFloatAsState
|
||||
import androidx.compose.animation.expandVertically
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.shrinkVertically
|
||||
import androidx.compose.foundation.ScrollState
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material.icons.Icons
|
||||
@ -26,6 +25,7 @@ import androidx.compose.material3.TopAppBarDefaults
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
@ -35,17 +35,18 @@ import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.composed
|
||||
import androidx.compose.ui.draw.alpha
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.zIndex
|
||||
import de.mm20.launcher2.preferences.ui.ClockWidgetSettings
|
||||
import de.mm20.launcher2.ui.R
|
||||
import de.mm20.launcher2.ui.ktx.toDp
|
||||
import de.mm20.launcher2.ui.launcher.widgets.WidgetColumn
|
||||
import de.mm20.launcher2.ui.launcher.widgets.clock.ClockWidget
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.compose.koinInject
|
||||
|
||||
internal object ClockAndWidgetsHomeComponent: ScaffoldComponent() {
|
||||
internal object ClockAndWidgetsHomeComponent : ScaffoldComponent() {
|
||||
private var editMode by mutableStateOf(false)
|
||||
private val scrollState = ScrollState(0)
|
||||
|
||||
@ -54,7 +55,7 @@ internal object ClockAndWidgetsHomeComponent: ScaffoldComponent() {
|
||||
}
|
||||
|
||||
override val isAtBottom: State<Boolean?> = derivedStateOf {
|
||||
!scrollState.canScrollForward
|
||||
!scrollState.canScrollForward || scrollState.value == 0
|
||||
}
|
||||
|
||||
override val drawBackground: Boolean = false
|
||||
@ -72,11 +73,19 @@ internal object ClockAndWidgetsHomeComponent: ScaffoldComponent() {
|
||||
) {
|
||||
val scope = rememberCoroutineScope()
|
||||
|
||||
val topPadding by animateDpAsState(if (editMode) 80.dp else 0.dp)
|
||||
val clockWidgetSettings: ClockWidgetSettings = koinInject()
|
||||
val fillHeight by clockWidgetSettings.fillHeight.collectAsState(null)
|
||||
|
||||
if (fillHeight == null) return
|
||||
|
||||
val topPadding by animateDpAsState(if (editMode) 80.dp else 0.dp)
|
||||
val previousScroll = remember { mutableIntStateOf(scrollState.value) }
|
||||
|
||||
LaunchedEffect(scrollState.value, scrollState.canScrollForward, scrollState.canScrollBackward) {
|
||||
LaunchedEffect(
|
||||
scrollState.value,
|
||||
scrollState.canScrollForward,
|
||||
scrollState.canScrollBackward
|
||||
) {
|
||||
val delta = scrollState.value - previousScroll.intValue
|
||||
previousScroll.intValue = scrollState.value
|
||||
if (!editMode) {
|
||||
@ -92,8 +101,15 @@ internal object ClockAndWidgetsHomeComponent: ScaffoldComponent() {
|
||||
.padding(insets),
|
||||
) {
|
||||
ClockWidget(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
then if (fillHeight == true) Modifier.height(
|
||||
state.size.height.toDp() - insets.calculateTopPadding()
|
||||
).padding(
|
||||
bottom = insets.calculateBottomPadding()
|
||||
) else Modifier,
|
||||
editMode = editMode,
|
||||
fillScreenHeight = false,
|
||||
fillScreenHeight = fillHeight == true,
|
||||
)
|
||||
WidgetColumn(
|
||||
modifier = Modifier
|
||||
@ -126,7 +142,10 @@ internal object ClockAndWidgetsHomeComponent: ScaffoldComponent() {
|
||||
scope.launch { state.unlock() }
|
||||
}
|
||||
) {
|
||||
Icon(Icons.AutoMirrored.Rounded.ArrowBack, stringResource(R.string.action_done))
|
||||
Icon(
|
||||
Icons.AutoMirrored.Rounded.ArrowBack,
|
||||
stringResource(R.string.action_done)
|
||||
)
|
||||
}
|
||||
},
|
||||
colors = TopAppBarDefaults.topAppBarColors(
|
||||
|
||||
@ -293,7 +293,6 @@ fun ColumnScope.ConfigureAppWidget(
|
||||
val widgetInfo = remember(widget.config.widgetId) {
|
||||
AppWidgetManager.getInstance(context).getAppWidgetInfo(widget.config.widgetId)
|
||||
}
|
||||
|
||||
if (widgetInfo == null) {
|
||||
var replaceWidget by rememberSaveable {
|
||||
mutableStateOf(false)
|
||||
@ -365,6 +364,7 @@ fun ColumnScope.ConfigureAppWidget(
|
||||
}
|
||||
|
||||
AppWidgetHost(
|
||||
|
||||
widgetInfo = widgetInfo,
|
||||
widgetId = widget.config.widgetId,
|
||||
modifier = Modifier
|
||||
|
||||
@ -24,10 +24,10 @@ import androidx.compose.material.icons.rounded.AlignVerticalBottom
|
||||
import androidx.compose.material.icons.rounded.AlignVerticalCenter
|
||||
import androidx.compose.material.icons.rounded.AlignVerticalTop
|
||||
import androidx.compose.material.icons.rounded.AutoAwesome
|
||||
import androidx.compose.material.icons.rounded.AvTimer
|
||||
import androidx.compose.material.icons.rounded.BatteryFull
|
||||
import androidx.compose.material.icons.rounded.ColorLens
|
||||
import androidx.compose.material.icons.rounded.DarkMode
|
||||
import androidx.compose.material.icons.rounded.Height
|
||||
import androidx.compose.material.icons.rounded.HorizontalSplit
|
||||
import androidx.compose.material.icons.rounded.LightMode
|
||||
import androidx.compose.material.icons.rounded.MusicNote
|
||||
@ -363,6 +363,7 @@ fun ConfigureClockWidgetSheet(
|
||||
val color by viewModel.color.collectAsState()
|
||||
val style by viewModel.clockStyle.collectAsState()
|
||||
val fillHeight by viewModel.fillHeight.collectAsState()
|
||||
val widgetsOnHome by viewModel.widgetsOnHome.collectAsState()
|
||||
val alignment by viewModel.alignment.collectAsState()
|
||||
val showSeconds by viewModel.showSeconds.collectAsState()
|
||||
val timeFormat by viewModel.timeFormat.collectAsState()
|
||||
@ -564,71 +565,79 @@ fun ConfigureClockWidgetSheet(
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fillHeight == true) {
|
||||
OutlinedCard(
|
||||
modifier = Modifier.padding(top = 16.dp),
|
||||
OutlinedCard(
|
||||
modifier = Modifier.padding(top = 16.dp),
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
var showDropdown by remember { mutableStateOf(false) }
|
||||
Preference(
|
||||
title = stringResource(R.string.preference_clock_widget_alignment),
|
||||
summary = when (alignment) {
|
||||
ClockWidgetAlignment.Top -> stringResource(R.string.preference_clock_widget_alignment_top)
|
||||
ClockWidgetAlignment.Center -> stringResource(R.string.preference_clock_widget_alignment_center)
|
||||
else -> stringResource(R.string.preference_clock_widget_alignment_bottom)
|
||||
},
|
||||
icon = when (alignment) {
|
||||
ClockWidgetAlignment.Top -> Icons.Rounded.AlignVerticalTop
|
||||
ClockWidgetAlignment.Center -> Icons.Rounded.AlignVerticalCenter
|
||||
else -> Icons.Rounded.AlignVerticalBottom
|
||||
SwitchPreference(
|
||||
title = stringResource(R.string.preference_clock_widget_fill_height),
|
||||
icon = Icons.Rounded.Height,
|
||||
value = fillHeight == true || widgetsOnHome == false,
|
||||
onValueChanged = {
|
||||
viewModel.setFillHeight(it)
|
||||
},
|
||||
enabled = widgetsOnHome == true,
|
||||
)
|
||||
var showDropdown by remember { mutableStateOf(false) }
|
||||
Preference(
|
||||
title = stringResource(R.string.preference_clock_widget_alignment),
|
||||
summary = when (alignment) {
|
||||
ClockWidgetAlignment.Top -> stringResource(R.string.preference_clock_widget_alignment_top)
|
||||
ClockWidgetAlignment.Center -> stringResource(R.string.preference_clock_widget_alignment_center)
|
||||
else -> stringResource(R.string.preference_clock_widget_alignment_bottom)
|
||||
},
|
||||
icon = when (alignment) {
|
||||
ClockWidgetAlignment.Top -> Icons.Rounded.AlignVerticalTop
|
||||
ClockWidgetAlignment.Center -> Icons.Rounded.AlignVerticalCenter
|
||||
else -> Icons.Rounded.AlignVerticalBottom
|
||||
},
|
||||
onClick = {
|
||||
showDropdown = true
|
||||
},
|
||||
enabled = fillHeight == true,
|
||||
)
|
||||
DropdownMenu(
|
||||
expanded = showDropdown,
|
||||
onDismissRequest = { showDropdown = false }) {
|
||||
DropdownMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Rounded.AlignVerticalTop,
|
||||
null
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(R.string.preference_clock_widget_alignment_top)) },
|
||||
onClick = {
|
||||
showDropdown = true
|
||||
viewModel.setAlignment(ClockWidgetAlignment.Top)
|
||||
showDropdown = false
|
||||
}
|
||||
)
|
||||
DropdownMenu(
|
||||
expanded = showDropdown,
|
||||
onDismissRequest = { showDropdown = false }) {
|
||||
DropdownMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Rounded.AlignVerticalTop,
|
||||
null
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(R.string.preference_clock_widget_alignment_top)) },
|
||||
onClick = {
|
||||
viewModel.setAlignment(ClockWidgetAlignment.Top)
|
||||
showDropdown = false
|
||||
}
|
||||
)
|
||||
DropdownMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Rounded.AlignVerticalCenter,
|
||||
null
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(R.string.preference_clock_widget_alignment_center)) },
|
||||
onClick = {
|
||||
viewModel.setAlignment(ClockWidgetAlignment.Center)
|
||||
showDropdown = false
|
||||
})
|
||||
DropdownMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Rounded.AlignVerticalBottom,
|
||||
null
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(R.string.preference_clock_widget_alignment_bottom)) },
|
||||
onClick = {
|
||||
viewModel.setAlignment(ClockWidgetAlignment.Bottom)
|
||||
showDropdown = false
|
||||
})
|
||||
}
|
||||
DropdownMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Rounded.AlignVerticalCenter,
|
||||
null
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(R.string.preference_clock_widget_alignment_center)) },
|
||||
onClick = {
|
||||
viewModel.setAlignment(ClockWidgetAlignment.Center)
|
||||
showDropdown = false
|
||||
})
|
||||
DropdownMenuItem(
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
Icons.Rounded.AlignVerticalBottom,
|
||||
null
|
||||
)
|
||||
},
|
||||
text = { Text(stringResource(R.string.preference_clock_widget_alignment_bottom)) },
|
||||
onClick = {
|
||||
viewModel.setAlignment(ClockWidgetAlignment.Bottom)
|
||||
showDropdown = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ import de.mm20.launcher2.preferences.ClockWidgetColors
|
||||
import de.mm20.launcher2.preferences.ClockWidgetStyle
|
||||
import de.mm20.launcher2.preferences.TimeFormat
|
||||
import de.mm20.launcher2.preferences.ui.ClockWidgetSettings
|
||||
import de.mm20.launcher2.preferences.ui.UiSettings
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
@ -15,6 +16,8 @@ import org.koin.core.component.inject
|
||||
|
||||
class ClockWidgetSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
private val settings: ClockWidgetSettings by inject()
|
||||
private val uiSettings: UiSettings by inject()
|
||||
|
||||
val compact = settings.compact
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
fun setCompact(compact: Boolean) {
|
||||
@ -68,9 +71,16 @@ class ClockWidgetSettingsScreenVM : ViewModel(), KoinComponent {
|
||||
settings.setUseThemeColor(boolean)
|
||||
}
|
||||
|
||||
val widgetsOnHome = uiSettings.homeScreenWidgets
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
|
||||
val fillHeight = settings.fillHeight
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
|
||||
fun setFillHeight(fillHeight: Boolean) {
|
||||
settings.setFillHeight(fillHeight)
|
||||
}
|
||||
|
||||
val parts = settings.parts
|
||||
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), null)
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
// //consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
create("nightly") {
|
||||
initWith(getByName("release"))
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
// //consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
// //consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,16 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
|
||||
@ -20,7 +20,9 @@ import kotlinx.coroutines.flow.callbackFlow
|
||||
import kotlinx.coroutines.flow.channelFlow
|
||||
import de.mm20.launcher2.ktx.foldOrNull
|
||||
import de.mm20.launcher2.ktx.isBetterThan
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock
|
||||
import kotlin.concurrent.read
|
||||
import kotlin.concurrent.write
|
||||
@ -78,20 +80,24 @@ class DevicePoseProvider internal constructor(
|
||||
}
|
||||
|
||||
if (hasFineAccess) {
|
||||
requestLocationUpdates(
|
||||
LocationManager.GPS_PROVIDER,
|
||||
minTimeMs,
|
||||
minDistanceM,
|
||||
locationCallback
|
||||
)
|
||||
withContext(Dispatchers.Main) {
|
||||
requestLocationUpdates(
|
||||
LocationManager.GPS_PROVIDER,
|
||||
minTimeMs,
|
||||
minDistanceM,
|
||||
locationCallback
|
||||
)
|
||||
}
|
||||
}
|
||||
if (hasCoarseAccess) {
|
||||
requestLocationUpdates(
|
||||
LocationManager.NETWORK_PROVIDER,
|
||||
minTimeMs,
|
||||
minDistanceM,
|
||||
locationCallback
|
||||
)
|
||||
withContext(Dispatchers.Main) {
|
||||
requestLocationUpdates(
|
||||
LocationManager.NETWORK_PROVIDER,
|
||||
minTimeMs,
|
||||
minDistanceM,
|
||||
locationCallback
|
||||
)
|
||||
}
|
||||
}
|
||||
}?.onFailure {
|
||||
Log.e("DevicePoseProvider", "Failed to register location listener", it)
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<string name="menu_customize">Дапасаваць</string>
|
||||
<string name="menu_open_file">Адкрыць</string>
|
||||
<string name="menu_map">Праглядзець на мапе</string>
|
||||
<string name="menu_website">Адкрыць вэбсайт</string>
|
||||
<string name="menu_website">Адкрыць вэб-сайт</string>
|
||||
<string name="action_undo">Скасаваць</string>
|
||||
<string name="menu_delete">Выдаліць</string>
|
||||
<string name="menu_favorites_unpin">Адмацаваць</string>
|
||||
@ -188,13 +188,13 @@
|
||||
<string name="weather_no_data">Няма даных аб надвор\'і.</string>
|
||||
<string name="weather_widget_set_location">Абраць месцазнаходжанне</string>
|
||||
<string name="weather_location_search_no_result">Месцазнаходжанне ня знойдзена.</string>
|
||||
<string name="missing_permission_contact_search_settings">Доступ да кантактаў патрэбны для іх пошуку</string>
|
||||
<string name="missing_permission_calendar_search_settings">Доступ да календара патрэбны для пошуку праз каляндар</string>
|
||||
<string name="missing_permission_auto_location">Доступ да месцазнаходжання патрэбны для яго аўтаматычнага вызначэння</string>
|
||||
<string name="missing_permission_music_widget">Доступ да апавяшчэнняў патрэбны для кіравання прайграваннем медыя</string>
|
||||
<string name="missing_permission_contact_search_settings">Для пошуку кантактаў патрэбны доступ да кантактнай кнігі</string>
|
||||
<string name="missing_permission_calendar_search_settings">Для пошуку праз каляндар патрэбны доступ да календара</string>
|
||||
<string name="missing_permission_auto_location">Для аўтаматычнага вызначэння лакацыі патрэбны доступ да месцазнаходжання</string>
|
||||
<string name="missing_permission_music_widget">Для кіравання прайграваннем медыя патрэбны доступ да апавяшчэнняў</string>
|
||||
<string name="widget_config_calendar_missing_calendars_hint">Не можаце знайсці свае календары?</string>
|
||||
<string name="missing_permission_appshortcuts_search_settings">%1$s павінна быць стандартнай праграмай галоўнага экрана для пошуку ярлыкоў</string>
|
||||
<string name="missing_permission_file_search_settings">Доступ да файлаў патрэбны для пошуку праз лакальныя файлы</string>
|
||||
<string name="missing_permission_file_search_settings">Для пошуку праз лакальныя файлы патрэбны доступ да файлаў</string>
|
||||
<string name="missing_permission_calendar_widget_settings">Гэтаму віджэту патрэбны доступ да календара</string>
|
||||
<string name="disclaimer">Адмова ад адказнасці</string>
|
||||
<string name="show_all">Паказаць усе</string>
|
||||
@ -217,8 +217,8 @@
|
||||
<item quantity="many">+%1$d бягучых падзей з тых часоў</item>
|
||||
<item quantity="other">+%1$d бягучых падзей з тых часоў</item>
|
||||
</plurals>
|
||||
<string name="missing_permission_file_search_settings_android10">Доступ да ўсіх файлаў патрэбны для пошуку праз лакальныя файлы</string>
|
||||
<string name="missing_permission_notification_badges">Доступ да апавяшчэнняў патрэбны для адлюстроўвання бэйджаў апавяшчэнняў на значках</string>
|
||||
<string name="missing_permission_file_search_settings_android10">Для пошуку праз лакальныя файлы патрэбны доступ да ўсіх файлаў</string>
|
||||
<string name="missing_permission_notification_badges">Для адлюстравання бэйджаў апавяшчэнняў на значках патрэбны доступ да апавяшчэнняў</string>
|
||||
<string name="missing_permission_calendar_widget">Дайце дазвол на доступ да календару, каб тут паказваліся будучыя сустрэчы і падзеі.</string>
|
||||
<string name="missing_permission_calendar_search">Дайце дазвол на доступ да календару, каб выконваць пошук праз ваш каляндар.</string>
|
||||
<string name="missing_permission_location_search">Дайце дазвол на доступ да месцазнаходжання, каб шукаць праз бліжайшыя месцы.</string>
|
||||
@ -279,8 +279,8 @@
|
||||
<string name="preference_debug_dump_heap">Здымак памяці</string>
|
||||
<string name="preference_debug_dump_heap_summary">Зрабіце хуткі здымак, каб аналізаваць выкарыстоўванне памяці. Праграма не будзе адказваць, пакуль працэс не завяршыцца.</string>
|
||||
<string name="preference_debug_dump_heap_in_progress">Здымаецца…</string>
|
||||
<string name="preference_debug_cleanup_database">Ачысціць базу дадзеных</string>
|
||||
<string name="preference_debug_cleanup_database_summary">Выдаліць зламаныя і неўжываныя пункты з базы дадзеных праграмы запуску</string>
|
||||
<string name="preference_debug_cleanup_database">Ачысціць базу даных</string>
|
||||
<string name="preference_debug_cleanup_database_summary">Выдаліць зламаныя і неўжываныя пункты з базы даных праграмы запуску</string>
|
||||
<string name="preference_debug_reinstall_iconpacks">Пераўсталяваць пакеты значкоў</string>
|
||||
<string name="preference_debug_reinstall_iconpacks_summary">Ачысціць і стварыць нанава кэш пакетаў значкоў</string>
|
||||
<string name="preference_category_icons">Значкі</string>
|
||||
@ -388,11 +388,11 @@
|
||||
<string name="preference_category_license">Ліцэнзія</string>
|
||||
<string name="preference_clockwidget_music_part_summary">Адлюстроўвае кнопкі для кіравання мультымедыя, калі ёсць актыўны сеанс медыя</string>
|
||||
<string name="preference_screen_backup">Рэзэрвовае капіраванне і аднаўленне</string>
|
||||
<string name="preference_screen_backup_summary">Экспарт і імпарт дадзеных праграмы запуску</string>
|
||||
<string name="preference_screen_backup_summary">Экспарт і імпарт даных праграмы запуску</string>
|
||||
<string name="preference_clockwidget_battery_part_summary">Адлюстроўвае бягучы зарад батарэі, калі ён нізкі, або калі прылада зараджаецца</string>
|
||||
<string name="preference_clockwidget_alarm_part_summary">Адлюстроўвае будзільнікі, якія празвоняць меньш чым праз 8 гадзін</string>
|
||||
<string name="preference_clockwidget_battery_part">Батарэя</string>
|
||||
<string name="preference_backup_summary">Экспартаваць налады і дадзеныя праграмы запуску</string>
|
||||
<string name="preference_backup_summary">Экспартаваць налады і даныя праграмы запуску</string>
|
||||
<string name="preference_restore">Аднаўленне</string>
|
||||
<string name="preference_restore_summary">Аднавіць з дапамогай раней створанай рэзервовай копіі</string>
|
||||
<string name="preference_backup">Рэзервовае капіраванне</string>
|
||||
@ -467,7 +467,7 @@
|
||||
<string name="backup_complete">Рэзервовае капіяванне скончана.</string>
|
||||
<string name="restore_invalid_file">Здаецца, выбраны файл не з\'яўляецца рэзервовай копіяй. Вы ўпэўнены, што выбралі пэўны файл?</string>
|
||||
<string name="preference_favorites_edit_button_summary">Паказваць кнопку рэдагавання абраных</string>
|
||||
<string name="restore_different_minor_version">Гэты бэкап быў створаны з іншай версіі %1$s. Некаторыя дадзеныя могуць не аднавіцца пэўна.</string>
|
||||
<string name="restore_different_minor_version">Гэты бэкап быў створаны з іншай версіі %1$s. Некаторыя даныя могуць не аднавіцца пэўна.</string>
|
||||
<plurals name="battery_part_remaining_charge_time">
|
||||
<item quantity="one">Зарадзіцца поўнасцю праз %1$s хвіліну</item>
|
||||
<item quantity="few">Зарадзіцца поўнасцю праз %1$s хвіліны</item>
|
||||
@ -623,9 +623,9 @@
|
||||
<string name="preference_search_location_custom_tile_server_url">Спасылка на Tileserver</string>
|
||||
<string name="menu_navigation">Навігацыя</string>
|
||||
<string name="menu_bugreport">Справаздача аб памылцы</string>
|
||||
<string name="plugin_type_filesearch">Пошук файлаў</string>
|
||||
<string name="plugin_type_filesearch">Файлы</string>
|
||||
<string name="clock_style_digital1">Тоўсты</string>
|
||||
<string name="clock_style_digital2">Звычайны</string>
|
||||
<string name="clock_style_digital2">Просты</string>
|
||||
<string name="clock_style_orbit">Арбітальны</string>
|
||||
<string name="preference_customize_filter_bar_summary">Дапасуйце элементы ў панэлі фільтраў</string>
|
||||
<string name="clock_style_custom">Уласны віджэт</string>
|
||||
@ -801,4 +801,86 @@
|
||||
</plurals>
|
||||
<string name="weather_widget_no_provider">Правайдара надвор\'я не выбрана, альбо выбраны правайдар недаступны</string>
|
||||
<string name="widget_removed">Віджэт выдалены</string>
|
||||
<string name="preference_screen_shapes">Фігуры</string>
|
||||
<string name="preference_shapes_rect">Прамавугольныя</string>
|
||||
<string name="preference_shapes_extra_round">Вельмі скругленыя</string>
|
||||
<string name="preference_shapes_base">Стандартная фігура</string>
|
||||
<string name="weather_condition_thunder">Гром</string>
|
||||
<string name="weather_condition_haze">Смуга</string>
|
||||
<string name="preference_location_breezy">Кіраванне месцазнаходжаннем у Breezy Weather</string>
|
||||
<string name="provider_breezy">Breezy Weather</string>
|
||||
<string name="action_install">Усталяваць</string>
|
||||
<string name="preference_colors_high_contrast">Высокі кантраст</string>
|
||||
<string name="music_widget_interactive_progress_bar">Інтэрактыўная панэль выканання</string>
|
||||
<string name="missing_permission_tasks_integration">Для інтэграцыі з задачамі патрэбны доступ да заданняў</string>
|
||||
<string name="preference_shapes_default">Прадвызначаныя</string>
|
||||
<string name="preference_grid_list_style">Паказваць праграмы спісам</string>
|
||||
<string name="preference_transparencies_default">Прадвызначана</string>
|
||||
<string name="preference_transparencies_semi_transparent">Паўпразрыста</string>
|
||||
<string name="preference_screen_transparencies">Празрыстасць</string>
|
||||
<string name="no_selection">Не выбрана</string>
|
||||
<string name="save_as_file">Захаваць у файл</string>
|
||||
<plurals name="calendar_widget_running_tasks">
|
||||
<item quantity="one">+%1$d незавершаная задача</item>
|
||||
<item quantity="few">+%1$d незавершаныя задачы</item>
|
||||
<item quantity="many">+%1$d незавершаных задач</item>
|
||||
<item quantity="other">+%1$d незавершаных задач</item>
|
||||
</plurals>
|
||||
<string name="missing_permission_tasks_search_settings">Для пошуку праз заданні патрэбны доступ да заданняў</string>
|
||||
<string name="preference_screen_typography">Тыпаграфія</string>
|
||||
<string name="preference_grid_list_icons">Паказваць значкі праграм спісам</string>
|
||||
<string name="preference_grid_list_style_summary">Паказваць праграмы спісам замест сеткі</string>
|
||||
<string name="preference_grid_list_icons_summary">Паказваць значкі пры праглядзе спісам</string>
|
||||
<string name="missing_permission_call_contacts_settings">Для выканання выклікаў патрэбны доступ да тэлефону</string>
|
||||
<string name="departure_time_now">зараз</string>
|
||||
<string name="import_theme_contents">Змесціва</string>
|
||||
<string name="preference_launch_breezyweather_app">Адкрыць Breezy Weather</string>
|
||||
<string name="preference_launch_tasks_app">Адкрыць Tasks</string>
|
||||
<string name="plugin_type_contacts">Кантакты</string>
|
||||
<string name="bad_configuration_title">Віншую, вы закрылі самі сябе!</string>
|
||||
<string name="preference_breezyweather_integration_description">Breezy Weather гэта бясплатная праграма з адкрытым зыходным кодам для паказу надвор\'я. Калі яна ўсталяваная, %1$s можа выкарыстоўваць Breezy Weather як крыніцу даных аб надвор\'і.</string>
|
||||
<plurals name="departure_time_in">
|
||||
<item quantity="one">праз %1$d хвіліну</item>
|
||||
<item quantity="few">праз %1$d хвіліны</item>
|
||||
<item quantity="many">праз %1$d хвілін</item>
|
||||
<item quantity="other">праз %1$d хвілін</item>
|
||||
</plurals>
|
||||
<string name="preference_search_tasks">Задачы</string>
|
||||
<string name="preference_tasks_integration_ready">Інтэграцыя з Tasks поўнасцю наладжаная і гатовая да выкарыстання.</string>
|
||||
<string name="preference_search_tasks_summary">Шукаць задачы ў праграме \"Tasks\"</string>
|
||||
<string name="clock_variant_analog_ticks">Цікі</string>
|
||||
<string name="departure_time_departed">адправіўся</string>
|
||||
<string name="preference_search_local_calendar_summary">Пошук праз календары на гэтай прыладзе</string>
|
||||
<string name="preference_contacts_call_on_tap_summary">Выклікаць адразу пасля націскання на нумар</string>
|
||||
<string name="confirmation_delete_transparencies_scheme">Вы сапраўды хочаце выдаліць схему празрыстасці \"%1$s\"?</string>
|
||||
<string name="preference_breezyweather_integration">Breezy Weather</string>
|
||||
<string name="new_theme_name">(без назвы)</string>
|
||||
<string name="theme_export_title">Экспартаваць тэму</string>
|
||||
<string name="theme_bundle_name">Назва</string>
|
||||
<string name="theme_bundle_author">Аўтар</string>
|
||||
<string name="import_theme_exists">Тэма ўжо існуе, таму будзе абноўлена</string>
|
||||
<string name="theme_import_title">Імпартаваць тэму</string>
|
||||
<string name="preference_breezyweather_integration_instructions">Каб выкарыстоўваць Breezy Weather як пастаўшчыка даных аб надвор\'і:\n\n1. Перайдзіце ў Breezy Weather > Налады > Віджэты і жывыя шпалеры > Адпраўляць даныя пра надвор’е ў Gadgetbridge > Уключыць %1$s\n\n2. Выберыце Breezy Weather як пастаўшчыка надвор\'я ў %1$s</string>
|
||||
<string name="preference_tasks_integration">Tasks</string>
|
||||
<string name="preference_tasks_integration_description">Tasks гэта бясплатная праграма з адкрытым зыходным кодам для вядзення спіса задач і стварэння напамінаў. Калі яна ўсталяваная, %1$s можа паказваць задачы адтуль у пошуку.</string>
|
||||
<string name="confirmation_delete_shapes_scheme">Вы сапраўды хочаце выдаліць схему фігур \"%1$s\"?</string>
|
||||
<string name="confirmation_delete_typography_scheme">Вы сапраўды хочаце выдаліць схему тыпаграфіі \"%1$s\"?</string>
|
||||
<string name="font_name_device_headline">Стандартны шрыфт загалоўкаў</string>
|
||||
<string name="font_name_device_body">Шрыфт тэксту прылады</string>
|
||||
<string name="preference_typography_fonts">Шрыфты</string>
|
||||
<string name="font_category_device_default">Налады прылады</string>
|
||||
<string name="preference_contacts_call_on_tap">Націсніце, каб выклікнуць</string>
|
||||
<string name="preference_clock_widget_time_format_system">Сістэмны фармат</string>
|
||||
<string name="preference_clock_widget_time_format">Фармат часу</string>
|
||||
<string name="preference_clock_widget_time_format_24h">24 гадзіны</string>
|
||||
<string name="preference_clock_widget_time_format_12h">12 гадзін</string>
|
||||
<string name="preference_widgets_on_home_screen">Віджэты на галоўным экране</string>
|
||||
<string name="preference_widgets_on_home_screen_summary">Паказваць віджэты на галоўным экране, не на дадатковай старонцы</string>
|
||||
<string name="bad_configuration_summary">Вы знайшлі канфігурацыю, пры якой нельга адкрыць ні пошук, ні налады, тым самым зрабіўшы праграму не прыгоднай для выкарыстання.</string>
|
||||
<string name="preference_search_bar_style_transparent">Празрысты</string>
|
||||
<string name="preference_search_bar_style_solid">Суцэльны</string>
|
||||
<string name="preference_search_bar_style_hidden">Схаваны</string>
|
||||
<string name="preference_gesture_swipe_up">Чырканне ўверх</string>
|
||||
<string name="gesture_action_widgets">Віджэты</string>
|
||||
<string name="font_category_generic">Звычайн</string>
|
||||
</resources>
|
||||
@ -862,4 +862,5 @@
|
||||
<string name="preference_search_bar_style_solid">Vollflächig</string>
|
||||
<string name="preference_search_bar_style_hidden">Versteckt</string>
|
||||
<string name="music_widget_interactive_progress_bar">Interaktiver Fortschrittsbalken</string>
|
||||
<string name="clock_variant_analog_ticks">Striche</string>
|
||||
</resources>
|
||||
@ -867,4 +867,9 @@
|
||||
<string name="poi_category_kiosk">קיוסק</string>
|
||||
<string name="poi_category_museum">מוזיאון</string>
|
||||
<string name="filter_settings_network_warning">הסינון הנוכחי מאפשר תוצאות מקוונות כברירת מחדל. שאילתות החיפוש שלך עשויות להישלח שלא במתכוון לשירותי אינטרנט חיצוניים. מסיבות של פרטיות, זה לא מומלץ.</string>
|
||||
<string name="clock_variant_analog_ticks">סימנים</string>
|
||||
<string name="music_widget_interactive_progress_bar">סרגל התקדמות אינטראקטיבי</string>
|
||||
<string name="preference_search_bar_style_solid">מוצק</string>
|
||||
<string name="preference_search_bar_style_hidden">מוסתר</string>
|
||||
<string name="preference_search_bar_style_transparent">שקוף</string>
|
||||
</resources>
|
||||
@ -861,4 +861,6 @@
|
||||
<string name="preference_search_bar_style_transparent">Transparant</string>
|
||||
<string name="preference_search_bar_style_hidden">Verborgen</string>
|
||||
<string name="preference_search_bar_style_solid">Massief</string>
|
||||
<string name="clock_variant_analog_ticks">Streepjes</string>
|
||||
<string name="music_widget_interactive_progress_bar">Interactieve voortgangsbalk</string>
|
||||
</resources>
|
||||
@ -867,4 +867,9 @@
|
||||
<string name="font_name_device_headline">Fonte padrão do título</string>
|
||||
<string name="font_name_device_body">Fonte de texto do dispositivo</string>
|
||||
<string name="font_category_generic">Genérico</string>
|
||||
<string name="preference_search_bar_style_transparent">Transparente</string>
|
||||
<string name="preference_search_bar_style_hidden">Oculto</string>
|
||||
<string name="preference_search_bar_style_solid">Sólido</string>
|
||||
<string name="clock_variant_analog_ticks">Tique-taques</string>
|
||||
<string name="music_widget_interactive_progress_bar">Barra de progresso interativa</string>
|
||||
</resources>
|
||||
@ -847,4 +847,9 @@
|
||||
<string name="font_name_device_body">ชุดแบบอักษรของอุปกรณ์</string>
|
||||
<string name="font_name_device_headline">ชุดแบบอักษรเริ่มต้นสำหรับหัวเรื่อง</string>
|
||||
<string name="font_category_generic">ทั่วไป</string>
|
||||
<string name="preference_search_bar_style_transparent">โปร่งใส</string>
|
||||
<string name="preference_search_bar_style_solid">สีทึบ</string>
|
||||
<string name="preference_search_bar_style_hidden">ซ่อน</string>
|
||||
<string name="clock_variant_analog_ticks">ขีด</string>
|
||||
<string name="music_widget_interactive_progress_bar">แถบเวลาแบบควบคุมได้</string>
|
||||
</resources>
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -51,7 +51,6 @@ data class LauncherSettingsData internal constructor(
|
||||
val clockWidgetBatteryPart: Boolean = true,
|
||||
val clockWidgetMusicPart: Boolean = true,
|
||||
val clockWidgetDatePart: Boolean = true,
|
||||
@Deprecated("Use homeScreenWidgets")
|
||||
val clockWidgetFillHeight: Boolean = true,
|
||||
val clockWidgetAlignment: ClockWidgetAlignment = ClockWidgetAlignment.Bottom,
|
||||
|
||||
|
||||
@ -64,7 +64,13 @@ class ClockWidgetSettings internal constructor(
|
||||
}
|
||||
|
||||
val fillHeight
|
||||
get() = launcherDataStore.data.map { !it.homeScreenWidgets }
|
||||
get() = launcherDataStore.data.map { it.clockWidgetFillHeight || !it.homeScreenWidgets }
|
||||
|
||||
fun setFillHeight(fillHeight: Boolean) {
|
||||
launcherDataStore.update {
|
||||
it.copy(clockWidgetFillHeight = fillHeight)
|
||||
}
|
||||
}
|
||||
|
||||
val dock
|
||||
get() = launcherDataStore.data.map { it.homeScreenDock }
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
create("nightly") {
|
||||
initWith(getByName("release"))
|
||||
|
||||
@ -14,15 +14,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
// //consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
create("nightly") {
|
||||
initWith(getByName("release"))
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
@ -23,10 +23,16 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -13,16 +13,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
compileOptions {
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,19 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
//// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
}
|
||||
}
|
||||
|
||||
@ -43,6 +47,7 @@ dependencies {
|
||||
implementation(libs.bundles.retrofit)
|
||||
implementation(libs.suncalc)
|
||||
implementation(libs.koin.android)
|
||||
implementation("com.squareup.okhttp3:logging-interceptor:4.5.0")
|
||||
|
||||
implementation(project(":data:database"))
|
||||
implementation(project(":core:base"))
|
||||
|
||||
@ -1,3 +1,11 @@
|
||||
-keep class de.mm20.launcher2.weather.** { *; }
|
||||
-keep class kotlin.coroutines.Continuation
|
||||
-dontwarn edu.umd.cs.findbugs.annotations.Nullable
|
||||
#-keep class de.mm20.launcher2.weather.** { *; }
|
||||
#-keep class kotlin.coroutines.Continuation
|
||||
#-dontwarn edu.umd.cs.findbugs.annotations.Nullable
|
||||
#
|
||||
#-assumenosideeffects class android.util.Log {
|
||||
## public static *** d(...);
|
||||
# public static *** v(...);
|
||||
# public static *** i(...);
|
||||
# public static *** w(...);
|
||||
## public static *** e(...);
|
||||
#}
|
||||
47
data/weather/proguard-rules.pro
vendored
47
data/weather/proguard-rules.pro
vendored
@ -1,21 +1,28 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.kts.kts.kts.kts.kts.
|
||||
## Add project specific ProGuard rules here.
|
||||
## You can control the set of applied configuration files using the
|
||||
## proguardFiles setting in build.gradle.kts.kts.kts.kts.kts.
|
||||
##
|
||||
## For more details, see
|
||||
## http://developer.android.com/guide/developing/tools/proguard.html
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
## If your project uses WebView with JS, uncomment the following
|
||||
## and specify the fully qualified class name to the JavaScript interface
|
||||
## class:
|
||||
##-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
## public *;
|
||||
##}
|
||||
#
|
||||
## Uncomment this to preserve the line number information for
|
||||
## debugging stack traces.
|
||||
##-keepattributes SourceFile,LineNumberTable
|
||||
#
|
||||
## If you keep the line number information, uncomment this to
|
||||
## hide the original source file name.
|
||||
##-renamesourcefileattribute SourceFile
|
||||
#-assumenosideeffects class android.util.Log {
|
||||
## public static *** d(...);
|
||||
# public static *** v(...);
|
||||
# public static *** i(...);
|
||||
# public static *** w(...);
|
||||
## public static *** e(...);
|
||||
#}
|
||||
@ -7,9 +7,13 @@ import de.mm20.launcher2.preferences.weather.WeatherLocation
|
||||
import de.mm20.launcher2.weather.Forecast
|
||||
import de.mm20.launcher2.weather.R
|
||||
import de.mm20.launcher2.weather.WeatherProvider
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.getValue
|
||||
|
||||
internal class OpenWeatherMapProvider(
|
||||
private val context: Context,
|
||||
@ -17,11 +21,24 @@ internal class OpenWeatherMapProvider(
|
||||
|
||||
private val retrofit by lazy {
|
||||
Retrofit.Builder()
|
||||
.client(client)
|
||||
.baseUrl("https://api.openweathermap.org/")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
}
|
||||
private val client by lazy {
|
||||
val timeOutMillSeconds = 1500L
|
||||
OkHttpClient.Builder()
|
||||
.addInterceptor(HttpLoggingInterceptor().apply {
|
||||
level = HttpLoggingInterceptor.Level.BODY
|
||||
|
||||
})
|
||||
.callTimeout(timeOutMillSeconds,TimeUnit.MILLISECONDS)
|
||||
.connectTimeout(timeOutMillSeconds,TimeUnit.MILLISECONDS)
|
||||
.readTimeout(timeOutMillSeconds,TimeUnit.MILLISECONDS)
|
||||
.writeTimeout(timeOutMillSeconds,TimeUnit.MILLISECONDS)
|
||||
.build()
|
||||
}
|
||||
private val openWeatherMapService by lazy {
|
||||
retrofit.create(OpenWeatherMapApi::class.java)
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!--<string name="openweathermap_key" translatable="false">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>-->
|
||||
<string name="openweathermap_key" translatable="false">87cd0810b7e4b4debd31a6ef98b98154"</string>
|
||||
<!--<string name="here_key" translatable="false">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>-->
|
||||
<!--<string name="metno_contact" translatable="false"></string>-->
|
||||
</resources>
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ targetSdk = "36"
|
||||
|
||||
pluginSdk = "2.2.0"
|
||||
|
||||
gradle = "8.1.2"
|
||||
gradle = "8.12"
|
||||
android-gradle-plugin = "8.10.1"
|
||||
ksp-gradle-plugin = "2.1.21-2.0.1"
|
||||
|
||||
@ -139,6 +139,7 @@ osmopeninghours = { group = "de.westnordost", name = "osm-opening-hours", versio
|
||||
kotlin = ["kotlin-stdlib", "kotlinx-coroutines-core", "kotlinx-coroutines-android", "kotlinx-collections-immutable", "kotlinx-serialization-json"]
|
||||
androidx-lifecycle = ["androidx-lifecycle-viewmodel", "androidx-lifecycle-common", "androidx-lifecycle-runtime", "androidx-lifecycle-viewmodelcompose", "androidx-lifecycle-runtimecompose"]
|
||||
retrofit = ["retrofit-core", "retrofit-gson"]
|
||||
|
||||
tests = ["junit"]
|
||||
|
||||
[plugins]
|
||||
|
||||
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
#Sun Feb 09 12:41:42 CET 2025
|
||||
#Tue Jul 15 14:35:45 KST 2025
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@ -10,16 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
consumerProguardFiles("proguard-rules.pro")
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,15 +12,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -12,15 +12,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
@ -23,10 +23,16 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
create("nightly") {
|
||||
initWith(getByName("release"))
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -10,15 +10,21 @@ android {
|
||||
minSdk = libs.versions.minSdk.get().toInt()
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles("consumer-rules.pro")
|
||||
//consumerProguardFiles("consumer-rules.pro")
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
// proguardFiles(
|
||||
// getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
// "proguard-rules.pro"
|
||||
// )
|
||||
}
|
||||
debug {
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user