Scripts(android): only copy assets that are needed

This commit is contained in:
Pieter Vander Vennet 2025-07-10 22:18:18 +02:00
parent 4be89ffdd3
commit 995427cc66
4 changed files with 23 additions and 8 deletions

View file

@ -36,7 +36,9 @@ jobs:
run: npm ci
- run: npm run init
- run: |
npm run init
npm run generate:layeroverview -- --print-needed-assets
- name: Move dependency (@capacitor) into android repo
run: |
@ -63,9 +65,6 @@ jobs:
fi
git add build.gradle
- name: Run tests
run: npm run test
- name: prepare android build
run: npm run android:prepare
@ -123,7 +122,7 @@ jobs:
run: |
npm run clean && npm run clean:deep
npm run prep:layeroverview
npm run generate:layeroverview -- --force --exclude-labels=nsfw
npm run generate:layeroverview -- --force --exclude-labels=nsfw --print-needed-assets
npm run generate:layouts
- name: Move dependency (@capacitor) into android repo

1
.gitignore vendored
View file

@ -52,3 +52,4 @@ public/assets/icons/*.webp
uploaded_images.json
/app/dist/
src/assets/bing.json
needed_assets.csv

View file

@ -771,7 +771,7 @@ class LayerOverviewUtils extends Script {
)
const forceReload = args.some((a) => a == "--force") || labelBlacklist.size > 0
const printAssets = args.some(a => a === "--print-needed-assets")
console.log("Arguments are:", { labelBlacklist, themeWhitelist, forceReload })
const doesImageExist = DoesImageExist.constructWithLicenses(existsSync)
const sharedLayers = this.buildLayerIndex(doesImageExist, labelBlacklist)
@ -860,6 +860,11 @@ class LayerOverviewUtils extends Script {
(l) => Constants.added_by_default.indexOf(l["id"]) < 0
)
}
if(printAssets){
const images = Utils.Dedup(Array.from(sharedThemes.values()).flatMap(th => th._usedImages ?? [] ))
writeFileSync("needed_assets.csv", images.join("\n"))
console.log("Written needed_assets.csv")
}
}
private parseLayer(

View file

@ -15,6 +15,7 @@ then
exit 0
fi
# We don't bundle studio; as it is not suited for small screens anyway
mv studio.html studiohtml
npm run build
mv studiohtml studio.html
@ -57,13 +58,22 @@ cp -r dist/assets/data dist-full/assets/
cp -r dist/assets/docs dist-full/assets/
cp -r dist/assets/fonts dist-full/assets/
cp -r dist/assets/langs dist-full/assets/
cp -r dist/assets/layers dist-full/assets/
# We need the assets for files, we copy them from "needed_assets"
# cp -r dist/assets/layers dist-full/assets/
# cp -r dist/assets/themes dist-full/assets/
while IFS= read -r file; do
[[ $file == ./assets/* ]] || continue
dest="dist-full/${file#./}"
mkdir -p "$(dirname "$dest")"
cp "$file" "$dest"
# echo "Copying $file to $dest"
done < needed_assets.csv
cp -r dist/assets/png dist-full/assets/
cp -r dist/assets/svg dist-full/assets/
cp -r dist/assets/templates dist-full/assets/
cp -r dist/assets/generated/themes/ dist-full/assets/generated/
cp -r dist/assets/themes dist-full/assets/
# cp dist/assets/*.js.map dist-full/assets/
rm -rf dist-full/assets/data/nsi
rm dist-full/assets/layers/*/*.json