여러 앱에서 쓰는 기능, 라이브러리로 묶어보자
목차
- 왜 공통 기능을 라이브러리로 만들까?
- 장점과 주의할 점
- Android Library 모듈 만들기
- 앱에 라이브러리 연결하기
- 연동 후 사용하기
왜 공통 기능을 라이브러리로 만들까?
모바일 앱, 차량용 앱처럼 여러 앱을 만들다 보면 블루투스 연결, 네트워크 확인, 위치 정보처럼 반복되는 기능이 생깁니다. 처음에는 각 앱에 코드를 복사해서 넣는 편이 빠르게 느껴질 수 있습니다. 하지만 기능 수정이나 버그 대응이 필요해지면 같은 코드를 여러 번 고쳐야 하는 상황이 생깁니다.
이럴 때 공통 기능만 별도의 라이브러리 모듈로 꺼내면 됩니다. 앱은 화면과 앱별 정책에 집중하고, 공통 기능은 하나의 모듈에서 관리하는 구조입니다.
장점과 주의할 점
가장 큰 장점은 수정 지점이 하나라는 것입니다. 예를 들어 블루투스 연결 로직을 개선하면, 라이브러리를 사용하는 모든 앱에 같은 개선 사항을 반영할 수 있습니다. 중복 코드가 줄고 테스트 기준도 통일됩니다.
다만 모든 코드를 라이브러리로 옮기면 안 됩니다. 특정 화면 UI, 차종별 예외 처리, 앱마다 달라지는 정책은 각 앱에 남겨두는 편이 좋습니다. “두 개 이상의 앱에서 같은 방식으로 쓰는가?”를 기준으로 판단하면 됩니다.
Android Library 모듈 만들기
Android Studio에서 File > New > New Module을 선택한 뒤
Android Library를 만들면 됩니다.
여기서는 common-library라는 모듈을 만들었다고 가정해보겠습니다.
공통 기능은 라이브러리 안에 작성합니다.
public class NetworkHelper {
public static boolean isConnected(Context context) {
ConnectivityManager manager =
(ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo network = manager.getActiveNetworkInfo();
return network != null && network.isConnected();
}
}
앱에 라이브러리 연결하기
앱 모듈의 build.gradle 파일에 아래 한 줄을 추가합니다.
dependencies {
implementation project(':common-library')
}
이제 앱은 라이브러리 코드를 자신의 기능처럼 가져다 쓸 수 있습니다.
연동 후 사용하기
if (NetworkHelper.isConnected(this)) {
// 네트워크 연결 상태일 때 처리
} else {
// 연결이 없을 때 처리
}
이렇게 하면 네트워크 확인 방식이 바뀌어도 NetworkHelper만 수정하면 됩니다.
여러 앱이 같은 기능을 쓰더라도 기준은 하나로 유지되는 셈입니다.
공통 라이브러리는 단순한 코드 모음이 아니라 여러 앱의 품질을 함께 관리하는 방법이라고
생각하면 이해하기 쉽습니다.
댓글
댓글 쓰기