TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 23 READS

에뮬레이터 없이 맥에서 안드로이드 앱을 네이티브로: Mac.apk 분석

에뮬레이터 없이 맥에서 안드로이드 앱을 네이티브로: Mac.apk 분석
SOURCE IMAGE · HACKER NEWS

애플 실리콘 맥에서 안드로이드 앱을 돌리는 방법은 그동안 대체로 두 갈래였다. 하나는 안드로이드 전체를 가상 머신이나 에뮬레이터 위에 올려 구동하는 방식이고, 다른 하나는 리눅스 계층을 깔고 그 위에서 앱을 실행하는 방식이다. 어느 쪽이든 '맥 아래에서 또 하나의 운영체제가 돌아가는' 구조라 성능과 사용 경험에서 한계가 분명했다. 최근 깃허브에 공개된 Mac.apk는 이 전제를 바꾸겠다고 말한다. 에뮬레이터도, 가상 머신도, 밑단의 리눅스 커널도 없이 안드로이드 앱을 애플 실리콘 위에서 곧바로 실행한다는 것이다.

어떻게 다른가

Mac.apk의 핵심 주장은 안드로이드 애플리케이션 환경 자체를 macOS 위에 직접 구현했다는 데 있다. 백그라운드에서 안드로이드를 부팅하지도, 명령어를 하나씩 해석(interpret)하지도 않는다. 그 결과 안드로이드 앱은 평범한 macOS 프로세스로 뜨고, 맥의 GPU로 화면을 그리며, CPU에서 네이티브 속도로 실행된다. 사용자 눈에 보이는 모습도 일반 맥 앱에 가깝다. Dock에 자리 잡고, 신호등 버튼(닫기·최소화·확대) 옆에 뒤로 가기 버튼이 붙은 독립 창을 가지며, 창 크기 조절과 회전이 되고, 시스템 설정에 맞춰 라이트·다크 모드도 함께 전환된다.

이것이 가능한 이유는 저장소 구성에서 읽을 수 있다. 공개된 리포지토리에는 안드로이드 프레임워크 재구현, 네이티브 런타임, arm64 로더와 Bionic(안드로이드 C 라이브러리) 심(shim), ARM32 리컴파일러, 그리고 macOS 앱이 모두 들어 있다. 즉 ARM64 코드는 로더와 Bionic 호환 계층을 통해 바로 올리고, 구형 ARM32 바이너리는 리컴파일러로 변환해 맥의 네이티브 명령으로 돌린다는 접근이다. 그래픽은 ANGLE과 MoltenVK, Vulkan 로더를, 자바 런타임은 OpenJDK 기반 JRE를, 리소스는 AOSP에서 빌드한 안드로이드 플랫폼 자원을 가져다 쓰는 식으로 각 조각을 오픈소스 부품으로 메운다.

아직은 알파

다만 Mac.apk는 스스로를 명확히 '알파'로 규정한다. 활발히 개발 중인 초기 소프트웨어이며, 어떤 앱은 훌륭하게, 어떤 앱은 부분적으로 돌고, 어떤 앱은 아직 실행되지 않는다. 호환성 목록은 손으로 일일이 테스트한 결과를 정리한 것이고, 릴리스마다 알려진 문제(Known issues)가 따로 공지된다. 앱을 처음 실행할 때는 Mac.apk가 준비 작업을 하느라 느리며, 큰 앱은 최대 1분까지 걸릴 수 있다. 대신 이후 실행은 빠르다. 저장 데이터는 각 앱의 .app 번들 안에 들어가기 때문에, 앱을 휴지통으로 드래그하면 세이브가 함께 삭제된다. 제거는 Mac.apk 제어판에서 하라는 안내가 붙어 있다.

실무자가 짚어야 할 지점

한국의 개발자나 IT 담당자가 특히 유념할 대목은 보안 모델이다. Mac.apk 위에서 돌아가는 안드로이드 앱은 스마트폰식 앱 샌드박스 안에 갇혀 있지 않다. 사용자의 macOS 계정 권한을 그대로 가진 평범한 네이티브 코드로 실행되므로, 여느 맥 앱과 똑같이 사용자의 파일을 읽고 쓸 수 있다. 프로젝트 측도 이 점을 분명히 하며 '신뢰할 수 있는 APK만 설치하라', 직접 내려받아 실행하는 다른 프로그램과 동일하게 취급하라고 경고한다. 제3자 APK를 Voltare가 검증하거나 보증하지 않으며, 멀웨어·데이터 손실·보안 사고에 대한 책임도 지지 않는다는 면책 조항도 함께 걸려 있다. 사내에서 검증되지 않은 APK를 돌리는 용도로 쓸 생각이라면 이 전제를 반드시 염두에 둬야 한다.

라이선스 구조도 실무 판단에 영향을 준다. Mac.apk는 GNU AGPL v3.0 오픈소스로, 공식 앱 사용 자체는 무료다. 대신 AGPL 조건 없이 자사 제품에 담아 배포·제공하려는 기업을 위한 상용 라이선스가 별도로 마련돼 있다. 번들된 구성요소 중 GLib와 GNU gettext의 libintl은 LGPL이라, 수정 빌드를 쓸 수 있도록 각 릴리스에 정확한 버전의 전체 소스와 빌드 레시피가 첨부된다. 광고와 인앱 결제를 설계 단계에서 배제했다는 점도 특징이다.

정리하면 Mac.apk는 '맥 위에 안드로이드를 얹는' 기존 방식이 아니라 '안드로이드 앱이 맥 앱처럼 보이고 동작하도록 환경을 다시 구현하는' 쪽에 베팅한 프로젝트다. 성능과 창 통합 측면의 그림은 매력적이지만, 아직 호환성이 들쭉날쭉한 알파 단계이고 샌드박스가 없다는 보안 특성이 분명하다. 당장 업무 환경에 도입하기보다는, 네이티브 실행이라는 접근이 어디까지 완성되는지 지켜보며 신뢰할 수 있는 앱으로 한정해 실험해 보는 정도가 현실적인 선택이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/kksimp/Mac.apk
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...