feat(android): basic android support via winit native activity
This commit is contained in:
parent
d67acaadfa
commit
e50409943c
3 changed files with 37 additions and 8 deletions
|
@ -10,6 +10,9 @@ license = "MIT"
|
||||||
homepage = "https://zenyx-engine.github.io/"
|
homepage = "https://zenyx-engine.github.io/"
|
||||||
repository = "https://codeberg.org/Caznix/Zenyx"
|
repository = "https://codeberg.org/Caznix/Zenyx"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
members = ["subcrates/renderer", "subcrates/zlog"]
|
members = ["subcrates/renderer", "subcrates/zlog"]
|
||||||
|
@ -42,6 +45,7 @@ cgmath = "0.18.0"
|
||||||
image = "0.25.6"
|
image = "0.25.6"
|
||||||
smol = "2.0.2"
|
smol = "2.0.2"
|
||||||
|
|
||||||
|
winit = { version = "0.30.9" }
|
||||||
terminator = "0.3.2"
|
terminator = "0.3.2"
|
||||||
thiserror = "2.0.12"
|
thiserror = "2.0.12"
|
||||||
tobj = "4.0.3"
|
tobj = "4.0.3"
|
||||||
|
@ -49,5 +53,7 @@ tracing = "0.1.41"
|
||||||
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
|
||||||
vulkano = "0.35.1"
|
vulkano = "0.35.1"
|
||||||
wgpu = { version = "25.0.0", features = ["spirv"] }
|
wgpu = { version = "25.0.0", features = ["spirv"] }
|
||||||
winit = { version = "0.30.9", features = ["android-native-activity"] }
|
|
||||||
zlog.workspace = true
|
zlog.workspace = true
|
||||||
|
|
||||||
|
[target.aarch64-linux-android.dependencies]
|
||||||
|
winit = { version = "0.30.9", features = ["android-native-activity"] }
|
||||||
|
|
1
src/lib.rs
Normal file
1
src/lib.rs
Normal file
|
@ -0,0 +1 @@
|
||||||
|
include!("main.rs");
|
36
src/main.rs
36
src/main.rs
|
@ -1,7 +1,6 @@
|
||||||
|
use bytemuck::bytes_of;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use bytemuck::bytes_of;
|
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
use wgpu::util::DeviceExt;
|
use wgpu::util::DeviceExt;
|
||||||
use wgpu::{
|
use wgpu::{
|
||||||
|
@ -11,6 +10,8 @@ use wgpu::{
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
use winit::event::{ElementState, MouseButton};
|
use winit::event::{ElementState, MouseButton};
|
||||||
use winit::event_loop::{ActiveEventLoop, EventLoop};
|
use winit::event_loop::{ActiveEventLoop, EventLoop};
|
||||||
|
#[cfg(target_os = "android")]
|
||||||
|
use winit::platform::android::activity::AndroidApp;
|
||||||
use winit::window::{Window, WindowAttributes, WindowId};
|
use winit::window::{Window, WindowAttributes, WindowId};
|
||||||
use zlog::LogLevel;
|
use zlog::LogLevel;
|
||||||
use zlog::config::LoggerConfig;
|
use zlog::config::LoggerConfig;
|
||||||
|
@ -493,8 +494,7 @@ impl ApplicationHandler for App<'_> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pub fn main() -> Result<(), terminator::Terminator> {
|
||||||
fn main() -> Result<(), terminator::Terminator> {
|
|
||||||
let config = LoggerConfig::default()
|
let config = LoggerConfig::default()
|
||||||
.colored_stdout(true)
|
.colored_stdout(true)
|
||||||
.log_to_stdout(true)
|
.log_to_stdout(true)
|
||||||
|
@ -503,11 +503,33 @@ fn main() -> Result<(), terminator::Terminator> {
|
||||||
.level(LogLevel::Info)
|
.level(LogLevel::Info)
|
||||||
.log_path("zenyx.log");
|
.log_path("zenyx.log");
|
||||||
let _logger = zlog::Logger::new(config);
|
let _logger = zlog::Logger::new(config);
|
||||||
let event_loop = EventLoop::new()?;
|
#[cfg(not(target_os = "android"))]
|
||||||
event_loop.set_control_flow(winit::event_loop::ControlFlow::Poll);
|
{
|
||||||
|
_main()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn run_app(event_loop: winit::event_loop::EventLoop<()>) -> Result<(), terminator::Terminator> {
|
||||||
let mut app = App::new();
|
let mut app = App::new();
|
||||||
|
event_loop.set_control_flow(winit::event_loop::ControlFlow::Poll);
|
||||||
event_loop.run_app(&mut app)?;
|
event_loop.run_app(&mut app)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[unsafe(no_mangle)]
|
||||||
|
#[cfg(target_os = "android")]
|
||||||
|
extern "C" fn android_main(app: AndroidApp) {
|
||||||
|
use winit::event_loop::EventLoopBuilder;
|
||||||
|
use winit::platform::android::EventLoopBuilderExtAndroid;
|
||||||
|
let event_loop = EventLoopBuilder::default()
|
||||||
|
.with_android_app(app)
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
|
run_app(event_loop).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn _main() -> Result<(), terminator::Terminator> {
|
||||||
|
let event_loop = EventLoop::new()?;
|
||||||
|
run_app(event_loop)?;
|
||||||
info!("Exiting...");
|
info!("Exiting...");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue