[bug] V2 pnpm tauri android dev just hands and does nothing - Ubuntu 24.4.0
Xenoha opened this issue · 12 comments
Describe the bug
pnpm Tauri android dev just hangs with no output or action. --verbose doesn't assist.
Reproduction
pnpm create tauri-app --rc
cd tauri-app
pnpm i
pnpm tauri android init
pnpm tauri dev -- builds and launches
pnpm tauri android dev: hangs
pnpm tauri android dev --open: opens android studio and will run the app after I open the emulator
Expected behavior
I would expect something to start compiling and then for the emulator to launch
Full tauri info
output
[✔] Environment
- OS: Ubuntu 24.4.0 x86_64 (X64)
✔ webkit2gtk-4.1: 2.44.3
✔ rsvg2: 2.58.0
✔ rustc: 1.81.0 (eeb90cda1 2024-09-04)
✔ cargo: 1.81.0 (2dbb1af80 2024-08-20)
✔ rustup: 1.27.1 (54dd3d00f 2024-04-24)
✔ Rust toolchain: stable-x86_64-unknown-linux-gnu (default)
- node: 22.8.0
- pnpm: 9.11.0
- npm: 10.8.2
[-] Packages
- tauri 🦀: 2.0.0-rc.15
- tauri-build 🦀: 2.0.0-rc.12
- wry 🦀: 0.43.1
- tao 🦀: 0.30.2
- @tauri-apps/api : 2.0.0-rc.5
- @tauri-apps/cli : 2.0.0-rc.16
[-] Plugins
- tauri-plugin-shell 🦀: 2.0.0-rc.3
- @tauri-apps/plugin-shell : 2.0.0-rc.1
[-] App
- build-type: bundle
- CSP: unset
- frontendDist: ../dist
- devUrl: http://localhost:1420/
- framework: Vue.js
- bundler: Vite
Stack trace
No response
Additional context
.zshrc exports
export JAVA_HOME=/snap/android-studio/current/jbr
export ANDROID_HOME="$HOME/Android/Sdk"
export NDK_HOME="$ANDROID_HOME/ndk/$(ls -1 $ANDROID_HOME/ndk)"
Android studio:
CompileCommand: exclude com/intellij/openapi/vfs/impl/FilePartNodeRoot.trieDescend bool exclude = true
Android Studio Koala | 2024.1.1
Build #AI-241.15989.150.2411.11948838
Note that 'pnpm tauri android dev --open' starts compiling and then opens android studio.
Confirm for both bun run tauri android dev
and npm run tauri android dev
. It only works with cargo tauri android dev
. My hinge would be that PackageManager::from_project
in npm.rs file was not called in tauri-cli/src/mobile/android/dev.rs
file.
But I just cloned down the repo so not really surprise if this call is extracted out somewhere else.
cargo tauri info
output
[✔] Environment
- OS: Ubuntu 24.4.0 x86_64 (X64)
✔ webkit2gtk-4.1: 2.44.3
✔ rsvg2: 2.58.0
✔ rustc: 1.81.0 (eeb90cda1 2024-09-04)
✔ cargo: 1.81.0 (2dbb1af80 2024-08-20)
✔ rustup: 1.27.1 (54dd3d00f 2024-04-24)
✔ Rust toolchain: stable-x86_64-unknown-linux-gnu (environment override by RUSTUP_TOOLCHAIN)
- node: 20.11.1
- npm: 10.8.2
- bun: 1.0.33
[-] Packages
- tauri 🦀: 2.0.0-rc.15
- tauri-build 🦀: 2.0.0-rc.12
- wry 🦀: 0.43.1
- tao 🦀: 0.30.2
- tauri-cli 🦀: 2.0.0-rc.16
- @tauri-apps/api : 2.0.0-rc.5
- @tauri-apps/cli : 2.0.0-rc.16
[-] Plugins
- tauri-plugin-shell 🦀: 2.0.0-rc.3
- @tauri-apps/plugin-shell : 2.0.0-rc.1
[-] App
- build-type: bundle
- CSP: unset
- frontendDist: ../build
- devUrl: http://localhost:1420/
- framework: Svelte
- bundler: Vite
Just an update. I tried to install the tauri-cli in cargo and it failed to compile with the below errors. This might help you understand further what is going on.
Compiling java-properties v2.0.0
Compiling which v6.0.3
Compiling jsonrpsee-server v0.24.4
error[E0432]: unresolved import tower::util
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jsonrpsee-server-0.24.4/src/utils.rs:37:12
|
37 | use tower::util::Oneshot;
| ^^^^ could not find util
in tower
|
note: found an item that was configured out
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-0.4.13/src/lib.rs:215:9
|
215 | pub mod util;
| ^^^^
note: the item is gated behind the util
feature
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-0.4.13/src/lib.rs:213:7
|
213 | #[cfg(feature = "util")]
| ^^^^^^^^^^^^^^^^
error[E0432]: unresolved import tower::ServiceExt
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jsonrpsee-server-0.24.4/src/utils.rs:38:5
|
38 | use tower::ServiceExt;
| ^^^^^^^----------
| | |
| | help: a similar name exists in the module: Service
| no ServiceExt
in the root
|
note: found an item that was configured out
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-0.4.13/src/lib.rs:223:34
|
223 | pub use self::util::{service_fn, ServiceExt};
| ^^^^^^^^^^
note: the item is gated behind the util
feature
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tower-0.4.13/src/lib.rs:220:7
|
220 | #[cfg(feature = "util")]
| ^^^^^^^^^^^^^^^^
Compiling notify v6.1.1
error[E0599]: the method graceful_shutdown
exists for struct Pin<&mut UpgradeableConnection<'_, ..., ..., ...>>
, but its trait bounds were not satisfied
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jsonrpsee-server-0.24.4/src/server.rs:1233:19
|
1233 | conn.as_mut().graceful_shutdown();
| ^^^^^^^^^^^^^^^^^ method cannot be called on Pin<&mut UpgradeableConnection<'_, ..., ..., ...>>
due to unsatisfied trait bounds
|
::: /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/hyper-util-0.1.9/src/rt/tokio.rs:16:1
|
16 | pub struct TokioExecutor {}
| ------------------------ doesn't satisfy _: HttpServerConnExec<TowerToHyperServiceFuture<<HttpMiddleware as Layer<TowerServiceNoHttp<RpcMiddleware>>>::Service, Request<Body>>, Body>
|
= note: the full type name has been written to '/tmp/cargo-installlrudBG/release/deps/jsonrpsee_server-d2a922bd19a60316.long-type-8540593724089480555.txt'
= note: consider using --verbose
to print the full type name to the console
= note: the following trait bounds were not satisfied:
{type error}: Sized
which is required by TokioExecutor: HttpServerConnExec<utils::TowerToHyperServiceFuture<<HttpMiddleware as Layer<TowerServiceNoHttp<RpcMiddleware>>>::Service, hyper::Request<jsonrpsee_core::http_helpers::Body>>, Body>
error[E0599]: no method named oneshot
found for type parameter S
in the current scope
--> /home/xenoha/.cargo/registry/src/index.crates.io-6f17d22bba15001f/jsonrpsee-server-0.24.4/src/utils.rs:61:60
|
51 | impl hyper::service::Service<HttpRequesthyper::body::Incoming> for TowerToH...
| - method oneshot
not found for this type parameter
...
61 | TowerToHyperServiceFuture { future: self.service.clone().oneshot(req) }
| ^^^^^^^ method not found in S
Some errors have detailed explanations: E0432, E0599.
For more information about an error, try rustc --explain E0432
.
error: could not compile jsonrpsee-server
(lib) due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
error: failed to compile tauri-cli v2.0.0-rc.16
, intermediate artifacts can be found at /tmp/cargo-installlrudBG
.
To reuse those artifacts with a future compilation, set the environment variable CARGO_TARGET_DIR
to that path.
Confirm that they are two different errors. And actually this one has a huge impact on the installation of tauri-cli
crate, at least in the last 3 versions that I tried (rc.13 -> rc.16). From the error messages, this is likely coming from tower
crate that are being used in the jsonrpsee-server
crate. Surprisingly that I haven't seen any issues from both repo about the above errors.
Can @FabianLars double check about this and correct me if I'm wrong pls?
To install the cli you currently need to use the --locked flag
cargo install tauri-cli --version "^2.0.0-rc" --locked
On first glance I don't see why this started to happen ~yesterday - got one or two reports on discord as well. I don't think it's that important to figure out though as the --locked
flag is always recommended for cargo install
commands (if you saw commands without the flag in our docs, please tell me, i've been searching for it earlier today after seeing that nobody uses it)
Edit: Oh lol, it's in the setup instructions, i'll update that. If you see it anywhere else though, please reach out.
I didn't need to use this the first time I installed the rc version, weird. And also I use the cmd from the crates.io page, so it's good if that got updated as well.
I didn't need to use this the first time I installed the rc version, weird
Yeah, the issue should be that there were some dependency updates after that that weren't fully semver compliant. So back then the --locked flag wasn't needed but now it's required to make sure all the dependency versions match the ones in the lockfile == the versions when we released an update
And also I use the cmd from the crates.io page, so it's good if that got updated as well.
do you have a link? i don't see what you mean.
https://v2.tauri.app/start/create-project/
Is the link that describes the create project for V2. The only place it documents installing the tauri-cli is when you are doing manual install where it doesn't have the --locked flag. Does the cargo command for create-tauri-app install the cli? Will it need the locked flag?
yeah i pushed an update shortly after i wrote the above comment but the build pipeline failed :/
Does the cargo command for create-tauri-app install the cli?
Only if you selected a npm/js frontend framework. It does not install the cargo cli. The npm cli does not need the locked flag