기타치는 개발자

[Android]Nougat 버전 대응하기 본문

안드로이드/Android

[Android]Nougat 버전 대응하기

던킨팬더 2016. 9. 13. 15:55

9월 12일날 안드로이드 누가 버전 워크샵 참가한 후 간단히 정리 해보려 합니다. 



구글코리아 양찬석님께서 발표해주신 세션을 듣고 유의깊게 봐야될 사항은 아래와 같습니다. 


    • Multi-Window 지원
    • Display Size 변경가능
    • Extended Doze
    • 브로드퀘스트리시버 (CONNECTIVITY_CHANGE) 메니페스트에 static 하게 선언 불가 


1. Multi_Window 지원 


- 기존 삼성단말에서 지원하던 Multi-Window 가 누가 버전에서는 기본으로 기능이 탑재 됩니다. 

- 기존 삼성단말에서의 Multi_Window 와는 다르게 해당 앱 창이 포커스게 되지 않았을시에 onResume이 타지 않는다고 함.

- 동영상 재생앱 경우 동영상 정지 이벤트를 onPause 가 아닌 onStop 에 하도록 권고 함 


멀티 윈도우 막는 방법

 - target>=24  :   manifest에  android:resizeableActivity=false; 속성 추가

 - target<24 : 기존 가로 세로 고정  추가로 가능 



세미나에서 넥서스 단말기를 대여해주셔서 확인해 본결과 Multi-Window 시에 화면 크기 조절 및 액티비티 전환 시에 onCreate가 계속 호출되는 상황이 있습니다. 해당 상황이 의도한 것이라고도 하셨고 android:configChanges   설정값을 추가하여 개발할수 있습니다. 실제로 화면 크기 조절시에는 orientation 변경된 것과 동일하게 들어 옵니다. 그리하여 android:configChanges="orientation" 속성을 추가하여 처리하게 되고 화면크기를 한 앱 크기를 어느 일정수준이상으로 늘렷을경우 한화면에 앱 하나게 나오게됩니다. 그상황에서는 screenLayout 을 속성을 추가하여 onCreate 호출되는 것을 막을 수 있습니다.   


화면조절시에 레이아웃 조절 같은경우는 좀더 작업을 해봐야지 명확해 질것 같습니다. 하지만 엄청나게 신경싸야되고 그런부분은 없던 것으로 기억합니다. 



2. Display size 변경가능

- 환경설정-디스플레이 메뉴에서 화면 사이즈 변경이 가능합니다.  5단계로 조절이 가능하며 dp 가 변동됩니다. .

- 최소 220dp까지 변경되며 리소스 폴더 관련 관리를 신경 써 줘야 합니다. 


3. Extended Doze 

- Doze 모드는 안드로이드 M버전부터 추가된 기능입니다. 이모드에 들어가는 조건에는 3가지가 있습니다

      • 충전중이지 않으며
      • 핸드폰이 움직이지 않으며
      • 스크린오프상태로  1시간(시간은 정확하지않습니다)
- 위 상황일때  나오게된다. 하지만 Extended Doze 는 강화?? 확장?? 등 의미로 간소화 시킨 Doze 모드이다
- 위에 조건 중 움직이고있으나 사용자가 핸드폰을 15분동안 사용하지 않으면 이 Extended Doze 모드에 들어가게된다. 네트워크가 연결되지 않으며 백그라운드돌아가는 서비스들이 뒤로 밀리게된다 

기존 Doze 모드에 들어가는 것을 강화 시켰으나 실제 Doze모드보다는 제약사항은 약한편이다 아래 사진을 참고.


기존 GCM 에서 메세지 보낼떼 High-priority 설정을 해서 보냈을경우 몇분동안 네트워크 사용가능하다고함


4. BroadCastReceiver static한 CONNECTIVITY_CHANGE 선언(manifest에 선언) 제약

- 기존 CONNECTIVITY_CHANGE 를 메니페스트에 action을 등록하여 리시버로 받아 사용하는 경우가 많다 네트워크 변경됬을때 체크하기위해 많이 사용하게되는데 이상황에서 실제 돌고있는 앱이 아닌 앱들도 리시버등록을 해놓았을대 앱이 다 메모리에 올라와서 메모리 누수가 생기는 경우가 있다고 한다 . 그래서 N 버전부터는 메니페스트에 선언하는 스텍틱한 방법은 지원하지 않으며 런타임에 리시버를 등록해서 사용하도록 권한다


기타 : NEW_PICTURE, NEW_VIDEO 은 지원하지 않는다고한다




기타 : 

  •  File system permision changes ( MODE_WORLD_READABLE/MODE_WORLD_WRITEABLE)
  • "file:// URI" 형태로 file경로는 외부로 전달 불가
  • private NDK libraries 오류(여러 목록이 있지만 눈에 띄는것은 libcrypto.so 정도)
  • 일부 API삭제


제가 하는 프로젝트에 해당되는 것에 대해서만 자세히 적어 보았으며 기타 사항도 여러가지가 있엇습니다.  
기타 사항에 관련해서는 많은 자료들이 있으면 제가 정리하는 것보다 많은 정보를 얻으실 수 있을것 입니다.


읽어주셔서 감사합니다.