diff --git a/bindings/kotlin/crypto/crypto-android/build.gradle b/bindings/kotlin/crypto/crypto-android/build.gradle index 764a8bad0..543cd2a60 100644 --- a/bindings/kotlin/crypto/crypto-android/build.gradle +++ b/bindings/kotlin/crypto/crypto-android/build.gradle @@ -42,7 +42,7 @@ android { android.libraryVariants.all { variant -> def sourceSet = variant.sourceSets.find { it.name == variant.name } - sourceSet.java.srcDir new File(buildDir, "generated/source/uniffi/${variant.name}/java") + sourceSet.java.srcDir new File(buildDir, "generated/source/${variant.name}") } dependencies { diff --git a/bindings/kotlin/crypto/crypto-android/src/main/AndroidManifest.xml b/bindings/kotlin/crypto/crypto-android/src/main/AndroidManifest.xml index f88d90570..730df2c4c 100644 --- a/bindings/kotlin/crypto/crypto-android/src/main/AndroidManifest.xml +++ b/bindings/kotlin/crypto/crypto-android/src/main/AndroidManifest.xml @@ -1,4 +1,4 @@ - + diff --git a/bindings/kotlin/scripts/build_crypto.sh b/bindings/kotlin/scripts/build_crypto.sh new file mode 100755 index 000000000..59f9fc263 --- /dev/null +++ b/bindings/kotlin/scripts/build_crypto.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +set -eEu + +cd "$(dirname "$0")" +CURRENT_DIR=$(pwd) + +# FOR DEBUG +#RELEASE_FLAG="" +#RELEASE_TYPE_DIR="debug" +#RELEASE_AAR_NAME="crypto-android-debug" + +# FOR RELEASE +RELEASE_FLAG="--release" +RELEASE_TYPE_DIR="release" +RELEASE_AAR_NAME="crypto-android-release" + +SRC_ROOT=../../.. +# Path to the kotlin root project +KOTLIN_ROOT=.. + +BASE_TARGET_DIR="${SRC_ROOT}/target" +SDK_ROOT="${KOTLIN_ROOT}/crypto/crypto-android" +SDK_TARGET_DIR="${SDK_ROOT}/src/main/jniLibs" +BUILD_DIR="${SDK_ROOT}/build" +GENERATED_DIR="${BUILD_DIR}/generated/source/${RELEASE_TYPE_DIR}" +mkdir -p ${GENERATED_DIR} + +TARGET_CRATE=matrix-sdk-crypto-ffi + +AAR_DESTINATION=$1 + +# Build libs for all the different architectures + +echo -e "Building for x86_64-linux-android[1/5]" +cargo ndk --target x86_64-linux-android -o ${SDK_TARGET_DIR}/ build "${RELEASE_FLAG}" -p ${TARGET_CRATE} + +echo -e "Building for aarch64-linux-android[2/5]" +cargo ndk --target aarch64-linux-android -o ${SDK_TARGET_DIR}/ build "${RELEASE_FLAG}" -p ${TARGET_CRATE} + +echo -e "Building for armv7-linux-androideabi[3/5]" +cargo ndk --target armv7-linux-androideabi -o ${SDK_TARGET_DIR}/ build "${RELEASE_FLAG}" -p ${TARGET_CRATE} + +echo -e "Building for i686-linux-android[4/5]" +cargo ndk --target i686-linux-android -o ${SDK_TARGET_DIR}/ build "${RELEASE_FLAG}" -p ${TARGET_CRATE} + +# this one is used only for the uniffi-bindgen --lib-file parameter +# as it doesn't work with the generated .so file from cargo ndk +echo -e "Building for aarch64-apple-darwin[5/5]" +cargo build -p ${TARGET_CRATE} ${RELEASE_FLAG} --target "aarch64-apple-darwin" + +# Generate uniffi files +echo -e "Generate uniffi kotlin file" +uniffi-bindgen generate "${SRC_ROOT}/bindings/${TARGET_CRATE}/src/olm.udl" \ + --language kotlin \ + --config "${SRC_ROOT}/bindings/${TARGET_CRATE}/uniffi.toml" \ + --out-dir ${GENERATED_DIR} \ + --lib-file "${BASE_TARGET_DIR}/aarch64-apple-darwin/${RELEASE_TYPE_DIR}/libmatrix_sdk_crypto_ffi.a" + +# Create android library +cd "${KOTLIN_ROOT}" +./gradlew :crypto:crypto-android:assemble +cd "${CURRENT_DIR}" + +echo -e "Moving the generated aar file to ${AAR_DESTINATION}/matrix-rust-sdk-crypto.aar" +mv "${BUILD_DIR}/outputs/aar/${RELEASE_AAR_NAME}.aar" "${AAR_DESTINATION}/matrix-rust-sdk-crypto.aar" + +# Clean-up +echo -e "Cleaning up temporary files" + +rm -r "${BUILD_DIR}" +rm -r "${SDK_TARGET_DIR}" + diff --git a/bindings/kotlin/settings.gradle b/bindings/kotlin/settings.gradle index cb7d678db..f1f0f2279 100644 --- a/bindings/kotlin/settings.gradle +++ b/bindings/kotlin/settings.gradle @@ -23,6 +23,5 @@ dependencyResolutionManagement { rootProject.name = "MatrixKotlinRustSDK" include ':crypto:crypto-android' include ':crypto:crypto-jvm' -include ':crypto:crypto-jvm' include ':sdk:sdk-jvm' include ':sdk:sdk-android' diff --git a/bindings/matrix-sdk-crypto-ffi/uniffi.toml b/bindings/matrix-sdk-crypto-ffi/uniffi.toml index d23d255b5..dc1a5f31a 100644 --- a/bindings/matrix-sdk-crypto-ffi/uniffi.toml +++ b/bindings/matrix-sdk-crypto-ffi/uniffi.toml @@ -1,5 +1,5 @@ [bindings.kotlin] -package_name = "org.matrix.sdk.crypto" +package_name = "org.matrix.rustcomponents.sdk.crypto" [bindings.swift] module_name = "MatrixSDKCrypto"