diff --git a/.editorconfig b/.editorconfig index 36d3f422..a8d1fe98 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,7 +8,9 @@ max_line_length = 140 indent_size = 4 ij_kotlin_allow_trailing_comma = true ij_kotlin_allow_trailing_comma_on_call_site = true +ktlint_code_style = intellij_idea ktlint_standard_property-naming = disabled +ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 2 [{*.yml,yaml}] indent_size = 2 diff --git a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/AgpUtils.kt b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/AgpUtils.kt index a2a270f1..17707104 100644 --- a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/AgpUtils.kt +++ b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/AgpUtils.kt @@ -12,13 +12,11 @@ internal fun ObjectFactory.getIconFiles(parent: File, iconName: String): Iterabl include(resourceFilePattern(iconName)) } -private fun resourceFilePattern(name: String): String { - return if (name.startsWith("@")) { - val (baseResType, fileName) = name.substring(1).split("/".toRegex(), 2) - "$baseResType*/$fileName.*" - } else { - name - } +private fun resourceFilePattern(name: String): String = if (name.startsWith("@")) { + val (baseResType, fileName) = name.substring(1).split("/".toRegex(), 2) + "$baseResType*/$fileName.*" +} else { + name } /** diff --git a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherExtension.kt b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherExtension.kt index ec396627..38b47646 100644 --- a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherExtension.kt +++ b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherExtension.kt @@ -6,9 +6,7 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import javax.inject.Inject -open class EasyLauncherExtension @Inject constructor( - objectFactory: ObjectFactory, -) { +open class EasyLauncherExtension @Inject constructor(objectFactory: ObjectFactory) { /** * Defines if the plugins should show warnings at configuration time. Disable by adding: diff --git a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherPlugin.kt b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherPlugin.kt index b9380549..360a0128 100644 --- a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherPlugin.kt +++ b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherPlugin.kt @@ -130,7 +130,7 @@ class EasyLauncherPlugin : Plugin { .toCreate(com.android.build.gradle.internal.scope.InternalArtifactType.GENERATED_RES) } else { // legacy way to hook up the plugin - val generatedResDir = buildDir.resolve("generated/easylauncher/res/${variant.name}") + val generatedResDir = layout.buildDirectory.map { it.dir("generated/easylauncher/res/${variant.name}") } task.configure { it.outputDir.set(generatedResDir) } project.afterEvaluate { val android = extensions.getByName("android") as BaseExtension @@ -149,10 +149,8 @@ class EasyLauncherPlugin : Plugin { variant: Variant, ribbonProductFlavors: Iterable, ribbonBuildTypes: Iterable, - ): List { - return ribbonProductFlavors.filter { config -> variant.productFlavors.any { config.name == it.second } } + - ribbonBuildTypes.filter { it.name == variant.buildType } - } + ): List = ribbonProductFlavors.filter { config -> variant.productFlavors.any { config.name == it.second } } + + ribbonBuildTypes.filter { it.name == variant.buildType } private val AndroidPluginVersion.canUseNewResources get() = this >= AndroidPluginVersion(7, 4).beta(2) private val AndroidPluginVersion.hasBrokenResourcesMerging get() = this >= AndroidPluginVersion(7, 3).alpha(1) diff --git a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherTask.kt b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherTask.kt index 0ccfab59..f8cb7735 100644 --- a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherTask.kt +++ b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/EasyLauncherTask.kt @@ -19,9 +19,7 @@ import javax.inject.Inject import kotlin.system.measureTimeMillis @CacheableTask -abstract class EasyLauncherTask @Inject constructor( - private val objects: ObjectFactory, -) : DefaultTask() { +abstract class EasyLauncherTask @Inject constructor(private val objects: ObjectFactory) : DefaultTask() { @get:Input abstract val manifestFiles: ListProperty diff --git a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/models/Size.kt b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/models/Size.kt index b545a3a8..55745d40 100644 --- a/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/models/Size.kt +++ b/easylauncher/src/main/kotlin/com/project/starter/easylauncher/plugin/models/Size.kt @@ -2,7 +2,10 @@ package com.project.starter.easylauncher.plugin.models import kotlin.math.roundToInt -internal data class Size(val value: Int, val unit: String) +internal data class Size( + val value: Int, + val unit: String, +) private val sizeFormat by lazy { "(\\d*)(\\D*)".toRegex() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d0e339ac..7f2c1c5c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -gradle-starter = "0.64.0" +gradle-starter = "0.65.0" gradle-gradlepublish = "1.2.1" gradle-doctor = "0.8.1" google-agp = "8.1.1" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba77..7f93135c 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 309b4e18..3fa8f862 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 79a61d42..1aa94a42 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/sample/adaptive-support/src/main/kotlin/com/example/custom/adaptive/LauncherIconView.kt b/sample/adaptive-support/src/main/kotlin/com/example/custom/adaptive/LauncherIconView.kt index 7ad6e60d..1f8fc20d 100644 --- a/sample/adaptive-support/src/main/kotlin/com/example/custom/adaptive/LauncherIconView.kt +++ b/sample/adaptive-support/src/main/kotlin/com/example/custom/adaptive/LauncherIconView.kt @@ -12,7 +12,10 @@ import androidx.annotation.DrawableRes import androidx.core.content.ContextCompat import androidx.core.view.isVisible -class LauncherIconView(context: Context, attrs: AttributeSet?) : FrameLayout(context, attrs) { +class LauncherIconView( + context: Context, + attrs: AttributeSet?, +) : FrameLayout(context, attrs) { init { inflate(context, R.layout.launcher_icon_view, this) @@ -28,12 +31,12 @@ class LauncherIconView(context: Context, attrs: AttributeSet?) : FrameLayout(con adaptive?.setupAdaptiveIcon() ?: setupLegacyIcon(iconResource) } - private fun getAdaptiveIcon(@DrawableRes iconResource: Int): AdaptiveIconDrawable? { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - ContextCompat.getDrawable(context, iconResource) as? AdaptiveIconDrawable - } else { - null - } + private fun getAdaptiveIcon(@DrawableRes iconResource: Int): AdaptiveIconDrawable? = if (Build.VERSION.SDK_INT >= + Build.VERSION_CODES.O + ) { + ContextCompat.getDrawable(context, iconResource) as? AdaptiveIconDrawable + } else { + null } @SuppressLint("NewApi") // whole AdaptiveIconDrawable is available since API26