From b7d2d2e66bc193bf88f80c1189b3f219b69e4f32 Mon Sep 17 00:00:00 2001 From: Blayung Date: Mon, 26 Jan 2026 20:07:47 +0100 Subject: [PATCH 1/2] add assets support --- src/androidbuild/apk.zig | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/androidbuild/apk.zig b/src/androidbuild/apk.zig index 801535c..01e1ded 100644 --- a/src/androidbuild/apk.zig +++ b/src/androidbuild/apk.zig @@ -48,6 +48,7 @@ android_manifest: ?LazyPath, artifacts: std.ArrayListUnmanaged(*Step.Compile), java_files: std.ArrayListUnmanaged(LazyPath), resources: std.ArrayListUnmanaged(Resource), +assets: std.ArrayListUnmanaged(Resource), pub const Options = struct { /// ie. "35.0.0" @@ -93,6 +94,7 @@ pub fn create(sdk: *Sdk, options: Options) *Apk { .artifacts = .empty, .java_files = .empty, .resources = .empty, + .assets = .empty }; return apk; } @@ -117,6 +119,15 @@ pub fn addResourceDirectory(apk: *Apk, dir: LazyPath) void { }) catch @panic("OOM"); } +pub fn addAssetDirectory(apk: *Apk, dir: LazyPath) void { + const b = apk.b; + apk.assets.append(b.allocator, Resource{ + .directory = .{ + .source = dir, + }, + }) catch @panic("OOM"); +} + /// Add artifact to the Android build, this should be a shared library (*.so) /// that targets x86, x86_64, aarch64, etc pub fn addArtifact(apk: *Apk, compile: *std.Build.Step.Compile) void { @@ -345,14 +356,15 @@ fn doInstallApk(apk: *Apk) std.mem.Allocator.Error!*Step.InstallFile { aapt2link.addArg("-o"); const resources_apk_file = aapt2link.addOutputFileArg("resources.apk"); - // TODO(jae): 2024-09-17 - // Add support for asset directories - // Additional directory - // aapt.step.dependOn(&resource_write_files.step); - // for (app_config.asset_directories) |dir| { - // make_unsigned_apk.addArg("-A"); // additional directory in which to find raw asset files - // make_unsigned_apk.addArg(sdk.b.pathFromRoot(dir)); - // } + // Add assets + for (apk.assets.items) |asset| { + switch (asset) { + .directory => |asset_dir| { + aapt2link.addArg("-A"); + aapt2link.addDirectoryArg(asset_dir.source); + } + } + } // Add resource files for (apk.resources.items) |resource| { From 466b0df40c2473d3c6c5f7498224fbaa18e6733d Mon Sep 17 00:00:00 2001 From: Blayung Date: Mon, 26 Jan 2026 20:11:39 +0100 Subject: [PATCH 2/2] added info about assets to the minimal example --- examples/minimal/build.zig | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/minimal/build.zig b/examples/minimal/build.zig index 3653b34..62bc275 100644 --- a/examples/minimal/build.zig +++ b/examples/minimal/build.zig @@ -28,6 +28,9 @@ pub fn build(b: *std.Build) void { apk.setAndroidManifest(b.path("android/AndroidManifest.xml")); apk.addResourceDirectory(b.path("android/res")); + // Assets support - put your textures and sounds here, not in the resources: + // apk.addAssetDirectory(b.path("android/assets")); + // Add Java files // - If you have 'android:hasCode="false"' in your AndroidManifest.xml then no Java files are required // see: https://developer.android.com/ndk/samples/sample_na