Delphi [10.3.3] 안드로이드 64비트 앱 빌드하기
2019.11.27 11:00
10.3.3 출시와 함께 안드로이드 64비트 앱 개발을 지원합니다.
이 글은 델파이 10.3.3 버전을 이용 안드로이드 64비트 앱을 작성하고 빌드하는 과정을 안내합니다.
(기존 앱을 안드로이드 64비트로 빌드하는 과정도 참고할 수 있습니다.)
사전 준비사항
안드로이드 64비트 앱을 개발하려면, 64비트를 지원하는 안드로이드 기기를 준비해야 합니다.
안드로이드 기기가 64비트를 지원하는지는 다음 앱을 설치해 확인할 수 있습니다.
다음은 제 테스트 폰(LG G4: 2015년 출시)의 CPU 확인 결과입니다.(오래된 폰들도 대부분 64비트를 지원합니다.)
모바일 개발환경이 준비되지 않은 분들은 다음 링크를 통해 개발환경을 먼저 설정합니다.
프로젝트 작성
새로운 FMX 프로젝트(FIle > New > Multi-device Application - Delphi)를 생성합니다.(또는 기존 FMX 프로젝트를 엽니다.)
폼에 버튼을 추가 후 아래와 같이 클릭 이벤트를 구현합니다.
타겟 플랫폼을 Android 64-bit로 선택합니다.
안드로이드 앱 번들 설정
32비트와 64비트를 모두 지원하려면 ABB(Android App Bundle) 포맷을 지원하도록 설정해야 합니다.
Project > Options : Building > Delphi Compiler > Compiling : Other Options > Generate Android App Bundle file(arm + arm64) = True
AAB 설정 시 32비트(armeabi-v7a)와 64비트(arm64-v8a) 바이너리 파일을 모두 포함한 APK가 생성됩니다.
최종 사용자는 플래이 스토어를 통해 다운로드 받아 디바이스(CPU, 비트)에 알맞은 파일을 받아 사용하게 됩니다.
앱 실행 및 확인
Run 버튼(Run > Run: F9)를 눌러 안드로이드 기기에 배포하고, 실행합니다.
배포
개발(또는 마이그레이션)이 완료되었다면 구글 플레이 스토어를 통해 배포할 수 있습니다.
이 과정은 다음 엠바카데로 기술문서를 통해 자세한 내용을 확인할 수 있습니다.
참고자료
댓글 4
-
silkroad99
2019.11.28 17:14
-
험프리
2019.12.05 11:28
안드로이드 앱 번들 설정 시 핸드폰에서 실행되지 않습니다.
이경우, 프로젝트 옵션을 디버그 모드 별(릴리즈와 디버그)로 다르게 설정하면 어떨까 싶네요^^
릴리즈 프로젝트 옵션에서는 AAB 활성, 디버그 프로젝트 옵션에서는 AAB 비활성 후
핸드폰에서 실행이 필요하 경우 디버그 모드로, 배포파일을 만드는 경우 릴리즈 모드로 설정하면 좋을 것 같습니다.
-
토끼왕
2019.12.13 13:47
C++Builder는 안드로이드 64비트가 아직 지원되지 않습니다.
앱을 등록하려고 하면, 64비트나 AAB를 만들라고 하는데, 등록 방법이 있는가요?
64비트 지원 다음 버전이
나올 때까지 기다려야 하나요?
-
험프리
2020.01.02 10:32
현재로써는, C++빌더 안드로이드 64비트 개발을 공식 지원하지 않습니다.
로드맵상 10.4.X(2020년 중순)에 지원 예상되어 있습니다.
안녕하세요
이번에 Rio 10.3.3으로 변경을 해서 Android 64bit로 타켓팅 해서
정상적으로 빌드하고 컴파일해서 보니 aab파일도 잘생성되었습니다.
지금현상이 정상인건가요?
1. 프로젝트에서 aab True로 해 놓으면
핸드폰에서 바로 실행안되고 정상처리된 파일경로 메시지만 보여줍니다.
2. 프로젝트에서 aab False로 해 놓으면 핸드폰에서 바로 실행만됩니다.
예전에는 핸드폰에서 실행도 되고 apk파일도 생성되었는데...
지금은 aab파일생성, apk실행이 두가지가 동시에 이루어지지 않는것이 정상적인건가요
aab 파일을 apk로 변환해서 동시 실행하는 방법은 별도로 구성해야 하는건가요
어플을 apk로 플레이스토어에 업로드하면 위치서비스(안드로이드 서비스)로 구성했는데
문제없이잘 실행됩니다...그러나 이 어플을 aab파일로 플레이스토어에 업로드하면 설치할때
리소스가 누락되는지 몰라도 위치 서비스로 구성된(안드로이드 백그라운드 서비스)
위치서비스를 정삭적으로 로딩이 안됩니다.