Android/Kotlin

[Android / Kotlin] (1) 안드로이드에서 시리얼포트 통신하기 (android-serialport-api 오픈소스)

루다대디 2025. 7. 8. 09:44

안드로이드 보드에서 외부 컨트롤보드와 RS232 시리얼 통신이 필요해서
시리얼 통신 구현 방법을 정리해봤다.

 

일단, 안드로이드 기본 SDK에는 시리얼 포트를 직접 제어할 수 있는 API가 없다.

 

그래서 시리얼 포트 통신을 위해 별도의 라이브러리가 필요한데,
이때 많이 사용하는 것이 바로 android-serialport-api다.

 

이 라이브러리는
JNI(Java Native Interface)C 코드를 활용해서
리눅스 커널이 제공하는 /dev/ttyS*, /dev/ttyUSB* 같은 시리얼 포트와
안드로이드 앱에서 직접 통신할 수 있게 해준다.


1. android-serialport-api 오픈소스 다운

https://github.com/cepr/android-serialport-api

 

GitHub - cepr/android-serialport-api: Accessing serial ports for Android

Accessing serial ports for Android. Contribute to cepr/android-serialport-api development by creating an account on GitHub.

github.com

 

android-serialport-api 라이브러리를 다운로드해서 압축을 풀면
android-sercd 폴더와 android-serialport-api 폴더, 두 개가 생성된다.

여기서 실제로 사용하는 것은 android-serialport-api 폴더 하나다.

 

이 폴더 안으로 들어가면,
project라는 하위 폴더가 있고,
그 안에는 jni, libs, res, src 폴더가 존재한다.

이 중에서 src 폴더에 들어가보면
여기에도 다시 android-serialport-api라는 폴더가 한 번 더 나온다.


2. 프로젝트 생성 및 폴더 복사

프로젝트를 새로 생성한 후,
프로젝트 폴더의 src → main → java 경로 아래에
android-serialport-api 폴더를 복사해 넣는다.

 

여기서 복사하는 android-serialport-api 폴더는
압축을 풀었을 때 src 내부에 있던 폴더를 의미한다.

그리고 예제 코드가 들어있는 sample 폴더는 삭제해도 된다.

여기까지 진행하면 폴더 구조는 아래와 같이 정리된다.

 

 

 

그리고, 압축을 해제한 소스 중에서
project 폴더 하위에 있던 jni 폴더와 libs 폴더를
안드로이드 프로젝트의 app → src → main 폴더 아래에 복사해서 붙여넣는다.

 

이 과정을 거치면,
cpp 폴더가 새로 생성된 것을 확인할 수 있다.


3. NDK, CMake 설치

Tools 메뉴에서 SDK Manager를 선택한 뒤,
상단의 SDK Tools 탭으로 이동한다.

그리고 아래 이미지처럼 NDKCMake 항목을 체크해서 설치해준다.

이렇게 NDKCMake를 설치하는 이유는
android-serialport-apiJNI(Java Native Interface) 방식으로
네이티브 C 코드(.so 라이브러리)를 사용하기 때문이다.

안드로이드 스튜디오에서 JNI 연동 및 네이티브 코드 컴파일을 하려면
NDK(Native Development Kit) CMake가 반드시 필요하다.
이 두 가지가 설치되어 있어야
프로젝트를 빌드할 때 네이티브 라이브러리를 정상적으로 인식하고 사용할 수 있다.


4. Add C++ to Module로 JNI 연동 설정하기

이제 안드로이드 스튜디오에서 프로젝트를 우클릭한 뒤
Add C++ to Module 메뉴를 선택한다.

이후 나오는 창에서
두 번째 라디오버튼을 선택하고,
아까 복사해둔 jni 폴더 경로에서 Android.mk 파일을 지정해준다.

이렇게 하면 프로젝트에 네이티브(C/C++) 코드가 정상적으로 연동된다.

 


 

이 과정을 통해
안드로이드에서 시리얼 포트(UART, RS232 등)를 이용한 통신을 구현할 수 있다.

 

 

실제 시리얼 통신 코드 예제와 자세한 사용 방법은
다음 블로그 글을 참고하면 된다.

 

2025.07.08 - [Android/Kotlin] - [Android / Kotlin] (2) 안드로이드에서 시리얼포트 통신하기 (android-serialport-api 오픈소스)

 

[Android / Kotlin] (2) 안드로이드에서 시리얼포트 통신하기 (android-serialport-api 오픈소스)

이전 블로그2025.07.08 - [분류 전체보기] - [ Android / Kotlin ] (1) 안드로이드에서 시리얼포트 통신하기 (android-serialport-api 오픈소스) [ Android / Kotlin ] (1) 안드로이드에서 시리얼포트 통신하기 (android-seri

sslee92.tistory.com