This commit changes the default resource routing behaviour:
- It used to search for a file in the root directory (on a domain level)
- After this change, it will search for a file relatively to the current
url segment
Besides that, we add a small configuration to let developers change the
default behaviour when needed.
___
usage examples:
```kotlin
// 1
configureWebResources {
setResourceFactory { path -> urlResource("/myApp1/resources/$path") }
}
// 2
configureWebResources {
setResourcelFactory { path -> urlResource("https://mycdn.com/myApp1/res/$path") }
}
```
___
This will fix https://github.com/JetBrains/compose-multiplatform/issues/3413 (currently it bothers our users)
(cherry picked from commit 73802292ce)
Reason:
Since Xcode 15, there is a new default setting:
`ENABLE_USER_SCRIPT_SANDBOXING = YES`
SyncComposeResourcesForIosTask fails to work with it right now.
COMPOSE-357
- Merged non UI examples visual-effects, falling-balls and minesweeper
into one graphics2d
- Removed deprecated function calls `kotlin.system.getTimeNanos()`
- Little bit simplifyed code
- Used Material3
Co-authored-by: Igor Demin <igordmn@users.noreply.github.com>
Currently when `org.gradle.configuration-cache=true` we have an error:
> Configuration cache state could not be cached: field `resourceFiles`
of task `:shared:syncComposeResourcesForIos` of type
`org.jetbrains.compose.experimental.uikit.tasks.SyncComposeResourcesForIosTask`:
error writing value of type
'org.gradle.api.internal.provider.TransformBackedProvider'
Old description (can be ignored):
_This PR attempts to fix it in SyncComposeResourcesForIosTask by
wrapping inputs into providers. It seems that gradle configuration cache
doesn't like some provider types produced by `.map`, `.zip`, `.orElse`,
etc._
**Latest description:**
With configuration cache enabled, gradle runs all `orElse` providers
during configuration (I don't know why yet).
We used to throw an exception in `orElse` which led to the crash. This
PR refactors SyncComposeResourcesForIosTask so it doesn't throw an
exception immediately in orElse, but postpones it to later step.
* Add API to not apply the Compose Compiler plugin
* avoid eager initialization
* Update gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposeExtension.kt
Co-authored-by: Igor Demin <igordmn@users.noreply.github.com>
* Update gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/ComposeExtension.kt
Co-authored-by: Igor Demin <igordmn@users.noreply.github.com>
* Apply PR review suggestions:
- Deprecate `compose.web.targets` in favor of `compose.platformTypes`
- refactor `configureExperimentalWebApplication` to support multiple k/js targets
---------
Co-authored-by: Igor Demin <igordmn@users.noreply.github.com>
According to https://developer.android.com/build/jdks we should:
1. [use JDK 17 for API 34](https://developer.android.com/build/jdks#compileSdk)
2. [use toolchain](https://developer.android.com/build/jdks#toolchain):
```
We recommend that you always specify the Java toolchain, and either ensure that the specified JDK is installed, or add a toolchain resolver to your build.
```
As we don't want to force people to have JDK 17 on their machine, we apply toolchain resolver that is recommended by Gradle:
```
id("org.gradle.toolchains.foojay-resolver-convention") version("0.4.0")
```
## Test
1. Remove JDK 17 from the computer, remove `jvmToolchain(17)`
2. Run `./gradlew assembleDebug`
3. It should fail with:
```
> Could not create task ':androidApp:compileDebugJavaWithJavac'.
> Failed to calculate the value of task ':androidApp:compileDebugJavaWithJavac' property 'javaCompiler'.
> No matching toolchains found for requested specification: {languageVersion=17, vendor=any, implementation=vendor-specific} for WINDOWS on x86_64.
> No locally installed toolchains match and toolchain download repositories have not been configured.
```
4. restore `jvmToolchain(17)`
5. Run `./gradlew assembleDebug` again
6. It should succeed
## Issues
Fixes https://github.com/JetBrains/compose-multiplatform/issues/3615