Closed nothingismagick closed 3 years ago
Are there concrete points on which new contributors could spend time in order to move this effort forward?
I don't know that there has been any concrete work done other than planning / research that is noted above. Are you interested in helping to push this forward @Moxinilian?
To the extent of my capabilities, yes! But I am not familiar with the tauri codebase at all, perhaps I should read and understand it first.
For what it's worth however, I don't really understand the motivation behind unifying both mobile implementations. The way one accesses them is sufficiently different that in my opinion they deserve specialized code. Also, adding a Kotlin layer would add one more layer of indirection iOS does not need as you can simply access the relatively simple WebKit interface through regular FFI (I am more familiar with iOS than Android however, so maybe the situation is different on the other side).
@Moxinilian With Android you can access the WebView directly as well through the Android SDK. My reasoning for looking at Kotlin has to do with handling both platforms. Kotlin native can interface both with Android and iOS; it would basically let us share code across both platforms. The alternative would be to build two isolated layers; a Kotlin layer for android and a swift layer for iOS; it would get very complex though.
Kotlin Multiplatform Mobile seems like a good way to go here at some point. The UI layer for ios would still need to be done in swift but having worked on a couple multiplatform kotlin apps over the last year, it works really well. This particular link though is to a newer effort to improve the experience and may not be ready yet.
coming soon :tm:
It's great that mobile is on the roadmap.
I am finding it a little difficult to choose what to use for a GUI right now for a new project. It must have easy support for calling Rust or Golang (or C library). This doesn't seem straightforward in RN/Expo, and desktop has to be Electron. This really leaves me with Flutter, which is easy to use, but web support is not the best and I'd rather use HTML/CSS/JS.
Tauri on the other hand seems to be just what I am after, rust back end and web GUI.
If I must support mobile at some point though, say within a year, is Tauri a reasonable choice? Or is it too early to say, would really value your advice.
We already have a working prototype for iOS, and within a year is totally reasonable for the major mobile platforms.
We already have a working prototype for iOS, and within a year is totally reasonable for the major mobile platforms.
6 months passed already. What's the mobile support status now? Will they be okay before 2022? Thanks @nothingismagick
@hustcer No chance for this year at all. Best case would be Q2 2022, but we're still looking for someone to work on android.
@FabianLars is right. Hopefully we will be able to offer early access in Q1 2022 😜 but it will all need to be audited, and so Q2 2022 is just about a year after I made the comment that we will need a year. :)
Do you consider pushing iOS support, even if Android would not be ready yet?
We will put out beta-quality code as it becomes available, but we will probably do the final security audit for both systems, like how we did the desktop audit.
but we're still looking for someone to work on android.
@FabianLars have you found anyone for android yet ? If not, I would like to take it up but will require guidance on how to go about it.
@AP2008 Yeah we recently found someone who will work together with Yu on it. But we appreciate every helping hand, even if "just" for testing ❤️ So if you're interested you can say hello in the #tao-wry channel on discord (or maybe via pm @nothingismagick#9835
aka Denjell
on the tauri server).
Out of curiosity, will the solution resemble the desktop stack (Webview + Rust native bindings)?
@pepicrft Generally yes. Android is tricky tho and may require the dev to use Java/Kotlin in some places, but we'll have to wait and see for that one.
After 5 years of working with mobile use native tech like kotlin,swift and using cross platform tech like flutter, react native etc i honestly don't like using cross platform technology for mobile. I had so many performance issues with react native especially on low end android devices. Flutter is great and even though i have not faced any performance issues as such for flutter, some people do complain about flutter's performance on ios as ios uses metal backend even though skia(on which flutter is based on) has added support for metal. I have just decided to stick with Native tech as every year Google Io and wwdc there are so many changes to each platform that it is difficult to keep up for these cross platform tech. I have my doubts about Kotlin multiplatform mobile especially on ios though i have never tried it. I understand tauri takes completely different approach as compared to these cross platform tech and i would be really happy if you guys come up with your own soln for mobile but do consider carefully before investing time, energy and money in mobile. I dont want this project to suffer because of mobile as it does a great job for desktop apps. Would really like the tauri project to be really good at one thing. Maybe maintain a separate repo for mobile.
Sorry if any of my words hurt anybody.
I don’t think that’s a radical position, and your personal technical opinion certainly shouldn’t shouldn’t be taken as an offense to anyone ☺️
Even though it kind of takes the opposite position, this post seems fairly well aligned with the point you’re making: https://news.ycombinator.com/item?id=31243501
Native apps still have their place, but for most applications the native app frameworks only need to provide a very thin layer for the last stretch of the app development process.
Thank you very much for your amazing project! Now is Q3 of 2022. Do you have any assumptions when iOS support will be added?
Tauri is next gen takeover for react-native, ionic and other mobile/web frameworks
gambare
Would there need to be a change for PinePhone Pro? If we want another option other than Android or iOS, I think Tauri is gonna be the way.
@GravityCollision The first time someone reported that their tauri app worked on a PinePhone (non-pro of course), was a year ago: https://discord.com/channels/616186924390023171/837614826900946954/878461731763015680. But makes sense since it's basically just arm Linux, isn't it? On top of, shortly after that, someone even compiled their app directly on a pinephone (not recommended unless you have a lot of time 😅)
And while what i said was about the normal pinephone, it should apply to the Pro too.
I know this thread is closed, but I wanted to make a quick point that sometimes gets overlooked in the analysis of which hybrid framework to use, be it flutter, react native, ionic, etc...
If you're coming from the JS / web world, you'll often want to build an app across multiple environments: web, mobile, desktop, browser extension.
And as such, you'll want to re-use as much code as possible. With monorepos, code re-use is reasonably easy to achieve, so long as the code works across your environments.
Currently, re-using react web components is not generally possible in react native. Or I should say, re-use is very limited unless you add further abstraction. Ionic is much better in this regard.
It seems Tauri is also very good in this regard for desktop apps.
I hope that whatever mobile direction you guys go into, you'll give some consideration to allowing as much JS (and JS framework components) re-use as possible, so that a div
is a div
and a button
accepts onClick
and not onPress
(these are react examples).
@npearson72 Since we will use webviews on mobile too, just like on desktop, it will mostly work the same as in your average browser :)
Hey, are there any updates, given that its Q3 2022? What's the progress?
I’m just observing the #mobile channel on the Tauri Discord where the majority of mobile dev discussion is taking place, but it appears to be progressing very well.
Here’s the WIP setup guide: https://hackmd.io/XIcEwk4GSxy8APZhSa0UnA?view
Development is mainly taking place here: https://github.com/tauri-apps/cargo-mobile
Snapshots from end of August:
https://user-images.githubusercontent.com/583842/190613133-89d656b3-0c4e-4fc3-9fdf-852f132ed23c.MOV
https://user-images.githubusercontent.com/583842/190613198-82f3a20e-19c8-421d-967f-82899b43b82b.MOV
In terms of a full, working release of the "Mobile Bundler" listed under the road map online. How long are we looking at? Years? Months?
As a developer I know it's completely unrealistic to give an accurate time line on something like this, especially because this is an open source community project. I just want to know that if I build an app using Tauri and tell the users "Mobile will be coming in the future", how long of a wait it's going to be. If we are looking at 2 years, maybe I recode the mobile app in a different language / solution for time being. But if we are looking at a year or less, I'm willing to wait. Any comments or thoughts?
Answer from devs: Months.
alpha soon :tm:
Looking forward to the alpha/beta release and related demo..
Can't wait !!
@Moxinilian With Android you can access the WebView directly as well through the Android SDK. My reasoning for looking at Kotlin has to do with handling both platforms. Kotlin native can interface both with Android and iOS; it would basically let us share code across both platforms. The alternative would be to build two isolated layers; a Kotlin layer for android and a swift layer for iOS; it would get very complex though.
I am not sure how Tauri works, just stumbled upon this page. Are you using a similar approach to capacitorJS ?
I managed to make tauri mobile work on my phone with wry (I'm not even a BIT sure what it means) But the project doesn't have any html / js / css files? Is it meant to be like this whilst still being developed or I am being just a noob?
Thank you in advance :)
I managed to make tauri mobile work on my phone with wry (I'm not even a BIT sure what it means) But the project doesn't have any html / js / css files? Is it meant to be like this whilst still being developed or I am being just a noob?
@LeFede wry
is just a library used by tauri, so it's only for if you want to manually create your window and open a webview etc. So use the tauri template in cargo-mobile instead. Note that it only works with iOS at the moment, so if you need Android support immediately, you can't use the whole tauri development kit.
(I'm not a contributor or expert, I may be off on the details)
I managed to make tauri mobile work on my phone with wry (I'm not even a BIT sure what it means) But the project doesn't have any html / js / css files? Is it meant to be like this whilst still being developed or I am being just a noob?
@LeFede
wry
is just a library used by tauri, so it's only for if you want to manually create your window and open a webview etc. So use the tauri template in cargo-mobile instead. Note that it only works with iOS at the moment, so if you need Android support immediately, you can't use the whole tauri development kit. (I'm not a contributor or expert, I may be off on the details)
@MadScientist2854 according to this note it would be possible even in android. I followed all the steps and even so I didn't get to make it work. I don't see the tauri template in cargo mobile. Just wry, wgpu or something like that and others. Only wry worked while the others all resulted in errors.
Recap: Using cargo-mobile I guess I couldn't figure how to setup my files to make it work and using tauri-mobile gave me errors I couldn't figure out how to fix :(
Thank you for your clarification
btw we're working on actual docs here: https://github.com/tauri-apps/tauri-docs/pull/1001
btw we're working on actual docs here: tauri-apps/tauri-docs#1001
@FabianLars okay, after following step by step my app works on desktop but when I try to compile fo mobile it says:
error[E0433]: failed to resolve: could not find `mobile_entry_point` in `tauri`
--> src/mobile.rs:1:10bug
|
1 | #[tauri::mobile_entry_point]
| ^^^^^^^^^^^^^^^^^^ could not find `mobile_entry_point` in `tauri`
For more information about this error, try `rustc --explain E0433`.
error: could not compile `app` due to previous error
Error `Failed to run `cargo build`: Command "cargo build --package app --manifest-path /home/fede/dev/tauri-app2/src-tauri/Cargo.toml --target aarch64-linux-android --no-default-features --color always" didn't complete successfully, exiting with code 101.
Since I don't know much about rust I can't figure how to solve this out. Apparently it doesn't find the package mobile_entry_point ? or namespace... not sure
Any ideas?
If I comment out the #[tauri::mobile_entry_point]
I get the following:
fede@main ~/dev/tauri-app2 $ cargo tauri android dev
Running BeforeDevCommand (`npm run dev`)
> tauri-app2@0.0.0 dev
> vite
VITE v3.2.4 ready in 220 ms
➜ Local: http://localhost:5173/
➜ Network: http://{public_ip_I_am_not_showing}:5173/
Info detected host target triple "x86_64-unknown-linux-gnu"
Detected connected device: Meep 🦊 (Mi A2) with target "aarch64-linux-android"
Info symlink at "/home/fede/dev/tauri-app2/src-tauri/gen/android/app/app/src/main/jniLibs/arm64-v8a/libapp.so" points to "/home/fede/dev/tauri-app2/src-tauri/target/aarch64-linux-android/debug/libapp.so"
<=============> 100% CONFIGURING [285ms]
> IDLE
Compiling wry v0.22.5TING [385ms]
Compiling app v0.1.0 (/home/fede/dev/tauri-app2/src-tauri)t is not connected (os error 107); terminate connection: 0
error: failed to run custom build command for `wry v0.22.5`
Caused by:
process didn't exit successfully: `/home/fede/dev/tauri-app2/src-tauri/target/debug/build/wry-82393426eaa0162e/build-script-build` (exit status: 101)
--- stdout
cargo:rerun-if-env-changed=WRY_ANDROID_REVERSED_DOMAIN
cargo:rerun-if-env-changed=WRY_ANDROID_APP_NAME_SNAKE_CASE
cargo:rerun-if-env-changed=WRY_ANDROID_KOTLIN_FILES_OUT_DIR
--- stderr
thread 'main' panicked at 'Failed to canonicalize path: Os { code: 2, kind: NotFound, message: "No such file or directory" }', /home/fede/.cargo/registry/src/github.com-1ecc6299db9ec823/wry-0.22.5/build.rs:36:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
Error `Failed to run `cargo build`: Command "cargo build --package app --manifest-path /home/fede/dev/tauri-app2/src-tauri/Cargo.toml --target aarch64-linux-android --no-default-features --color always" didn't complete successfully, exiting with code 101.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:rustBuildArm64Debug'.
> Process 'command '/home/fede/.cargo/bin/cargo-tauri'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 936ms
Error Failed to assemble APK: Command "/home/fede/dev/tauri-app2/src-tauri/gen/android/app/gradlew --project-dir /home/fede/dev/tauri-app2/src-tauri/gen/android/app assembleArm64Debug --warn" didn't complete successfully, exiting with code 1.
Btw I forgot to mention that to scafold the whole project I used:
yarn create vite
yarn tauri init
cargo tauri android init
cargo tauri android dev
yeassssssssssssssssssssssssssssss finally now i got to learn rust !
yeassssssssssssssssssssssssssssss finally now i got to learn rust !
hahaha exactly! same thought here 🤜🏼 🤛🏼 👏🏼
Hello can you help me when i run yarn tauri android dev
i have this error
` VITE v4.0.3 ready in 639 ms
➜ Local: http://localhost:5173/ ➜ Network: http://192.168.0.104:5173/ Info detected host target triple "x86_64-pc-windows-msvc" Detected connected device: Pixel_3_API_30 (sdk_gphone_x86) with target "i686-linux-android" <-------------> 0% EXECUTING [503ms] Compiling cfg-if v1.0.0NG [895ms] Compiling libc v0.2.139 connection 1/100 Compiling memchr v2.5.0 Compiling siphasher v0.3.10 Compiling serde v1.0.151 Compiling smallvec v1.10.0 Compiling itoa v1.0.5 Compiling once_cell v1.16.0 Compiling new_debug_unreachable v1.0.4 Compiling ryu v1.0.12 Compiling scopeguard v1.1.0 Compiling precomputed-hash v0.1.1 Compiling mac v0.1.1 Compiling byteorder v1.4.3 Compiling bytes v1.3.0 Compiling tinyvec_macros v0.1.0 Compiling log v0.4.17TING [1s] Compiling lock_api v0.4.9 [1s] Compiling futf v0.1.5 Compiling tinyvec v1.6.0 Compiling percent-encoding v2.2.0 Compiling phf_shared v0.8.0 Compiling phf_shared v0.10.0 Compiling bitflags v1.3.2 [1s] Compiling phf v0.8.0UTING [1s] Compiling dtoa v0.4.8 Compiling utf-8 v0.7.6 Compiling form_urlencoded v1.1.0 Compiling thiserror v1.0.381s] Compiling typenum v1.16.0 Compiling unicode-bidi v0.3.8 Compiling stable_deref_trait v1.2.0 Compiling matches v0.1.9 Compiling tendril v0.4.3 Compiling dtoa-short v0.3.3 Compiling itoa v0.4.8TING [1s] Compiling nodrop v0.1.14 Compiling fnv v1.0.7 Compiling fxhash v0.2.1 Compiling servo_arc v0.1.1[1s] Compiling parking_lot_core v0.9.5 Compiling getrandom v0.2.8 Compiling cssparser v0.27.21s] Compiling thin-slice v0.1.12s] Compiling jni-sys v0.3.0 Compiling alloc-no-stdlib v2.0.4 Compiling crossbeam-utils v0.8.14 Compiling aho-corasick v0.7.20 Compiling uuid v0.8.2 Compiling parking_lot v0.12.1 Compiling alloc-stdlib v0.2.2 Compiling lazy_static v1.4.0s] Compiling cty v0.2.2g Compiling regex-syntax v0.6.28 Compiling same-file v1.0.6[2s] Compiling brotli-decompressor v2.3.2 Compiling raw-window-handle v0.5.0 Compiling walkdir v2.3.2 Compiling cfb v0.6.1UTING [2s] <--- Compiling ndk-sys v0.3.0s] Compiling rand_core v0.6.4[2s] Compiling unicode-normalization v0.1.22 Compiling generic-array v0.14.6 Compiling num_enum v0.5.7 Compiling http v0.2.8TING [3s] Compiling selectors v0.22.0 <--- Compiling combine v4.6.6s] Compiling cesu8 v1.1.0ING [3s] Compiling ppv-lite86 v0.2.17 Compiling crossbeam-channel v0.5.6 Compiling phf v0.10.1TING [3s] Compiling rand_chacha v0.3.1s] Compiling idna v0.3.0TING [4s] Compiling block-buffer v0.10.3 Compiling crypto-common v0.1.6 Compiling brotli v3.3.4NG [4s] Compiling ndk v0.6.0g Compiling digest v0.10.6G [4s] Compiling infer v0.7.0 Compiling instant v0.1.12 Compiling adler v1.0.2ING [5s] Compiling glob v0.3.0TING [5s] Compiling cpufeatures v0.2.5 Compiling ndk-context v0.1.1s] Compiling regex v1.7.0 Compiling sha2 v0.10.6ING [5s] Compiling miniz_oxide v0.6.2 Compiling crc32fast v1.3.2 Compiling rand v0.8.5TING [5s] Compiling serde_json v1.0.91s] Compiling string_cache v0.8.4 Compiling url v2.3.1UTING [6s] Compiling markup5ever v0.10.1] Compiling serde_with v1.14.0 Compiling semver v1.0.16G [6s] Compiling uuid v1.2.2 Compiling bstr v0.2.17 Compiling pin-project-lite v0.2.9 Compiling http-range v0.1.56s] Compiling base64 v0.13.1 Compiling flate2 v1.0.25G [6s] Compiling globset v0.4.9G [7s] Compiling env_logger v0.7.17s] Compiling serde_urlencoded v0.7.1 Compiling slab v0.4.7TING [7s] Compiling futures-task v0.3.25 Compiling futures-core v0.3.25 Compiling filetime v0.2.19 Compiling dirs-sys-next v0.1.2 Compiling treediff v3.0.2 [7s] Compiling num_cpus v1.15.0 Compiling xattr v0.2.3ING [8s] Compiling thread_local v1.1.4] Compiling remove_dir_all v0.5.3 Compiling fastrand v1.8.0 [8s] Compiling html5ever v0.25.2 Compiling json-patch v0.2.78s] Compiling pin-utils v0.1.0 Compiling pathdiff v0.2.1 [8s] Compiling android_log-sys v0.2.0 Compiling futures-util v0.3.25 Compiling open v3.2.0TING [8s] Compiling tempfile v3.3.0 Compiling android_logger v0.9.2 Compiling ignore v0.4.18G [8s] Compiling tar v0.4.38 Compiling serialize-to-javascript v0.1.1 Compiling anyhow v1.0.68G [9s] Compiling tokio v1.23.0NG [9s] Compiling dirs-next v2.0.0 Compiling kuchiki v0.8.1G [9s] Compiling attohttpc v0.24.09s] Compiling encoding_rs v0.8.31 Compiling os_info v3.5.1G [9s] Compiling shared_child v1.0.0s] Compiling os_pipe v1.1.2G [10s] Compiling state v0.5.3ING [10s] Compiling tauri-utils v2.0.0-alpha.0 Compiling jni v0.20.0TING [11s] Compiling tauri-runtime v0.13.0-alpha.0 Compiling tao v0.15.8TING [14s] Compiling wry v0.23.4TING [15s] Compiling tauri-runtime-wry v0.13.0-alpha.0 Compiling tauri v2.0.0-alpha.2] Compiling tauri-mobile-app v0.0.0 (D:\RepoGit\tauri-mobile-app\src-tauri) Finished dev [unoptimized + debuginfo] target(s) in 22.27s Info symlinking lib "D:\RepoGit\tauri-mobile-app\src-tauri\target/i686-linux-android/debug/libtauri_mobile_app.so" in jniLibs dir "D:\RepoGit\tauri-mobile-app\src-tauri\gen/android\tauri-mobile-app\app/src/main/jniLibs/x86" Error The symlink source is D:\RepoGit\tauri-mobile-app\src-tauri\target/i686-linux-android/debug/libtauri_mobile_app.so, but nothing exists there
FAILURE: Build failed with an exception.
What went wrong: Execution failed for task ':app:rustBuildX86Debug'.
Process 'command 'C:\Program Files\nodejs\node.exe'' finished with non-zero exit value 1
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Get more help at https://help.gradle.org
BUILD FAILED in 23s error Command failed with exit code 4294967295. Error Failed to assemble APK: Command "D:\RepoGit\tauri-mobile-app\src-tauri\gen\android\tauri-mobile-app\gradlew.bat --project-dir D:\RepoGit\tauri-mobile-app\src-tauri\gen\android\tauri-mobile-app assembleX86Debug --warn" didn't complete successfully, exiting with code 1. error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
@Akarimichi Sounds like you're either missing this
[lib]
crate-type = ["staticlib", "cdylib", "rlib"]
in your Cargo.toml file, or maybe you didn't run tauri android init
yet. If it still doesn't work then please create a separate issue, this one is a bit too large (with too many subscribers) to triage specific issues/bugs.
Hello @FabianLars did you have an example of a repository of tauri setup for android, to try ? Because i already run tauri android init
before tauri android dev
on my project and this didn't giving me an issue :/
I found this repo as an alternative. They claim to have support for mobile devices (in alpha)
I found this repo as an alternative. They claim to have support for mobile devices (in alpha)
This doesn't help me because it's not tauri :/
Any example for android (in alpha)
Is there any examples for ios and android? I follow the tauri mobile guide but still failed to build a demo for ios.
I would like to know if tauri's webview will be optimized, or different from other webviews?
This is a tracking issue for our work toward making mobile available. The following is a citation from @tensor-programming in the wg-tech discussion we had a few days ago: