Open NumesSanguis opened 5 months ago
Adding the following 2 lines to Rust-Cross-Platform-Development/rust-library/cryptor_jni/src/bin/publish.rs
:
crate_lib_file_path.push_str(MAIN_SEPARATOR_STR);
crate_lib_file_path.push_str("cryptor_jni");
To the function:
/// `$ rust-library/target/x86_64-linux-android/release/JNI_LIB_FILE_NAME`
///
fn crate_file_path_for_target(project_dir_path: &str, android_target: &str) -> String {
let mut crate_lib_file_path = project_dir_path.to_owned();
crate_lib_file_path.push_str(MAIN_SEPARATOR_STR);
crate_lib_file_path.push_str("cryptor_jni");
crate_lib_file_path.push_str(MAIN_SEPARATOR_STR);
crate_lib_file_path.push_str("target");
crate_lib_file_path.push_str(MAIN_SEPARATOR_STR);
crate_lib_file_path.push_str(&android_target);
crate_lib_file_path.push_str(MAIN_SEPARATOR_STR);
crate_lib_file_path.push_str("release");
crate_lib_file_path.push_str(MAIN_SEPARATOR_STR);
crate_lib_file_path.push_str(JNI_LIB_FILE_NAME);
crate_lib_file_path
}
Solved the issue for me and it was able to execute successfully.
Hardcoding "cryptor_jni" might not be the correct approach to solve it properly though?
It might have been a problem on my side. I added the following lines (to have Rust stop complaining):
[workspace]
resolver = "2"
to Cargo.toml
located in rust-library/cryptor_jni
, instead of the Cargo.toml
located in the top folder rust-library
.
I think changing this resulted in the correct rust-library/target
folder having the binaries instead of rust-library/cryptor_jni/target
Issue
Following your blog post at: Rust cross-platform... The Android part..., I run into the issue that
cargo run --bin publish
gives the errorError copying library file
. The full output that that command gives:This error message comes from line 150 in publish.rs.
Probable cause
It seems that
cryptor_jni
is missing from the path used inpublish
.The output paths:
cargo run --bin release
path:Rust-Cross-Platform-Development/rust-library/cryptor_jni/target/armv7-linux-androideabi/release/libcryptor_jni.so
cargo run --bin publish
path:Rust-Cross-Platform-Development/rust-library/target/armv7-linux-androideabi/release/libcryptor_jni.so
I executed the release and publish commands from:
Rust-Cross-Platform-Development/rust-library/cryptor_jni
Release from rust-library
If I run the command
rust-library$ cargo run --bin release
(instead of inrust-library/cryptor_jni
), it throws the error:Debugging
I modified that Err line to output
crate_lib_file_path
andandroid_lib_file_path
:Which gives me:
Comparing this to the output from
cargo run --bin release
: