| 1169 | ))) |
| 1170 | .with_android_ndk_root(Some(leak_string( |
| 1171 | android.ndk_root.to_string_lossy().to_string(), |
| 1172 | ))), |
| 1173 | ) |
| 1174 | .map_err(|err| { |
| 1175 | format!( |
| 1176 | "android dev pipeline failed for {}: {err}", |
| 1177 | project_dir.display() |
| 1178 | ) |
| 1179 | })?; |
| 1180 | log_done("Android Dev Bundle Built"); |
| 1181 | |
| 1182 | log_note("Running Android App"); |
| 1183 | run_android_project(&project_dir, &android, release) |
| 1184 | } |
| 1185 | |
| 1186 | fn leak_string(value: String) -> &'static str { |
| 1187 | Box::leak(value.into_boxed_str()) |
| 1188 | } |
| 1189 | |
| 1190 | struct AndroidToolchain { |
| 1191 | sdk_root: PathBuf, |
| 1192 | ndk_root: PathBuf, |
| 1193 | } |
| 1194 | |
| 1195 | fn prepare_android_toolchain() -> Result<AndroidToolchain, String> { |
| 1196 | ensure_rust_target_installed("aarch64-linux-android")?; |
| 1197 | ensure_cargo_apk_installed()?; |
| 1198 | let sdk_root = find_android_sdk_root().ok_or_else(android_sdk_missing_error)?; |