개발자 블로그

안드로이드 오레오 대응 개발 후기 본문

프로그래밍/안드로이드

안드로이드 오레오 대응 개발 후기

로이드.Roid 2017. 9. 26. 16:32

안드로이드 새 버전이 출시 되었다. 이번에는 알파벳 O로 시작할 차례. 이미 공개된지 오래지만, 이름은 오레오(Oreo)다.

그동안 앱 업데이트를 조금 소홀히 했더니 검색 순위에서도 엄청 밀리고.. 유입보다 삭제가 더 많은 지경에 까지 이르렀다,, 개발한다고 끝나는게 아니구나. 블로그도 새로운 포스팅 작성 안하면 유입이 점점 줄어들던데 앱 개발도 별로 다르지 않은 것 같다.

targetSdkVersion을 올리는건 조심해야 된다. 예전에 안드로이드 마시멜로 버전이 출시 되었을 때 한 번 달라진 권한 모델 때문에 피를 본 경험이 있다. 이 때의 기억이 트라우마로 남은건지.. 버전을 올릴 때 마다 늘 걱정이 된다..-_-;;

안드로이드 오레오(Android 8.0)에서 달라진 동작들은 여기서 확인 할 수 있다. 


아래 내용들은 이번에 오레오 대응 개발을 하면서 겪은 후기.


findViewById 캐스팅 필요없음

소스코드에서 가장 큰 변화가 아닌가 싶다. findViewById를 쓰는 곳 마다 경고를 뿜어낸다. 

이런식으로.. 

수정은 간단하다. 그냥 캐스팅 하는 코드는 다 제거하면 된다. 사실 냅둬도 무관하지만, 그냥 냅둘 정도로 무딘 성격을 가진 개발자가 있을까?



프로그레스 대화상자 Deprecated

API 28 부터 ProgressDialog가 Deprecated 되었다. 아래 내용은 이와 관련한 설명 (원문보기)

This class was deprecated in API level 26.
ProgressDialog is a modal dialog, which prevents the user from interacting with the app. Instead of using this class, you should use a progress indicator like ProgressBar, which can be embedded in your app's UI. Alternatively, you can use a notification to inform the user of the task's progress.

대략 설명하면, ProgressDialog는 모달(modal) 대화상자다. 그래서 이걸 쓰면 사용자와의 상호작용을 방해하기 때문에 앱 UI에 ProgressBar를 포함시키던지, Notification을 써서 구현하라는 소리다.

난 그냥 ProgressDialog를 따로 만들었는데.. 이것 때문에 또 한참 고생했다. 긴 글이 될 것 같아서 이 건 별도의 포스팅으로 작성 해야겠다.



빌드 오류 발생

빌드 할 때, "Failed to resolve: com.android.support:support-v4:26.0.1" 이런 에러가 발생할 수 있다. (아래 사진 참고)

build.gradle 파일에서 아래 코드 처럼 "maven { url "https://maven.google.com" }"를 추가해주면 간단하게 해결 된다.

buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
maven { url "https://maven.google.com" }
}
}



Google Play Service 관련

이것도 build.gradle 파일과 관련된 문제다. 구글 플레이 관련 서비스를 사용하는 경우에만 발생한다.

com.google.android.gms:play-services가 문제가 됐는데.. 구글 플레이 서비스 SDK의 번들 버전을 쓰지 말라는 소리다. 이거 사이즈가 너무 크다고, 실제로 쓰는 서비스의 API를 명시하라는거다.

내 경우에는 애드몹을 사용하고 있기 때문에 아래 코드 처럼 뒤에 "-ads"를 붙여서 애드몹의 API를 명시해주면 된다.

애드몹 말고 수많은 서비스들이 있는데, 전체 서비스 API 목록은 여기에서 확인 가능하다.



권한 관련 변경사항

특히 외부 저장소를 읽고 쓰는 앱(아마 꽤 많은 앱이 여기에 해당되지 않을까 싶다.)은 주의해야 한다. 이건 지난번에 작성한 글이 있어서 링크로 대체.

2017/09/19 - [프로그래밍/안드로이드] - 안드로이드 오레오 대응 개발시 권한 관련 주의사항


Comments