안드로이드 앱 출시 전 릴리즈 버전으로 빌드하여 테스트를 진행하는 방법과 첫 릴리즈 빌드에서 자주 발생하는 프로가드 오류의 해결 방법을 정리해 보았다.
안드로이드 릴리즈 빌드 테스트의 필요성
안드로이드 앱 개발 막바지에 접어들면 출시 전 릴리즈 빌드 된 버전으로 최종 테스트를 진행해 보아야 한다. 디버그 버전에서는 발생하지 않았던 문제가 릴리즈 버전에서 발생할 수 있기 때문이다.
대부분이 앱 축소, 난독화, 최적화 옵션을 적용하면서 발생하는 오류인데, build.gradle (Module :app) 파일의 release 블록 내 빌드 옵션 설정을 모두 false로 변경하면 간단히 해결할 수 있는 문제이지만 그것은 오류를 발생시키는 옵션을 포기하는 것일 뿐, 제대로 된 해결책이 아니다.
이 문제를 제대로 해결하려면 정확한 원인 파악을 위해 릴리즈 빌드에서도 로그 확인과 디버깅이 가능하도록 설정을 변경해 줘야 한다. 이 글은 Trindex 앱 첫 릴리즈 빌드 당시의 오류 해결 과정을 보여주면서 릴리즈 빌드 테스트를 위한 빌드 옵션 설정 방법과 첫 릴리즈 빌드 시 프로가드 옵션에 의해 발생하는 오류의 해결 방법을 정리했다.
릴리즈 빌드 테스트를 위한 옵션 설정 방법
우선 안드로이드 스튜디오의 왼쪽 사이드 메뉴 중 [Build Variants] 메뉴를 선택하고 [Active Build Variant] 항목의 값을 [release]로 변경해 준다.
이후 AndroidManifest.xml 파일 내 [application] 태그의 속성 목록에 위의 빨간 상자로 표시된 코드를 추가해 주고,
build.gradle 파일에는 위의 빨간 상자로 표시된 코드들을 추가해 준다.
[signingConfigs]의 [release] 블록은 릴리즈 버전 빌드 시 필요한 키 스토어 파일에 대한 정보들인데, run 실행 시 자동으로 signed apk가 빌드될 수 있도록 키 스토어의 [파일 경로], [비밀번호], [키앨리어스명], [키앨리어스 비밀번호]를 각각 입력해 주어야 한다.
[buildTypes]의 [release] 블록 내에 추가되는 두 줄의 코드는 각각 디버그를 가능케 하는 옵션, 그리고 상단에 추가한 [signingConfigs]의 내용을 릴리즈 빌드에 반영하는 옵션이다. 여기까지 진행했다면 앞으로 run 실행 시 릴리즈 버전으로 빌드되며, 로그 확인과 디버깅이 가능하다.
첫 릴리즈 빌드의 프로가드 오류 해결
설정을 마친 후 Trindex 프로젝트 실행 중 강제 종료되는 부분을 진행하니 로그 창에 위와 같은 오류 메시지가 나타났다. 해당 위치의 소스코드를 훑어봤지만 특별한 논리적 오류를 발견하지는 못했는데,
프로가드 옵션 적용에 대한 오류로 간주하고 proguard-rules.pro 파일에 -keep 코드를 추가하여 특정 패키지만 프로가드 적용 대상에서 제외되도록 처리하였다. 오류 메시지에 나타난 패키지들에 대해 하나씩 프로가드 적용 제외 대상으로 만들어 테스트를 진행했다. 오류가 발생하지 않는 범위 안에서 최소한의 패키지만 제외되도록 처리하려는 것이다. 결국 위의 두 패키지를 제외하니 문제가 해결되었다.
하지만 하나가 해결되니 또 다른 오류가 발생했는데,
이 경우 오류 메시지 끝부분에 보이는 경로로 찾아가 missing_rules.txt 파일을 열고, 내부 내용 전부를 복사한 후 proguard-rules.pro 파일에 붙여 넣기를 하고, 새로 빌드를 하는 것으로 문제를 해결할 수 있었다.
테스트 후 뒷정리
프로가드 문제를 해결하고 릴리즈 빌드에 대한 테스트를 마쳤으면 반드시 빌드 옵션을 원상 복구하여 키 스토어 정보가 유출되거나 성능이 저하된 빌드가 업로드되는 불상사를 방지해야 한다.