Skip to content

Commit 346ef71

Browse files
fix(kotlin): Separate library for Kotlin Android (#341)
* test * test * test * test * test * disable lint * test * fix java version * fix paths * jna aar
1 parent 0ab6888 commit 346ef71

File tree

16 files changed

+697
-82
lines changed

16 files changed

+697
-82
lines changed

.github/workflows/kotlin/kotlin-linux/action.yml

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ runs:
77
with:
88
name: config.txt
99

10+
- name: Set up JDK 17
11+
uses: actions/setup-java@v3
12+
with:
13+
distribution: 'temurin'
14+
java-version: '17'
15+
1016
- name: Read Version and Set Gradle Property
1117
shell: bash
1218
id: setup
@@ -25,7 +31,7 @@ runs:
2531
shell: bash
2632
run: |
2733
sudo apt-get update
28-
sudo apt-get install nuget gcc-multilib software-properties-common
34+
sudo apt-get install unzip openjdk-17-jdk-headless make gcc-multilib software-properties-common
2935
sudo apt-get install -y gcc-aarch64-linux-gnu
3036
3137
- name: Install rust
@@ -58,7 +64,7 @@ runs:
5864
ANDROID_ROOT="/usr/local/lib/android"
5965
ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk"
6066
SDKMANAGER="${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager"
61-
echo "y" | $SDKMANAGER "ndk;27.2.12479018"
67+
echo "y" | sudo $SDKMANAGER "ndk;27.2.12479018" "build-tools;35.0.0" "platforms;android-34" "platform-tools"
6268
6369
export ANDROID_NDK=$ANDROID_SDK_ROOT/ndk-bundle
6470
@@ -76,9 +82,20 @@ runs:
7682
ar = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar\"
7783
linker = \"$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang\"" >> ./.cargo/config.toml
7884
79-
- name: Build
85+
- name: Build Linux
8086
shell: bash
8187
working-directory: ./wrappers/kotlin
88+
run: |
89+
make linux
90+
91+
chmod +x gradlew
92+
./gradlew test
93+
./gradlew build
94+
./gradlew generatePomFileForMavenPublication
95+
96+
- name: Build Android
97+
shell: bash
98+
working-directory: ./wrappers/kotlin-android
8299
run: |
83100
export ANDROID_ROOT="/usr/local/lib/android"
84101
export ANDROID_SDK_ROOT="${ANDROID_ROOT}/sdk"
@@ -96,21 +113,29 @@ runs:
96113
export AR_x86_64_linux_android="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar"
97114
98115
make android
99-
make linux
100116
101117
chmod +x gradlew
102118
./gradlew test
103119
./gradlew build
104120
./gradlew generatePomFileForMavenPublication
105121
106122
- name: Set version in pom file
107-
run: sed -i '0,/<version>.*<\/version>/ s//<version>'"${{ steps.setup.outputs.version }}"'<\/version>/' 'lib/build/publications/maven/pom-default.xml'
108123
shell: bash
109-
working-directory: ./wrappers/kotlin
124+
working-directory: ./wrappers/
125+
run: |
126+
sed -i '0,/<version>.*<\/version>/ s//<version>'"${{ steps.setup.outputs.version }}"'<\/version>/' 'kotlin/lib/build/publications/maven/pom-default.xml'
127+
sed -i '0,/<version>.*<\/version>/ s//<version>'"${{ steps.setup.outputs.version }}"'<\/version>/' 'kotlin-android/lib/build/publications/mavenAndroid/pom-default.xml'
110128
111-
- name: Upload Kotlin package
129+
130+
- name: Upload Kotlin JVM package
112131
uses: actions/[email protected]
113132
with:
114-
name: kotlin
133+
name: kotlin-jvm
115134
path: ./wrappers/kotlin/lib/build
116135

136+
- name: Upload Kotlin Android package
137+
uses: actions/[email protected]
138+
with:
139+
name: kotlin-android
140+
path: ./wrappers/kotlin-android/lib/build
141+

.github/workflows/release-others.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ jobs:
7676
7z x python-wheels-windows.zip -o./devolutions-crypto-wheels
7777
7878
7z x wasm.zip -o./devolutions-crypto-npm
79-
7z x kotlin.zip -o./devolutions-crypto-maven
79+
7z x kotlin-jvm.zip -o./devolutions-crypto-maven-jvm
80+
7z x kotlin-android.zip -o./devolutions-crypto-maven-android
8081
7z x swift.zip -o./devolutions-crypto-swift
8182
7z x config.txt.zip
8283
@@ -142,8 +143,11 @@ jobs:
142143
run: |
143144
pip install --upgrade cloudsmith-cli
144145
145-
cloudsmith push maven devolutions/maven-public devolutions-crypto-maven/libs/lib.jar \
146+
cloudsmith push maven devolutions/maven-public devolutions-crypto-maven-jvm/libs/lib.jar \
146147
--pom-file=devolutions-crypto-maven/publications/maven/pom-default.xml \
148+
149+
cloudsmith push maven devolutions/maven-public devolutions-crypto-maven-android/outputs/aar/lib-release.aar \
150+
--pom-file=devolutions-crypto-maven-android/publications/mavenAndroid/pom-default.xml \
147151
env:
148152
CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }}
149153

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#
2+
# https://help.github.com/articles/dealing-with-line-endings/
3+
#
4+
# Linux start script should use lf
5+
/gradlew text eol=lf
6+
7+
# These are Windows script files and should use crlf
8+
*.bat text eol=crlf
9+
10+
# Binary files should be left untouched
11+
*.jar binary
12+

wrappers/kotlin-android/.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Ignore Gradle project-specific cache directory
2+
.gradle
3+
4+
# Ignore Gradle build output directory
5+
build
6+
7+
lib/src/main/resources/*
8+
extracted_aar
9+
jna.aar

wrappers/kotlin-android/Makefile

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Default target
2+
.PHONY: all
3+
all: help
4+
5+
# Platform-specific build targets
6+
.PHONY: android
7+
8+
android:
9+
cargo build --release --target aarch64-linux-android -p devolutions-crypto-uniffi
10+
cargo build --release --target armv7-linux-androideabi -p devolutions-crypto-uniffi
11+
cargo build --release --target i686-linux-android -p devolutions-crypto-uniffi
12+
cargo build --release --target x86_64-linux-android -p devolutions-crypto-uniffi
13+
14+
cargo build --release -p uniffi-bindgen
15+
cargo run --release -p uniffi-bindgen -- generate --library ../../target/aarch64-linux-android/release/libdevolutions_crypto_uniffi.so --language kotlin -o ./lib/src/main/kotlin/
16+
17+
mkdir -p ./lib/src/main/jniLibs/arm64-v8a/
18+
mkdir -p ./lib/src/main/jniLibs/armeabi-v7a/
19+
mkdir -p ./lib/src/main/jniLibs/x86/
20+
mkdir -p ./lib/src/main/jniLibs/x86_64/
21+
22+
cp ../../target/aarch64-linux-android/release/libdevolutions_crypto_uniffi.so ./lib/src/main/jniLibs/arm64-v8a/libdevolutions_crypto_uniffi.so
23+
cp ../../target/armv7-linux-androideabi/release/libdevolutions_crypto_uniffi.so ./lib/src/main/jniLibs/armeabi-v7a/libdevolutions_crypto_uniffi.so
24+
cp ../../target/i686-linux-android/release/libdevolutions_crypto_uniffi.so ./lib/src/main/jniLibs/x86/libdevolutions_crypto_uniffi.so
25+
cp ../../target/x86_64-linux-android/release/libdevolutions_crypto_uniffi.so ./lib/src/main/jniLibs/x86_64/libdevolutions_crypto_uniffi.so
26+
27+
28+
# Clean targets for each platform
29+
.PHONY: clean
30+
31+
clean:
32+
rm -rf ./lib/src/main/jniLibs/
33+
34+
# Help target
35+
.PHONY: help
36+
help:
37+
@echo "Makefile Usage:"
38+
@echo " make android - Build for Android"
39+
@echo " make clean - Clean all builds"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
chmod +x gradlew
2+
./gradlew build
3+
./gradlew generatePomFileForMavenPublication
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# This file was generated by the Gradle 'init' task.
2+
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format
3+
4+
[versions]
5+
commons-math3 = "3.6.1"
6+
guava = "33.2.1-jre"
7+
junit-jupiter-engine = "5.10.3"
8+
jna = "5.12.0"
9+
10+
[libraries]
11+
commons-math3 = { module = "org.apache.commons:commons-math3", version.ref = "commons-math3" }
12+
guava = { module = "com.google.guava:guava", version.ref = "guava" }
13+
junit-jupiter-engine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = "junit-jupiter-engine" }
14+
jna = { module = "net.java.dev.jna:jna", version.ref = "jna" }
15+
16+
[plugins]
17+
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version = "2.0.0" }
42.6 KB
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
6+
zipStoreBase=GRADLE_USER_HOME
7+
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)