diff --git a/src/androidbuild/Ndk.zig b/src/androidbuild/Ndk.zig index 9609f45..2f7401a 100644 --- a/src/androidbuild/Ndk.zig +++ b/src/androidbuild/Ndk.zig @@ -112,13 +112,9 @@ pub fn init(b: *std.Build, android_sdk_path: []const u8, ndk_version: []const u8 } pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, errors: *std.ArrayList([]const u8)) void { - // Get root jar path - const root_jar = b.pathResolve(&[_][]const u8{ - ndk.android_sdk_path, - "platforms", - b.fmt("android-{d}", .{@intFromEnum(api_level)}), - "android.jar", - }); + if (ndk.android_sdk_path.len == 0 or ndk.sysroot_path.len == 0) { + @panic("Should not call validateApiLevel if NDK path is not set"); + } // Check if NDK sysroot/usr/lib/{target}/{api_level} path is accessible _ = blk: { @@ -151,6 +147,13 @@ pub fn validateApiLevel(ndk: *const Ndk, b: *std.Build, api_level: ApiLevel, err // Check if platforms/android-{api-level}/android.jar exists _ = blk: { + // Get root jar path + const root_jar = b.pathResolve(&[_][]const u8{ + ndk.android_sdk_path, + "platforms", + b.fmt("android-{d}", .{@intFromEnum(api_level)}), + "android.jar", + }); std.fs.accessAbsolute(root_jar, .{}) catch |err| switch (err) { error.FileNotFound => { const message = b.fmt("Android API level {d} not installed. Unable to find '{s}'", .{ diff --git a/src/androidbuild/apk.zig b/src/androidbuild/apk.zig index ef99d7f..dc7bdb8 100644 --- a/src/androidbuild/apk.zig +++ b/src/androidbuild/apk.zig @@ -71,7 +71,11 @@ pub fn create(sdk: *Sdk, options: Options) *Apk { error.NdkFailed => Ndk.empty, // fallthrough and print all errors below error.OutOfMemory => @panic("OOM"), }; - ndk.validateApiLevel(b, options.api_level, &errors); + if (ndk.path.len != 0) { + // Only do additional NDK validation if ndk is not set to Ndk.empty + // ie. "ndk_version" isn't installed + ndk.validateApiLevel(b, options.api_level, &errors); + } if (errors.items.len > 0) { printErrorsAndExit("unable to find required Android installation", errors.items); }