윈도우의 DLL(Dynamic Link Library)에 해당하는 것이 리눅스나 안드로이드에서는 SO(Shared Object) 파일입니다. Visual Studio(MSVS)는 훌륭한 크로스 플랫폼 개발 도구이기 때문에, 윈도우 환경에서도 안드로이드용 .so 파일을 직접 빌드할 수 있습니다.
MAUI 안드로이드 앱 개발에 맞춰 Visual Studio 2022를 기준으로 .so 파일을 생성하는 과정을 단계별로 설명입니다.
1단계: 필요 구성 요소(워크로드) 설치
Visual Studio가 안드로이드용 C++ 코드를 빌드하려면 관련 도구가 설치되어 있어야 합니다.
- Visual Studio Installer를 실행합니다.
- 현재 사용 중인 VS 2022의 [수정] 버튼을 클릭합니다.
- "C++를 사용한 모바일 개발" (Mobile development with C++) 워크로드를 체크합니다.
- 이때 우측의 '설치 세부 정보'에서 **Android NDK (Rxx...)**가 체크되어 있는지 확인하세요.
- 설치 또는 수정을 완료합니다.
2단계: 안드로이드용 C++ 프로젝트 생성
윈도우용 DLL 프로젝트가 아니라, 안드로이드용 동적 라이브러리 프로젝트를 만들어야 합니다.
- Visual Studio에서 **[새 프로젝트 만들기]**를 선택합니다.
- 상단 검색창에 **"Android"**를 입력하고 필터 언어를 **"C++"**로 선택합니다.
- 검색 결과 중 [동적 공유 라이브러리(Android)] 또는 **[Dynamic Shared Library (Android)]**를 선택하고 [다음]을 누릅니다.
- 프로젝트 이름(예: NativeLib)을 입력하고 [만들기]를 클릭합니다.
3단계: 코드 작성 (extern "C" 필수)
프로젝트가 생성되면 .cpp 파일 또는 .c 파일이 보입니다. 여기에 보안 키 관련 코드를 작성합니다.
- 중요: C++ 파일(.cpp)을 사용하더라도, C#이나 다른 언어에서 함수 이름을 찾을 수 있게 하려면 반드시 extern "C"를 사용해야 합니다.
#include "NativeLib.h"
// extern "C" 블록 안에 함수를 작성해야 함수 이름이 유지됩니다.
extern "C" {
// 외부에서 호출할 함수 (예: 보안 키 반환)
const char* GetSecureKey() {
// 실제로는 여기서 복호화 로직을 수행하거나 조합하여 반환
return "My_Secret_Key_For_MAUI";
}
// 테스트용 덧셈 함수
int NativeAdd(int a, int b) {
return a + b;
}
}
4단계: 빌드 설정 (가장 중요)
윈도우 개발과 가장 다른 부분입니다. 안드로이드 폰의 CPU 아키텍처에 맞춰 빌드해야 합니다.
- 상단 툴바의 솔루션 플랫폼 드롭다운을 확인합니다. (기본값은 보통 x86이나 ARM일 수 있습니다.)
- 실제 안드로이드 폰(갤럭시 등 최신 기기)에서 돌리려면 **ARM64**를 선택해야 합니다.
- ARM64: 최신 안드로이드 스마트폰용
- x86_64 / x86: 안드로이드 에뮬레이터(PC)용
- ARM: 구형 안드로이드 기기용
- 솔루션 구성은 개발 중에는 Debug, 배포 시에는 Release를 선택합니다.
- 메뉴에서 **[빌드] -> [솔루션 빌드]**를 클릭합니다.
5단계: 생성된 .so 파일 확인
빌드가 성공하면 프로젝트 폴더 내에 .so 파일이 생성됩니다.
- 파일 탐색기를 열고 프로젝트 폴더로 이동합니다.
- 경로는 보통 다음과 같습니다:
- [솔루션폴더]\[프로젝트명]\ARM64\Debug\ (또는 Release)
- 해당 폴더 안에 lib[프로젝트명].so 파일이 있는지 확인합니다.
- 예: 프로젝트 이름이 NativeLib이면 파일명은 자동으로 **libNativeLib.so**가 됩니다. (리눅스/안드로이드 명명 규칙)
6단계: MAUI 프로젝트에 적용
이제 이 파일을 복사해서 MAUI 프로젝트에 넣으시면 됩니다.
- 생성된 libNativeLib.so 파일을 복사합니다.
- MAUI 프로젝트의 Platforms\Android\Resources\lib\arm64-v8a\ 폴더 안에 붙여넣습니다. (폴더가 없으면 만드세요)
- 붙여넣은 파일의 속성에서 **빌드 작업(Build Action)**을 AndroidNativeLibrary로 설정합니다.
LIST
'.NET > MAUI' 카테고리의 다른 글
| MAUI 디컴파일 회피 검토 (1) | 2026.01.12 |
|---|---|
| MAUI 함수 호출 지연 방법 비교 (0) | 2025.12.11 |
| MSVS에 빌드 옵션에 Android 로컬 디바이스가 표시되지 않을 때 (0) | 2025.12.08 |
| MAUI 상대/절대 경로 설명 (0) | 2025.11.24 |
| MAUI TabbedPage와 Shell 사용 비교 (0) | 2025.10.16 |