프로그래밍과 잡담

[Rust] 안드로이드용 Rust 라이브러리 빌드를 위한 셋팅 본문

프로그래밍/Rust

[Rust] 안드로이드용 Rust 라이브러리 빌드를 위한 셋팅

크레온 2020. 7. 5. 19:01

1. 사전 준비 작업

  1. 안드로이드 SDK 설치
  2. 안드로이드 NDK 설치 ( sdk 열어서  SDK_Tools 탭에 가면 ndk 설치하면 된다. )
  3. Rust 설치

 

2. 빌드 셋팅

  config 파일을 만들어서 에디터로 연다. 그리고 아래와 같이 셋팅

NDK 경로는 toolchains 라는 폴더가 있는 위치를 넣으면됨

예를들어 나같은 경우는 D:\Dev\android-sdk\ndk\21.3.6528147 이렇게 되어 있음

뒤에 exe, cmd 는 각자의 os에 맞춰서 바꾸면 된다.

[target.aarch64-linux-android]
ar = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android-ar.exe"
linker = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/aarch64-linux-android21-clang.cmd"

[target.armv7-linux-androideabi]
ar = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar.exe"
linker = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/armv7a-linux-androideabi21-clang.cmd"

[target.i686-linux-android]
ar = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/i686-linux-android-ar.exe"
linker = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/i686-linux-android21-clang++.cmd"

[target.x86_64-linux-android]
ar = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/x86_64-linux-android-ar.exe"
linker = "[NDK경로]/toolchains/llvm/prebuilt/windows-x86_64/bin/x86_64-linux-android21-clang.cmd"

그리고 config 파일을

윈도우 : C:\Users\유저ID\.cargo 에 넣는다.

리눅스 : ~/.cargo/ 에 넣으면 됨

맥은 모르겠음. 어쨌뜬 .cargo 폴더 넣으면됨

 

 

3. rust 셋팅

커맨드(cmd) 실행해서 아래를 넣고 실행

rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android  x86_64-linux-android 

 

 

4. 빌드 방법

난 vscode로 해서 빌드 셋팅해서 처리 하는데 다른거 쓰는 사람들은 재주껏 만들어서 아래 처럼 빌드하면된다.

cargo build --target aarch64-linux-android --release
cargo build --target armv7-linux-androideabi --release
cargo build --target i686-linux-android --release
cargo build --target x86_64-linux-android --release

내가 나중에 쓸지 모르니 vscode 빌드 셋팅 task.json에 넣으면 됨

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "android arm64 build",
            "type": "shell",
            "command": "cargo build --target aarch64-linux-android --release"
        },
        {
            "label": "android armv7 build",
            "type": "shell",
            "command": "cargo build --target armv7-linux-androideabi --release"
        },
        {
            "label": "android x86 build",
            "type": "shell",
            "command": "cargo build --target i686-linux-android --release"
        },

        {
            "label": "android x64 build",
            "type": "shell",
            "command": "cargo build --target x86_64-linux-android --release"
        },

        {
            "label": "Build For Android",
            "type": "shell",
            "command": "echo Jobs Done",
            "dependsOn": [
                "android arm64 build",
                "android armv7 build",
                "android x86 build",
                "android x64 build"
            ]
        },
     
    ]
}

 

 

5. 라이브러리 넣는 위치

cd ../android/hellworld/app/src/main
mkdir jniLibs
mkdir jniLibs/arm64-v8a
mkdir jniLibs/armeabi-v7a
mkdir jniLibs/x86
mkdir jniLibs/x86_64


 

 

망할 안드로이드는 네이티브 빌드도 어려워..

 

 

 

 

 

 

반응형
Comments