mirror of
https://gitlab.com/veilid/veilid.git
synced 2024-10-01 01:26:08 -04:00
Merge branch 'fix-x86-64-android-sim' into 'main'
Fix android build for x86_64 Closes veilidchat#22 See merge request veilid/veilid!285
This commit is contained in:
commit
02a9e7f4e5
@ -33,16 +33,8 @@ while true; do
|
||||
# ensure Android SDK packages are installed
|
||||
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager build-tools\;34.0.0 ndk\;26.3.11579264 cmake\;3.22.1 platform-tools platforms\;android-34
|
||||
|
||||
# ensure ANDROID_NDK_HOME is defined and exists
|
||||
ANDROID_NDK_HOME="$ANDROID_HOME/ndk/26.3.11579264"
|
||||
if [ -d "$ANDROID_NDK_HOME" ]; then
|
||||
echo '[X] Android NDK is defined and exists'
|
||||
else
|
||||
echo 'Android NDK is not defined or does not exist'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ensure ndk is installed
|
||||
ANDROID_NDK_HOME="$ANDROID_HOME/ndk/26.3.11579264"
|
||||
if [ -f "$ANDROID_NDK_HOME/ndk-build" ]; then
|
||||
echo '[X] Android NDK is installed at the location $ANDROID_NDK_HOME'
|
||||
else
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
UNAME_M=`uname -m`
|
||||
UNAME_M=${1-$(uname -m)}
|
||||
if [[ "$UNAME_M" == "arm64" ]]; then
|
||||
ANDROID_ABI=arm64-v8a
|
||||
elif [[ "$UNAME_M" == "x86_64" ]]; then
|
||||
@ -14,16 +14,13 @@ AVD_TAG="google_atd"
|
||||
AVD_IMAGE="system-images;android-30;$AVD_TAG;$ANDROID_ABI"
|
||||
AVD_DEVICE="Nexus 10"
|
||||
|
||||
SDKMANAGER=$ANDROID_HOME/tools/bin/sdkmanager
|
||||
AVDMANAGER=$ANDROID_HOME/tools/bin/avdmanager
|
||||
SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager
|
||||
AVDMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/avdmanager
|
||||
if ! command -v $SDKMANAGER; then
|
||||
SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager
|
||||
AVDMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/avdmanager
|
||||
if ! command -v $SDKMANAGER; then
|
||||
echo "Can't find 'sdkmanager' in the usual places."
|
||||
exit
|
||||
fi
|
||||
echo "Can't find 'sdkmanager' in the usual places."
|
||||
exit
|
||||
fi
|
||||
|
||||
EMULATOR=$ANDROID_HOME/emulator/emulator
|
||||
if ! command -v $EMULATOR; then
|
||||
echo "Can't find 'emulator' in the usual places."
|
||||
|
@ -1,9 +1,10 @@
|
||||
use glob::glob;
|
||||
use sha2::{Digest, Sha256};
|
||||
use std::fs::OpenOptions;
|
||||
use std::io::BufRead;
|
||||
use std::io::Write;
|
||||
use std::{
|
||||
io,
|
||||
env, io,
|
||||
path::Path,
|
||||
process::{Command, Stdio},
|
||||
};
|
||||
@ -167,6 +168,28 @@ fn do_capnp_build() {
|
||||
append_hash_and_desired_capnp_version_hash("proto/veilid.capnp", "proto/veilid_capnp.rs");
|
||||
}
|
||||
|
||||
// Fix for missing __extenddftf2 on Android x86_64 Emulator
|
||||
fn fix_android_emulator() {
|
||||
let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
|
||||
let target_arch = env::var("CARGO_CFG_TARGET_ARCH").unwrap();
|
||||
if target_arch == "x86_64" && target_os == "android" {
|
||||
let missing_library = "clang_rt.builtins-x86_64-android";
|
||||
let android_home = env::var("ANDROID_HOME")
|
||||
.or(env::var("ANDROID_SDK_ROOT"))
|
||||
.expect("ANDROID_HOME or ANDROID_SDK_ROOT not set");
|
||||
let lib_path = glob(&format!(
|
||||
"{android_home}/ndk/26.3.11579264/**/lib{missing_library}.a"
|
||||
))
|
||||
.expect("failed to glob")
|
||||
.next()
|
||||
.expect("Need libclang_rt.builtins-x86_64-android.a")
|
||||
.unwrap();
|
||||
let lib_dir = lib_path.parent().unwrap();
|
||||
println!("cargo:rustc-link-search={}", lib_dir.display());
|
||||
println!("cargo:rustc-link-lib=static={missing_library}");
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
if std::env::var("DOCS_RS").is_ok()
|
||||
|| std::env::var("CARGO_CFG_DOC").is_ok()
|
||||
@ -179,4 +202,6 @@ fn main() {
|
||||
println!("cargo:warning=rebuilding proto/veilid_capnp.rs because it has changed from the last generation of proto/veilid.capnp");
|
||||
do_capnp_build();
|
||||
}
|
||||
|
||||
fix_android_emulator();
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.3.1'
|
||||
classpath 'com.android.tools.build:gradle:7.4.2'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
Loading…
Reference in New Issue
Block a user