안드로이드 앱 성능 최적화 #2 안드로이드 디바이스 랩 만들기 |
이 글은 “안드로이드 앱 성능 최적화” 의 일부 내용만 정리한 것입니다.
자세한 내용은 책을 구매하여 보세요~
-
구글에서는 전 세계적으로 활성화된 안드로이드 기기가 14억 대가 넘었다고 발표했다.
전 세계에 보급된 전체 스마트폰의 80% 에 해당하는 수치이다.
-
TestDroid 의 연구에 따르면 상위 20% 기기를 테스트해보려면 12대의 기기가 필요하다.
50% 를 테스트해보려면 최소 60대의 기기가 필요하다.
미국 시장으로 한정하더라도 66% 를 테스트해보려면 25대의 기기가 필요하고
90% 정도를 테스트해보려면 128대의 기기가 필요하다고 하다.
2.1. 고객들은 어떤 기기를 사용하나요
-
2016년 9월 기준 킷캣(KK)은 27.7%, 젤리빈(JB)은 15.6%, 롤리팝(Lollipop) 은 35%, 마시멜로우(Marshmallow) 는 18.7% 사용자가 사용한다.
아이스크림 샌드위치(ICS)는 1.4%, 진저브래드(GB)와 프로요(Froyo) 는 약 1.6% 를 차지한다.
그러나 이 자료는 지역이 반영되지 않은 자료라는 것을 참고해야 한다.
2.2. 기기 성능 분류
-
진저브레드는 최소 128MB 의 램과 2GB 의 저장장치를 필요로 한다.
이를 최소 스펙 기준으로 사용하는데, 이런 스펙의 기기를 아직도 흔히 찾아 볼 수 있다.
일부 기기는 카메라가 없기도 하고, 일부 기기는 전면에만 카메라가 달려있기도 하고, 일부 기기는 후면에만 달려있기도 하다, 물론 둘 다 있는 경우가 가장 많다.
NFC, 온도센서, 가속도 센서, 기압계 등 센서들의 유무도 각기 다 다르다.
2.2.1. 화면 크기
-
화면이 점점 커지는 추세에도 불구하고 여전히 해상도 480 X 320 이하를 사용하는 사용자도 2014년 2분기 기준 약 2~5% 정도가 있다.
남아프리카 지역의 사용자 17% 는 240 X 320 해상도 폰을 사용하고 있다고 한다.
따라서 하나 또는 두 개의 작은 화면을 가진 기기를 추가로 구비해두는 것이 좋다.
2.2.2. SDK 버전
-
젤리빈부터는 스크롤과 렌더링을 더욱 부드럽게 하고 쟁크(jank)를 없애는 것을 목표로 한 프로젝트 버터(Project Butter)가 적용되었다.
킷캣부터는 프로젝트 스벨트(Project Svelte)가 반영되어 OS 구동하는데 요구되는 최소 메모리의 크기가 512MB 로 줄었다. ( 킷켓에 256MB 로 출시되는 기기들도 있다. )
롤리팝에서는 배터리 소모를 줄이는 프로젝트 볼타(Project Volta)가 적용되었다.
2.2.3. CPU/메모리와 저장장치 용량
-
2014년 10월 기준 인도에서 가장 많이 사용하는 상위 두 개 기종은 512MB 메모리와 4GB 저장공간, 싱글 코어 CPU, JB OS 를 사용하고 있었다.
중국이나 미국이나 유럽은 진저브레드가 구동되는 싱글 코어 하이엔드 기기의 인기가 많다.
2.3. 고객들은 어떤 네트워크를 사용하나요
-
북미(특히 도심지)에서는 약 97% 가 LTE 등 4G 네트워크에 연결되어 있다고 한다.
서유럽은 약 83% 이며, 타지는 점점 더 떨어진다.
3G 조차 보급되지 않은 지역도 많고, 여전히 2G 네트워크를 사용하는 지역도 많다.
따라서 글로벌 출시를 계획하고 있다면 다양한 네트워크에서 앱을 테스트 할 준비가 되어 있어야 한다.
2.4. 당신의 기기는 고객의 기기와 다릅니다.
-
cf) 앱 개발자로서 앱이 루팅된 기기에서 구동될 수 있다는 것을 예상해서 루팅된 장치에서 발생 가능한 보안 관련 문제들에 대해 대비해두어야 한다.
사용자는 루팅을 통해 보호된 영역이나 심지어 저장하지도 않았던 메모리 내 민감한 정보까지도 접근 할 수 있다.
루팅된 ROM 들은 보통 SuperSU 라는 앱이 설치되어 있다.
이 앱은 앱과 커널 간의 연결 통로 역할을 한다.
-
cf) 개발자/엔지니어링 빌드는 루팅의 하위 집합이다.
루팅 관련 커뮤니티에서는 이러한 빌드를 “안전하지 않은” 빌드라고 부른다.
이것들은 기본적으로 디버깅 옵션이 켜져 있고, 디바이스의 보안이 해제되어 있기 때문이다.
엔지니어링 빌드에서는 기기에 설치되 있는 모든 앱에 디버거를 붙일 수 있다.
이것은 매우 강력한 옵션이며, 안드로이드 개발자에게는 매우 유용한 기능이다.
반면, 많은 안드로이드 앱에게는 루트 액세스에 의해 악화되는 큰 보안 홀이라고 할 수 있다.
-
cf) 일부 지역에서 장치를 루팅하는 것은 법적/저작권 영향을 받을 수 있다.
미국 내에서는 저작권 침해에 해당하지 않아 안드로이드 폰(테블릿은 허용되지 않음) 루팅은 현재 합법이다.
2.5. 테스팅
2.6. 디바이스 랩 구축하기
-
앱이 정상적으로 구동되는지 확인하는 유일한 방법은 가능한 많은 화면과 다양한 구성에서 테스트해보는 것이다.
이를 위해 테스트를 위한 안드로이드 디바이스 랩이 필요하다.
-
디바이스 랩은 복잡한 충전 케이블과 데이터 케이블이 얽혀 있는 단순 서랍장이 될 수 있다.
이 방식은 보안 유지의 장점이 있지만, 단점이 더 많다.
랩을 이용하는데 물리적 한계가 많이 발생하고, 원격 테스트도 어렵다.
그래서 사용자에게 보안에 관한 서약을 받은 후 이용할 수 있도록 하는, 열린 공간의 디바이스 랩이 더 추천된다.
-
테스트를 위한 기기를 구할 때, 예산을 넘기지 않으면서 사용자의 폭 넓은 스펙트럼을 확보하는 것이 중요하다.
이미 마켓을 통해 앱을 배포했다면 앱 통계 정보는 고객들이 사용하는 기기를 분류하는 데 큰 도움이 될 수 있다.
2.6.1. 기기를 사는 데 몇백만 원이 필요하다고요?
-
에뮬레이터들은 매우 느리고, 센서들 대부분을 사용할 수 없기 때문에 에뮬레이터에 의존하는 것은 비추다.
-
다음 parameter 들을 고려해서 테스트 폰들을 선정하면 된다.
화면 크기, 화면 밀도(xxhdpi 등), 프로세서(쿼드 코어 등), 메모리, 네트워크 속도, SDK 버전, 기타(루팅 여부, 보안 테스트, OEM 별 차이)
2.6.2. 그래서 어떤 기기를 선택해야 하나요?
-
과거의 인기 기기, 2년, 3년, 4년 전의 인기 모델들도 오래된 기기 분류에 포함되는 기기를 선택하는 데 좋은 기준이 된다.
이들에 대해서는 중고폰을 구매하거나, 그들의 스펙에 상응하는 현 시점에 구할 수 있는 기기들을 구매해도 좋다.
-
오늘 날의 인기 기기는 자체 앱 통계 분석 결과와, 온라인 내 다양한 통계자료에 기반하면 좋다.
-
2014년에 가장 많이 사용된 기기는 2012년 출시된 삼성 S3, 그리고 2011년 1분기에 출시된 삼성 S2 도 여전히 상위 10위 차트에 남아 있다.
이는 대중적으로 큰 인기가 있었던 기기들이 얼마나 오랫동안 그 영향력을 유지하는지 보여준다.
-
미래의 인기 기기, 넥서스 기기들은 보조금 지급이 되지 않아서인지 판매량과 사용자 수가 적다.
그러나 신규 운영체제 업데이트를 가장 먼제 제공받기 때문에 보유하는 것이 좋다.
2.6.3. 휴대폰 이외의 기기들
-
안드로이드는 태블릿, 웨어러블, TV, 자동차 등의 추가 생태계를 꾸리며 진화하고 있다.
필요한 기기들도 준비해두면 좋다.
2.6.4. 안드로이드 오픈소스 프로젝트( AOSP ) 기반 기기들
-
2014년 여름 기준 안드로이드에서 갈라져 나온 AOSP 를 기반 기기는 전체 시장의 20% 정도로 추정되었다.
이 기기들은 다음의 구글 서비스들이 포함되지 않는다.
앱 배포를 위한 구글 플레이 스토어
구글 클라우드 메시징
구글 플레이 서비스
구글 제품 및 앱
대표적인 기기는 “아마존” 의 기기들, “반스앤노블” 의 누크 태블릿, 중국의 샤오미를 비롯한 OEM 업체들, 인도의 OEM 업체들
2.6.5. 기타 옵션들
-
웹 인터페이스를 통해 실제 장치에 대한 액세스를 제공하는 온라인 서비스들이 있다.
Testdroid, Appurify, Perfecto Mobile, Keynote 등이다.
이 서비스들을 통해 테스트용 스크립트를 구동시키거나, CI 를 통해 지속적 테스트를 할 수도 있다.
이런 서비스들을 이용하는 것이 “반드시” 테스트 비용을 줄여준다고 말 할 수는 없다.
또한 물리적으로 기기를 다루지 못하므로 속도 저하나 성능 문제를 눈으로 직접 확인하지 못하고 테스트 결과에 의존해야 하는 문제가 있다.
-
구글 I/O 2015 에서 구글은 거의 모든 브랜드와 모델, 각각의 운영체제 버전을 사용하는 물리적인 기기를,
모든 언어별, 기기의 가로 및 세로 방향별, 다양한 네트워크 상태별 등의 다양한 조합을 통해 테스트를 원격으로 구동할 수 있는 서비스를 발표했다.
테스트가 포함된 apk 를 업로드하면 자동으로 상위 20개의 안드로이드 기기에서 테스트가 진행된다.
-
공공 디바이스랩(ODL, Open Device Lab) 이 있다.
테스팅을 하기 위한 기기들을 제공하는 공동체 참여 디바이스 랩이다.
주변에 ODL 이 없다면 새롭게 시작해보는 것도 좋다.
2.6.6. 추가 고려 사항
-
기기를 구하는 것 외에 준비해야 할 것들이 있다.
모든 기기에 전원을 충분히 공급할 수 있는 USB 허브
모바일 기기들만을 위한 사설 와이파이 네트워크
사용 후에는 방드시 공장 초기화를 하고 실수로 운영체제 업그레이드 하지 않기
각각의 기기에 적합한 케이블과 충전기
2.6.7. 나만의 디바이스 랩
2.7. 결론
-
안드로이드 기기는 정말 다양하다.
엔터테인먼트, 여행이라는 새로운 분야로도 성장하고 있다.
안드로이드는 계속해서 성장해 나갈 것이다.
폰, 태블릿, 자동차, TV, 시계, 선글라스 등에서도 앱이 잘 동작하도록 만들기 위해서는 정말 헌신적인 노력과 많은 테스트가 필요하다.
참고가 되는 기기들의 라이브러리를 잘 구성해두고 테스트를 할 때 이를 활용하면서 사용하면 다양한 기기에서 앱의 성능을 최적화할 수 있고 이로 인해 고객들을 더 행복하게 만들 수 있다.
그리고 결국에는 더 많은 고객을 얻게 될 것이다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[도서 정리] 안드로이드 앱 성능 최적화 #4 화면과 UI 성능 개선하기 (0) | 2018.06.25 |
---|---|
[도서 정리] 안드로이드 앱 성능 최적화 #3 하드웨어 성능과 배터리 수명 (0) | 2018.06.24 |
[도서 정리] 안드로이드 앱 성능 최적화 #1 안드로이드 성능 입문 (0) | 2018.06.22 |
[android] Secure Coding Guide (0) | 2018.05.24 |
[android] Collection of Open Source Library (aos) (0) | 2018.05.15 |
댓글