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