0.1.0-0-pre.9-fix.1

This commit is contained in:
2026-09-16 10:04:59 +02:00
parent 4fcbdf316d
commit a3d5572c37
6 changed files with 163 additions and 25 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: Android/README.md -->
<!-- version: 6 -->
<!-- version: 7 -->
# Android
@@ -79,15 +79,15 @@ Les touch events standards restent traités via SDL3 et ne transitent pas par JN
## Packaging des assets
Les modules applications exécutent `stageSasedevAssets` avant `preBuild`.
Chaque variante Android enregistre une tâche `stage<Variant>SasedevAssets` via la Variant API AGP.
La tâche compose les sources :
La tâche générée compose les sources :
```text
assets/common/ -> assets/common/
assets/<game>/ -> assets/game/
```
dans un répertoire généré sous `Android/<module>/build/generated/sasedevAssets/main/`.
dans un répertoire généré sous `Android/<module>/build/generated/sasedevAssets/<variant>/`.
Aucune ressource source n'est copiée durablement dans un module Android ou une crate Rust.

View File

@@ -1,22 +1,44 @@
// file: Android/gradle/sasedev-assets.gradle
// version: 1
// version: 2
def generatedAssetsDirectory = layout.buildDirectory.dir("generated/sasedevAssets/main")
def sourceCommonAssets = rootProject.file("../assets/common")
def sourceGameAssets = rootProject.file("../assets/${project.ext.sasedevGameAssetDirectory}")
abstract class StageSasedevAssetsTask extends DefaultTask {
@InputDirectory
abstract DirectoryProperty getCommonAssetsDirectory()
tasks.register("stageSasedevAssets", Sync) {
into(generatedAssetsDirectory)
from(sourceCommonAssets) {
into("common")
}
from(sourceGameAssets) {
into("game")
@InputDirectory
abstract DirectoryProperty getGameAssetsDirectory()
@OutputDirectory
abstract DirectoryProperty getOutputDirectory()
@TaskAction
void stageAssets() {
def output = outputDirectory.get().asFile
project.delete(output)
project.copy {
from(commonAssetsDirectory)
into(new File(output, "common"))
}
project.copy {
from(gameAssetsDirectory)
into(new File(output, "game"))
}
}
}
android.sourceSets.main.assets.srcDir(generatedAssetsDirectory)
androidComponents {
onVariants(selector().all()) { variant ->
def capitalizedVariantName = variant.name.substring(0, 1).toUpperCase() + variant.name.substring(1)
def stageTask = tasks.register("stage${capitalizedVariantName}SasedevAssets", StageSasedevAssetsTask) {
commonAssetsDirectory.set(rootProject.layout.projectDirectory.dir("../assets/common"))
gameAssetsDirectory.set(rootProject.layout.projectDirectory.dir("../assets/${project.ext.sasedevGameAssetDirectory}"))
outputDirectory.set(layout.buildDirectory.dir("generated/sasedevAssets/${variant.name}"))
}
tasks.named("preBuild").configure {
dependsOn(tasks.named("stageSasedevAssets"))
variant.sources.assets.addGeneratedSourceDirectory(stageTask) { task ->
task.outputDirectory
}
}
}