diff --git a/Cargo.toml b/Cargo.toml index 7287f6a0fe16d..eaa08f5e511cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,6 +29,22 @@ default = [ "mp3", "x11", ] + +supported_android_features = [ + # cpal is not supported yet + # "bevy_audio", + "bevy_dynamic_plugin", + "bevy_gilrs", + "bevy_gltf", + "bevy_wgpu", + "bevy_winit", + "render", + "png", + "hdr", + # "mp3", + "x11", +] + profiler = ["bevy_ecs/profiler", "bevy_diagnostic/profiler"] wgpu_trace = ["bevy_wgpu/trace"] @@ -90,6 +106,11 @@ log = "0.4" ron = "0.6" anyhow = "1.0" +# bevy (Android) +[target.'cfg(target_os = "android")'.dependencies] +ndk-glue = { version = "0.2", features = ["logger"] } +android_logger = "0.9" + [target.'cfg(target_arch = "wasm32")'.dev-dependencies] console_error_panic_hook = "0.1.6" console_log = { version = "0.2", features = ["color"] } @@ -310,3 +331,16 @@ name = "assets_wasm" path = "examples/wasm/assets_wasm.rs" required-features = ["bevy_winit"] +[[example]] +name = "bevy_android" +path = "examples/android/bevy_android.rs" +crate-type = ["cdylib"] + +[package.metadata.android] +build_targets = [ "aarch64-linux-android", "armv7-linux-androideabi" ] +target_sdk_version = 28 +min_sdk_version = 28 + +[[package.metadata.android.feature]] +name = "android.hardware.vulkan.level" +version = "1" diff --git a/crates/bevy_render/Cargo.toml b/crates/bevy_render/Cargo.toml index 6374c6c97c644..5f18e54e9e780 100644 --- a/crates/bevy_render/Cargo.toml +++ b/crates/bevy_render/Cargo.toml @@ -48,7 +48,7 @@ parking_lot = "0.11.0" spirv-reflect = "0.2.3" [target.'cfg(all(not(target_os = "ios"), not(target_arch = "wasm32")))'.dependencies] -bevy-glsl-to-spirv = "0.1.7" +bevy-glsl-to-spirv = "0.2.0" [target.'cfg(target_os = "ios")'.dependencies] shaderc = "0.6.3" diff --git a/crates/bevy_render/src/shader/shader.rs b/crates/bevy_render/src/shader/shader.rs index 271487f8dc278..a117ed1a933e4 100644 --- a/crates/bevy_render/src/shader/shader.rs +++ b/crates/bevy_render/src/shader/shader.rs @@ -28,12 +28,7 @@ fn glsl_to_spirv( stage: ShaderStage, shader_defs: Option<&[String]>, ) -> Vec { - use std::io::Read; - - let mut output = bevy_glsl_to_spirv::compile(glsl_source, stage.into(), shader_defs).unwrap(); - let mut spv_bytes = Vec::new(); - output.read_to_end(&mut spv_bytes).unwrap(); - bytes_to_words(&spv_bytes) + bevy_glsl_to_spirv::compile(glsl_source, stage.into(), shader_defs).unwrap() } #[cfg(target_os = "ios")] diff --git a/examples/android/bevy_android.rs b/examples/android/bevy_android.rs new file mode 100644 index 0000000000000..7541aedf409f4 --- /dev/null +++ b/examples/android/bevy_android.rs @@ -0,0 +1,10 @@ +// Edit to run any single file example from Bevy. +include!("../3d/3d_scene.rs"); + +#[cfg_attr( + target_os = "android", + ndk_glue::main(logger(level = "trace", tag = "bevy_android"), backtrace = "full") +)] +pub fn android_main() { + main(); +}