GW 중에 안드로이드에서 러스트를 움직여 놀던 이야기

오랜만입니다. 지난달 말 육휴에서 복귀했습니다.

그리고 며칠 전부터 Rust를 배우고 있고, 원래의 전문 분야가 Android/iOS이므로, Android NDK로 Rust를 움직이자! 라고 생각했습니다.

GitHub 리포지토리



했던 일


  • Rust for Android에서 필요한 것을 넣는다 ( Readme#how-to-setup-this-project )
  • 안드로이드 스튜디오에서 새로운 프로젝트 만들기, 네이티브 C++ 선택 (diff)
  • C++ JNI를 Rust로 바꾸기 ( diff )
  • Hello World를 작은 것으로 바꾸기 ( diff )

  • 할 수있는 것




    Rust 공부 목적으로 만든 generator 모듈로 사람의 프로필 같은 정보를 생성하고 그것을 Kotlin 측에서 표시하는 앱입니다.
  • 2021/5/6 갱신 취미를 5개 갖게 하는 기능을 추가했습니다 ( diff )




  • 시작할 때마다 다양한 사람의 프로필이 만들어집니다. 소설의 캐릭터 만들기에 사용할 수 있을지도 모릅니다.

    사양은 다음과 같습니다.
    * 일본인명일 수 없는 이니셜은 나오지 않는다. 'X'라든지
    * 대체로 18세~54세의 사람과 매칭한다(생후 6667일~19999일의 범위)
    * 취미는 60개의 배열 에서 중복되지 않는 5개 가 선택된다

    덧붙여 당초는 원주율 1억 자리수의 계산을 Kotlin과 Rust로 성능 비교하는 앱의 예정이었습니다만, 나름대로 수학의 지식을 요구받은 것과, 처음부터 1기능 갓트리 만드는 것보다 우선 일자형을 취급한다 라든지 경향이 있는 처리로부터 시작해 기초를 굳히고 싶었으므로, 이런 형태로 방침 전환했습니다.

    개발 환경에 대하여




    우려된 안드로이드 스튜디오에서 러스트 코딩이지만 컴파일 오류의 원인을 규명 할 때는 특히 어려움이 없었습니다.

    그러나, rs 파일의 강조표시나 보완을 사용할 수 없고, Rust의 플러그인도 오늘 시점에서는 발견되지 않았기 때문에, Rust 플러그인을 넣은 VSCode로 쓰는 편이 편리했습니다.

    힘든 일



    문자열형의 종류로, 장소에 의해 String, jstring, CString, &str를 각각 요구되어, C++의 안건으로 받은 세례를 생각해 냈습니다.

    여기 은 String 배열을 Kotlin에 전달하려고 힘든 부분입니다. new_object_arrayset_object_array_element 로 할 수 있는 것을 알고, 사고팔고의 끝에 일단 움직였지만, 쓰는 방법으로서 적절한 것일까.

    또, 오랫동안 Kotlin/Swift 했던 몸으로서는 크레이트나 슬라이스 등 익숙하지 않은 개념도 있어, 아직도 공부 부족을 느꼈습니다. 이번에 만든 앱을 망설이면서 기억해 나가려고 생각합니다 💪

    참고로 한 사이트


  • Android NDK에서 Rust를 사용할 수 있습니까? 조사해 보았다
  • Rust로 날짜, 시간 계산
  • Generate random numbers within a range - Rust Cookbook
  • 좋은 웹페이지 즐겨찾기