안드로이드 스튜디오에서 앱의 불편함을 개선 후 테스트 폰을 USB로 연결 후 앱을 테스트하기 위해 빌드 후 앱을 실행하였다. 보통의 경우 앱이 설치되면서 앱이 실행되었지만, 어찌된 영문인지 앱 아이콘만 생성 된 후 앱이 실행되지 않았다. 앱 아이콘을 클릭하면 "앱이 설치되지 않았습니다." 라는 토스트 메세지창이 노출 되었다. 오류 전체 내용은 다음과 같다.
이런적이 없었기에 또 다시 삽질은 시작 되었다. 안드로이드 스튜디오를 재시작해도 문제는 해결되지 않았다. 픽셀2(pixel 2) 폰의 설정창으로 들어가 Play 프로텍트 설정을 확인했다. Play 프로텍트로 앱 검사 기능은 이미 비활성화 상태였다. Play 프로텍트 설정 찾아가는 방법휴대폰 설정 > 보안 > Goole Play 프로텍트 > 상단 톱니바퀴 모양 아이콘 클릭 > Play 프로텍트 설정 보통 구글플레이 스토어가 아닌 다른 곳에서 다운 받은 APK 파일을 설치할 때 앱이 설치 되지 않는 경우에 이기능을 비활성화 하면 해결 된다. 그러나 이 문제도 아니였다. AndroidManifest.xml 파일 정보에 meta-data 태그 중에 구글맵 API_KEY를 디버깅용이 아닌 릴리즈 버전을 사용해서 그런것일까? 라는 생각에 디버깅용으로 변경 후 빌드해보았으나 여전히 해결되지 않았다. release버전으로 빌드 후 APK파일을 휴대폰으로 복사 후 설치 후 실행해보았으나 여전히 "앱이 설치되지 않았습니다". 분명히 뭔가 바뀐게 있을텐데...무엇일까... 소스코드와 라이브러리 모두 동일한데, 무엇이 바뀌어서 이러는 것일까??? 가장 최근해 빌드해서 구글플레이에 올렸던 버전의 소스로 실행해보아도 동일한 오류가 발생되었다. 컴퓨터를 재부팅해볼까? 몇 시간의 삽질 끝에 원인을 찾았다. AndroidManifest.xml 파일 정보의 시작하는 액티비티의 android:exported="false" 속성이 문제를 일으켰다.
그렇다면 지난 번 릴리즈 버전의 경우 문제없이 동작하는 것이 왜 지금 발생했을까?? 지난 번 릴리즈 버전의 경우 인트로 액티비티를 제거하고 메인 엑티비티를 시작액티비티로 변경하면서 android:exported="false"를 제거하지 않았다. 시작하는 액티비티의 경우 exported="false" 옵션을 설정할 수 없다. 옵션을 제거하거나 android:exported="true"로 속성을 지정해야한다. [해결] android:exported="true"로 지정
또는 android: exported 옵션 제거
RESOURCE: https://stackoverflow.com/questions/4226132/app-not-installed-error-on-android 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음 |