Skip to content

Commit

Permalink
fix mobile build (#998)
Browse files Browse the repository at this point in the history
  • Loading branch information
shaorongqiang authored Jul 31, 2023
1 parent a30d382 commit 0c89713
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 15 deletions.
14 changes: 7 additions & 7 deletions container/Dockerfile-wallet_mobile-lib_android
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM rust:1.66.0-slim
FROM rust:1.70.0-slim

RUN apt update -y && apt upgrade -y && apt install -y unzip wget make pkg-config
RUN wget -nc -P /opt/ https://www.openssl.org/source/openssl-1.1.1s.tar.gz
Expand All @@ -7,18 +7,18 @@ RUN wget -nc -P /opt/ https://dl.google.com/android/repository/android-ndk-r25c-
ENV PATH="/opt/android-ndk-r25c/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH"

ENV ANDROID_NDK_HOME /opt/android-ndk-r25c/
RUN tar -xvf /opt/openssl-1.1.1s.tar.gz -C /opt
WORKDIR /opt/openssl-1.1.1s
RUN mkdir -p /opt/aarch64/ && tar -xvf /opt/openssl-1.1.1s.tar.gz -C /opt/aarch64
WORKDIR /opt/aarch64/openssl-1.1.1s
RUN ./Configure android-arm64 --prefix=/opt/aarch64-linux/ssl
RUN make -j `nproc` && make install

RUN rm -rvf /opt/openssl-1.1.1s && tar -xvf /opt/openssl-1.1.1s.tar.gz -C /opt
WORKDIR /opt/openssl-1.1.1s
RUN mkdir -p /opt/armv7a/ && tar -xvf /opt/openssl-1.1.1s.tar.gz -C /opt/armv7a
WORKDIR /opt/armv7a/openssl-1.1.1s
RUN ./Configure android-arm --prefix=/opt/armv7a-linux/ssl
RUN make -j `nproc` && make install

RUN rm -rvf /opt/openssl-1.1.1s && tar -xvf /opt/openssl-1.1.1s.tar.gz -C /opt
WORKDIR /opt/openssl-1.1.1s
RUN mkdir -p /opt/x86_64/ && tar -xvf /opt/openssl-1.1.1s.tar.gz -C /opt/x86_64
WORKDIR /opt/x86_64/openssl-1.1.1s
RUN ./Configure android-x86_64 --prefix=/opt/x86_64-linux/ssl
RUN make -j `nproc` && make install

Expand Down
20 changes: 17 additions & 3 deletions src/components/wallet_mobile/src/android/tx_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,14 +273,21 @@ pub unsafe extern "system" fn Java_com_findora_JniApi_transactionBuilderAddOpera
/// # Safety
///
pub unsafe extern "system" fn Java_com_findora_JniApi_transactionBuilderAddOperationClaim(
_env: JNIEnv,
env: JNIEnv,
_: JClass,
builder: jlong,
td_addr: JString,
keypair: jlong,
) -> jlong {
let builder = &*(builder as *mut TransactionBuilder);
let td_addr: String = env
.get_string(td_addr)
.expect("Couldn't get java string!")
.into();
let addr = td_addr.strip_prefix("0x").unwrap_or(&td_addr);
let td_address = hex::decode(addr) .expect("addr format error!");
let keypair = &*(keypair as *mut XfrKeyPair);
let builder = builder.clone().add_operation_claim(keypair).unwrap();
let builder = builder.clone().add_operation_claim(td_address,keypair).unwrap();
Box::into_raw(Box::new(builder)) as jlong
}

Expand All @@ -291,14 +298,21 @@ pub unsafe extern "system" fn Java_com_findora_JniApi_transactionBuilderAddOpera
env: JNIEnv,
_: JClass,
builder: jlong,
td_addr: JString,
keypair: jlong,
am: JString,
) -> jlong {
let builder = &*(builder as *mut TransactionBuilder);
let keypair = &*(keypair as *mut XfrKeyPair);
let td_addr: String = env
.get_string(td_addr)
.expect("Couldn't get java string!")
.into();
let addr = td_addr.strip_prefix("0x").unwrap_or(&td_addr);
let td_address = hex::decode(addr) .expect("addr format error!");
let builder = builder
.clone()
.add_operation_claim_custom(keypair, parseU64(env, am))
.add_operation_claim_custom(td_address,keypair, parseU64(env, am))
.unwrap();
Box::into_raw(Box::new(builder)) as jlong
}
Expand Down
4 changes: 2 additions & 2 deletions src/components/wallet_mobile/src/ios/free.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pub unsafe extern "C" fn findora_ffi_xfr_public_key_free(ptr: *mut types::XfrPub
if ptr.is_null() {
return;
}
Box::from_raw(ptr);
let _ = Box::from_raw(ptr);
}

#[no_mangle]
Expand All @@ -18,5 +18,5 @@ pub unsafe extern "C" fn findora_ffi_fee_inputs_free(ptr: *mut FeeInputs) {
if ptr.is_null() {
return;
}
Box::from_raw(ptr);
let _ = Box::from_raw(ptr);
}
2 changes: 1 addition & 1 deletion src/components/wallet_mobile/src/ios/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ extern "C" fn findora_ffi_free_buffer(buf: ByteBuffer) {
let s = unsafe { std::slice::from_raw_parts_mut(buf.data, len) };
let s = s.as_mut_ptr();
unsafe {
Box::from_raw(s);
let _ = Box::from_raw(s);
}
}

Expand Down
12 changes: 10 additions & 2 deletions src/components/wallet_mobile/src/ios/tx_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -213,9 +213,13 @@ pub extern "C" fn findora_ffi_transaction_builder_add_operation_undelegate_parti
#[no_mangle]
pub extern "C" fn findora_ffi_transaction_builder_add_operation_claim(
builder: &TransactionBuilder,
td_addr: *const c_char,
keypair: &XfrKeyPair,
) -> *mut TransactionBuilder {
if let Ok(info) = builder.clone().add_operation_claim(keypair) {
let td_addr = c_char_to_string(td_addr);
let addr = td_addr.strip_prefix("0x").unwrap_or(&td_addr);
let td_address = hex::decode(addr).expect("addr format error!");
if let Ok(info) = builder.clone().add_operation_claim(td_address,keypair) {
Box::into_raw(Box::new(info))
} else {
std::ptr::null_mut()
Expand All @@ -225,11 +229,15 @@ pub extern "C" fn findora_ffi_transaction_builder_add_operation_claim(
#[no_mangle]
pub extern "C" fn findora_ffi_transaction_builder_add_operation_claim_custom(
builder: &TransactionBuilder,
td_addr: *const c_char,
keypair: &XfrKeyPair,
am: *const c_char,
) -> *mut TransactionBuilder {
let am = parse_u64(am);
if let Ok(info) = builder.clone().add_operation_claim_custom(keypair, am) {
let td_addr = c_char_to_string(td_addr);
let addr = td_addr.strip_prefix("0x").unwrap_or(&td_addr);
let td_address = hex::decode(addr).expect("addr format error!");
if let Ok(info) = builder.clone().add_operation_claim_custom(td_address,keypair, am) {
Box::into_raw(Box::new(info))
} else {
std::ptr::null_mut()
Expand Down

0 comments on commit 0c89713

Please sign in to comment.