티스토리 뷰

안드로이드(Android) OS 업그레이드가 코앞으로 다가왔다. 누가(Nougat)라고 이름 붙여진 N OS도 이제 막바지다. 애로사항이라고 해야할까.. N OS를 작업하면서 있었던 이슈들을 정리해본다.

Multi-window (멀티윈도우, 다중 창 모드)

기존에 제공하던 LGE 자체 분할 윈도우 기능을 들어내고 N OS에서 제공하는 API를 사용하여 적용하였다.

이번 OSU로인해 가장 많은 일을 하게 된 주요 사항이다. 우리처럼 규모가 좀 되는 회사가 아니면 복잡한 UI를 멀티윈도우에 맞춰 개발하기 쉽지 않을 것 같다. 게다가 초기의 developer preview들은 시도때도 없이 오동작을 하여서 개발과 테스트하기가 어려웠고 구글에 대해 이를 갈게 하는 원인이 되었다.

이슈가 너무 많아 나열하기도 어려운데... 몇가지 예를 들자면, 분할된 화면의 비율에 따라 가로/세로 화면이 바뀌고 위 아래로 올라갈 수 있어 각종 팝업의 위치를 재 배열해야 했다. 또한 팝업을 주어진 분할 영역 내에 표시해주어야 하므로 쪼그라들거나 위치가 어색한 경우가 생겨 예쁘지 않았다. 수치를 가변적으로 되도록 세세히 적용하거나 View에 비율에 따라 Scaling을 하는 식으로 모두 맞춰주어야 했다. Full screen으로 제공되는 guide와 같은 경우 맞추기 어려울 것으로 보인다. 

그리고 공유 기능 등으로인해 다른 앱으로 부터 우리 앱이 실행될 경우 분할된 상, 하단에 우리 앱이 한꺼번에 노출될 수 있다. 만약 UI 요소나 기능을 다중으로 동작하지 않도록 구현했다면 문제가 될것이다.

태블릿이나 다른 수많은 해상도에 맞춰 변경해야 할터인데 걱정이다.

스크린 줌(디스플레이 크기)

멀티윈도우만큼은 아니지만 우리를 머리아프게 한 변동사항이다.

기존의 텍스트 사이즈 변경과는 달리 단말기의 density를 직접 변동시키는 방식으로 동작한다. 변경값에 따라 단말기에서 density가 다른 값이 올라오므로 리소스를 읽어오는 대상이 달라진다.

스크린줌과 멀티윈도우를 동시에 동작시키면 시너지를 일으키는데.. 화면이 주체할 수 없이 멋대로 바뀌게 되니 이를 맞추는 것이 골치아픈 일이었다.

컨텍스트 메뉴의 변경

컨텍스트 메뉴는 리스트의 요소들을 Long touch하면 발생하는 팝업을 말하는데, 예전에는 중앙에 위치하도록 했었다면 이제는 터치한 지점을 앵커(anchor)삼아 그 위치에 팝업이 위치해야 한다. 일반적인 방식으로 Activity의 Menu 관련 Callback을 사용했다면 아무 일도 안해도 되었겠지만 커스텀 리스트뷰를 구성했고 팝업 메뉴도 커스터마이징을 했었기에 손이 좀 가게 되었다. 해결을 위해 ContextMenuBuilder를 사용하였는데, 이것이 com.android.internal 내에 있는 클래스라 우리처럼 시스템 앱이 아니면 방법이 없을 듯 하다. 뭐 원론적인 방법으로 구현하면 되었겠지.

File uri 사용 금지

외부에 uri를 전달할 때 File path를 uri 로 전달하면 오류가 발생한다. strict 오류인데 LGE 단말기에서는 모두 Exception이 발생하도록 강제하고 있다. 때문에 File Provider를 거쳐야 하는데 이 경우 Permission을 챙겨줘야 한다. 예를 들어 메모에 첨부된 이미지를 클릭하면 갤러리 앱의 이미지 뷰어가 열리고 메모에서 제공한 uri를 통해 화면에 보여줘야 한다. 갤러리에서 수많은 다른 앱들의 File provider의 permission을 가지고 있을수는 없으므로 보내는 쪽에서 권한을 제공해주어야 한다. 즉 인텐트에 addFlag로 수신하는 Activity stack에서만 유효한 read/write Permission을 부여해주는 방식이다. 받는 쪽에서 이 uri를 가지고 작업을 하는데 그 Activity stack이 살아있는 동안만 유효하여 만약 new task등을 하여 다른 Activity로 전달될 경우 유효하지 않게 되어버린다. 주의할 점이다.

다중 로케일

한번에 하나의 언어만 고를 수 있었다면 이제는 여러 언어를 설정하고 우선순위를 바꾸는 방식으로 변경되었다. 앱이 내가 설정한 언어에 대해 번역된 텍스트를 제공하지 않으면 우선순위에 의해 다음 언어의 텍스트가 로딩된다. 직접 수정한 것은 없었지만 이러한 수정으로 인해 Locale change가 더 자주 발생할 수 있을 것으로 보여진다. 언어 변경에 의한 앱의 오동작은 안드로이드 태초부터 지긋지긋하게 이슈로 나오고 있다. 이제는 언어 외에 방언을 고를수도 있어서.. 세계화를 목표로 한다면 골치가 아플것이다.

풀 다운 옵션메뉴 동작 변경

앱의 우 상단의 메뉴 버튼을 누르면 풀 다운 옵션메뉴가 발생한다. 만약 이 메뉴가 길다면 아래로 주욱 늘어지게 되는데 IME가 보여지고있을 때 동작이 좀 달라졌다. M OS까지는 IME가 있다면 그 위에 메뉴를 노출한다. 그러나 N OS부터는 메뉴가 IME를 덮지 않고 IME에 의해 메뉴가 가려진 것 처럼 보여진다. 대신 메뉴가 스크롤이 된다. 만약 앱 구현시에 메뉴 버튼을 누르면 IME를 숨기도록 했었다면 메뉴가 중앙에서 IME 높이만큼 잘려나가 보여지므로 수정해야한다.

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday