(mut stream: TcpStream, root: &Path)
| 1232 | status.code() |
| 1233 | )); |
| 1234 | } |
| 1235 | Ok(()) |
| 1236 | } |
| 1237 | |
| 1238 | fn ensure_cargo_apk_installed() -> Result<(), String> { |
| 1239 | let status = Command::new("cargo").arg("apk").arg("--help").status(); |
| 1240 | if status.as_ref().is_ok_and(|status| status.success()) { |
| 1241 | return Ok(()); |
| 1242 | } |
| 1243 | |
| 1244 | log_note("Installing cargo-apk"); |
| 1245 | let install_status = Command::new("cargo") |
| 1246 | .arg("install") |
| 1247 | .arg("cargo-apk") |
| 1248 | .arg("--locked") |
| 1249 | .status() |
| 1250 | .map_err(|err| format!("failed to run `cargo install cargo-apk --locked`: {err}"))?; |
| 1251 | if !install_status.success() { |
| 1252 | return Err(format!( |
| 1253 | "`cargo install cargo-apk --locked` failed with exit code {:?}", |
| 1254 | install_status.code() |
| 1255 | )); |
| 1256 | } |
| 1257 | Ok(()) |
| 1258 | } |
| 1259 | |
| 1260 | fn run_android_project( |
| 1261 | project_dir: &Path, |
| 1262 | android: &AndroidToolchain, |
| 1263 | release: bool, |
| 1264 | ) -> Result<(), String> { |
| 1265 | let project_crate = project_dir.join(".perro").join("project"); |
| 1266 | let target_dir = project_dir.join("target"); |
| 1267 | let mut cmd = Command::new("cargo"); |
| 1268 | cmd.arg("apk") |
| 1269 | .arg("run") |
| 1270 | .arg("--lib") |
| 1271 | .arg("--target") |
| 1272 | .arg("aarch64-linux-android") |
| 1273 | .env("CARGO_TARGET_DIR", &target_dir) |
| 1274 | .env("ANDROID_SDK_ROOT", &android.sdk_root) |
| 1275 | .env("ANDROID_HOME", &android.sdk_root) |
| 1276 | .env("ANDROID_NDK_ROOT", &android.ndk_root) |
| 1277 | .env("ANDROID_NDK_HOME", &android.ndk_root) |
| 1278 | .env("NDK_HOME", &android.ndk_root) |
no test coverage detected