Two reasons:
1. This is how it always worked in practice. The old special case actually did nothing due to an oversight.
2. Per the principle of least astonishment, Lime should avoid messing with the user's assets. If they wanted it to be a template, they would have specified `type="template"`.
The implementation was copy-pasted, so it makes more sense to have only a single copy. `HTML5Platform` added a comment about possible future changes, so I kept that. Future changes will still be possible by overriding the function.
The old code appeared to be trying to do this, but it didn't work. When it found appinfo.json, it would call `copyAsset()` with an extra `context` argument, which is what you do for templates. However, `copyAsset()` only processes templates when `type == TEMPLATE`, otherwise it ignores the extra argument and processes it as a normal asset.
Having eight separate implementations made it harder to maintain. While an asset embedding bug got fixed on desktop targets, it got overlooked on others. This lead to assets being included twice on those other targets: once embedded, and once normally. (#1898) Now, that behavior is controlled from one place, and the bug is fixed for eight targets at once.
This also standardizes the case of `asset.embed == true && asset.type == TEMPLATE`. Previously, some targets would prioritze `embed` over `type`, embedding the template into the app without even processing it as a template. Now, it will always prioritize `type`, processing templates as templates and never trying to embed them.
Three targets are left out since they have more complex asset embedding behavior. I haven't checked if the bug is present on any of those.
Haxe 5 defaults to 1.15, but we're currently still bundling an older version. So we need to specify hl-ver or it won't work properly because Haxe 5 will produce code that older HashLink isn't compatible with.
If hl-ver is already specified, or if a custom HL_PATH is defined, does not set hl-ver because that may be undesirable.
This change moves away from purely hard coding the minimum sdk version for android and also correctly sets the PLATFORM_NUMBER define. The gcc toolchain is no longer compatible in lime 8.3.x+ so, we shouldn't have to worry about the PLATFORM define at all.
It might be wise to enforce a baseline minimum version and complain if users try to use something lower than the default.
Options are default, always, never, and shortEdges. Defaults to default.
What default means depends on which Android SDK version is used.
According to the Android docs, starting with Android SDK 35, most options will be forced to act the same as always. However, for SDK 34 (which is the current minimum on Google Play) this should remain configurable.
https://developer.android.com/develop/ui/views/layout/display-cutout
MAC_USE_CURRENT_SDK is an incredibly old relic from a very old version
of hxcpp (haxe 2 days). It was removed in:
9a7f7f931f
This is now instead controlled by the flag `MACOSX_DEPLOYMENT_TARGET`.
The setup command now only does two things:
- Sets up haxelibs
- Adds cli alias
34 is the minimum required version by Google Play, so it should be default.
Bumping to 34 and 35 requires updating both gradle-version and gradle-plugin-version.
The new versions now require an ndkVersion flag in build.gradle. This can be obtained by reading source.properties in the root of the NDK.
JDK 17 will be required for these updates. Previously required JDK 11.
If a custom version is configured, users will think that just pressing enter will clear it, but it won't. It'll just keep the current value. To actually clear the value, they need to run lime config remove HL_PATH instead.