검색결과 리스트
글
[Android] TARGET API 26 변경 관련 작업 내역
안드로이드 타겟 API최소 레벨이 26으로 제한되면서
구 프로젝트 업데이트 작업을 진행하면서 변경된 내용 정리 및 정보 공유해봅니다.
target 26 변경 이유.
1. GCM > FCM 변경
: GCM에서 만들어진 regstrion Id 로 푸시를 보내도 정상동작!!
: Eclipse 에선 정식 지원이 아니라 AAR파일을 가지고 적용. 저는 Android Studio로 변경.
이슈 사항 - 구글 플레이서비스도 업데이트 함에 따라
GoogleMap 등 구글 플레이서비스 관련 호환성 패치도 같이 진행하였음
2. 알림채널 지원(api 26 이상)
: 알림을 채널별로 구분하고, 시스템에서 알림제어를 할수 있도록 변경
: 26이상에서 무조건 한개이상의 알림채널이 있어야 함( 없으면 알림이 안뜸 )
: 최초 한번만 생성하면 됨
이슈사항 - 앱의 설정으로 알림사운드, 진동을 제어했는데 알림 채널적용 후 기존 알림설정이 동작안됨
> 사운드, 진동을 알림채널에서 적용하는 걸로 변경. 즉 푸시메시지 건별로 알림설정이 불가능해짐.
* 저의 경우 특정 그룹별로 알림 관리를 했는데, 이 경우 그룹의 수만큼 알림 채널을 추가해 주어야해서,
알림관리를 게시글, 댓글, 자신에게쓴 글 3개의 채널로 통합관리함
* 알림을 껏다가 다시 켤 경우 초기에 설정한 IMPORTANCE가 Default값으로 변경됨.
오픈 이슈 : https://issuetracker.google.com/issues/65108694
https://issuetracker.google.com/issues/73719217
* 기존에 서버에 알림 값을 가지고 재설정 했는데 알림채널이 생기면서
앱이 아닌 OS에서 알림을 관리를 하기 때문에 변경된 값에 대한 상세 정보를 가져올수 없음.
즉, 로컬에서만 관리 하도록 변경.
* 알림채널 설정 호출 방법 (채널아이디를 빼면 알림채널 설정 목록으로 이동합니다!)
3. Permission Check 지원 (api23 이상)
: 현재 사용하는 permission 중 Protection level이 dangerous 로 되어있으면, 사용자에게 동의를 받아야 정상동작함
: Protection level 검색방법
https://developer.android.com/reference/android/Manifest.permission
위 링크 들어간 후 사용중인 퍼미션 이름 검색
4. Background Service 임시제거
: 아래의 내용 때문에 임시 제거한 상태
시스템이 서비스를 생성한 후, 앱은 5초 이내에 해당 서비스의 startForeground() 메서드를 호출하여 새 서비스의 알림을 사용자에게 표시해야 합니다. 앱이 이 시간 한도 내에 startForeground()를 호출하지 않으면 시스템이 서비스를 중단하고 이 앱을 ANR로 선언합니다.
> 백그라운드 상태를 유지하기 위해 서비스 종료시후 다시 백그라운드서비스를 올리도록 되어 있어 ANR 발생. (안 좋은 방식이기도 해서 이참에 손볼 예정)
* 임시로 앱이 실행중인 상태에서만 실행하도록 변경한 상태
jobschdule을 사용하여 처리하는 방법이 있는걸로 보이나, 업데이트 일자가 촉박하여 임시 패치.
관령 링크 - https://developer.android.com/about/versions/oreo/background?hl=ko
5. 기타 참고 사항 요약 정리
: FCM > GCM에서 생성된 Regstration ID로 푸시 메시지 전송 가능
: 알림설정을 시스템에서 세분화하여 관리하도록 변경(알림채널 기능)
기존에 알림을 컨트롤 했다면, 이젠 불가능해짐.
API 26이상의 단말에서는 필수로 1개이상의 채널이 있어야 함.
: 퍼미션 Protection level검색 후 dangerous로 되어 있다면 유저로 부터 동의를 받아야함.
: 백그라운드 서비스 정책변경
앱이 시간 한도 내에 startForeground()를 호출하지 않으면 시스템이 서비스를 중단하고 이 앱을 ANR로 선언
알림채널 문서로 몇번을 봐도 이해가 잘 안됐는데..
직접구현하고 테스트해보니 그제야 개념이 좀 잡히네요.
실제 패치 시에는 Eclipse환경에서 Android Studio로 변경하는 작업에서 가장 애를 먹었는데,
아직 Eclipse를 쓰신다면 이참에 변경해보세요!
저의 경우 기존에 Android Library Project 로 메인 소스를 구성하고,
서브프로젝트에서 Import해서 하나의 소스로 앱을 다르게 구성하여 배포를 했는데,
이번에 Android Studio로 변경하고 productFlavors라는 옵션을 사용하니
예전 보다 훨씬 간편하고 쉽게 구성할 수 있었네요.
저처럼 패치는 해야겠고, 뭐부터 봐야할지 모르는 분들을 위해 한번 포스트해봤네요.
도움이 됐다면 아래 하트 한번 눌러주세요.!!
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 구글 앱서명 간략요약 (0) | 2018.12.19 |
---|---|
안드로이드 스튜디오 3.2 업데이트 후 문제 발생(Duplicate key) (0) | 2018.11.07 |
Android debuggable Error 이슈 (0) | 2018.06.15 |
안드로이드 배포 관련 변동사항 (0) | 2018.05.30 |
안드로이드 GCM에러 (0) | 2017.10.20 |
RECENT COMMENT