iOS build script(better version of #151)#152
iOS build script(better version of #151)#152frederik-uni wants to merge 10 commits intoemilk:mainfrom
Conversation
.app needs to be in the payload folder instead of the contents
# Conflicts: # Cargo.lock
|
eframe 0.28.2 is required or ([patch.crates-io] & remove |
| @@ -0,0 +1,180 @@ | |||
| #!/usr/bin/env python3 | |||
There was a problem hiding this comment.
This file should have a .py file extension. Maybe it should also be called build-ios? But the current name is fine too.
There was a problem hiding this comment.
I decided not to use the .py extension so it can be put into the bin folder & used as command
|
@lucasmerlin you've done some iOS work, maybe you wanna take a quick look? 🙏 |
|
Look really cool! Is there any reason you decided not to use cargo-mobile? |
|
I don't want to change the project to run on a iOS target. cargo-mobile compiles it as a static lib and imports it into a swift app. My goal was to have a script that would need to be installed once and can run any existing egui project without modifying it. The only thing that needs to be added is a id to the cargo.toml. |
|
Ah, I see, that makes sense! |
# Conflicts: # Cargo.lock
|
this should work for most Egui/eframe projects with a version > 28.1 with "wgpu" as rendering backend |
|
Hi, thanks a lot, this looks really nice! I think this line here needs to be changed: def parse_cargo_toml():
with open('Cargo.toml', 'rb') as f:
cargo_toml = tomllib.load(f)
# here we need to get the name (at least if it is set here, we should probably use ["package"]["name"] as a fallback somehow
app_name = cargo_toml['package']['metadata']['bundle']['name']
app_id = cargo_toml['package']['metadata']['bundle']['identifier']
return app_name, app_idCan this be merged after that? I see there are some conflicts, probably just the versions, right? |
simple wrapper around, building the project with cargo-bundle & running it with xcrun commands. the toolchains are set by default to aarch64 & can be modified with the --x86 flag or --sim for the simulator. creating a ipa from a .app file is quite easy(rename app folder to Payload and zip it) is also automated