[안드로이드] google io recap
2018 google io recap with android (in kakao)
구글 IO를 정리하자면 크게 5가지 꼭지로 볼 수 있다. 새로운 안드로이드의 기능과 안드로이드 스튜디오, 머터리얼 디자인, 플레이 콘솔의 새로운 기능, 인스턴트앱, Chrome OS를 위한 Android App이다.
Quick Links:
- What’s New in Android
- Material Design
- Play console New Feature
- Android App Bundle
- Android for ChormeOS
What’s New in Android
Key Word : bettery, slices View, actions with google accistant, notification, Notch Design, compatibility, pre profile tools, androidx
dapte bettery remoteView -> slices - (특정 뷰만 사용할 수 있도록) actions- 머신러닝에서 실행 시켜딜 수 있음(슬라이스를 제공기능)
notification - 이미지를 바로 추가 애니메이션 추가 특정 노티피케이션에 대해 서제스트 추가 블로킹 기능 - 같은 노티에 대해 여러 차례블록한다면 추천 해줌 차단할까라고 물어봄
컷아웃( 노치) 스테이터스바 사이즈 하드코딩만 안하면 되!!! 노치는 스테이터스바 높이가 달라질 수 있음 풀스크린 - 스테이터스 바크기만 큼 짤라서 전체 크기가 달라짐 (노치사이즈만 큼 줄어듬) 그러므로 사이즈 하드코딩을 조심해야함
호환성 - 프라이빗 api사용 불가 - 리플렉션 금지 퍼블릭으로 모두 사용 가능해야한다 타겟sdk 26이상으로 에뮬레터 빨라짐 크롬 os 도 실행 가능!!
파이어베이스에서 머신러닝 기능 중에 몇 거지를 클라에서도 쓸 수 있게 추가되어짐.
빠르고 쉽게 android 개발하기
개선된 사항들 정리
- 이전Profile your code 성능 평가 툴
- 측정에 걸리는 시간이 많아서 실제 시간보다 부풀려 보이는 시간이 있음.
- 개선 -> 안드로이드 스튜디오 내부에 완전히 통합. 시간도 축소
- Layout design
- constraintLayout이 나오기 시작해서 툴로 작업하는게 좀 편하게 되었다.
- Runtime & langeue
- 새로운 runtime ART 가 나옴
- 메모리가 부족해서 gc를 돌려하는 그런 작업을 최소화
- 기존 언어는 자바로 선정했고 1.8까지만 지원
- 코틀린으로 공식언어로 지원
- Lib & api
- layout
- Abs , linear, frame, grid, relative 등등을 썼는데.
- Abs 쓰지말고 절대!!!
- Linear 간단한 구조에만
- Frame okay
- Grid 비추!
- Relative 쓰지말고 -> constratint
- Adapter views
- listView/ gridView / Gallery
- -> recycler view
- fragment
- 복잡해.. 업데이트 불가능..?
- Frmagnet는 support에서 사용!!
- activitiy
- 이제는 하나의 액티비티에서 여러 프래그먼트를 사용하는 방식으로
- context를 유지하는 방향으로
- achitecture
- 이제는 지원!
- Architecture component를 추천 반드시 사용하진 앙ㅎ아도도
- lifeCycle
- 아키텍쳐 컴포넌트의 라이프사이클 라이브러리를ㄹ 사용한느 방법으로
- Implements 해서 사용
- activity와 lifecycle을 분리할 수 있음
- data
- Room!
- layout
- Android jetpack
- 안드로이드 앱에 좋은앱을 만드는데 필요한 가이드 와 라이브러리
- androidx
- Support lib의 새로운 장!
- 컴포넌트 별로 분리해서 사용!
- 28.0.0 -> 1.0.0으로 다시 내려서 필요한 부분만 하는
- 마이그레이션 툴을 지원해주고 있음.
- Refactor 메뉴에서 리소스, 그래이들, 소스 까지 전부 커버
- Sql 코드를 짤 때 지원 https://developer.android.com/jetpack/
Material Design
- 내가 알고 있는 종이, 질감, 지우개 등등을 익숙한 아날로그를 그냥 디지털로 옮기자해서 만들어짐
- 크로스 플랫폼을 할 수 있도록 지향
- 머터리얼 디자인이라하면 컴포넌트라 할 수 있다.
- 엠티 스페이스나 로그인 액션에 대한 가이드 까지. 지원 자세하게!
- Https://material.io/
- 릴리즈가 빈번해서 번역이 크게 의미가 없기 때문!
- 새로운 툴 런칭! - 시안에 소스도 지원!
- 크.. 예쁘다 조아조아
- Workflow ->product -> components
- 뭐가 새로워 졌냐!
- 홈페이지가 좋아졌어 ㅋㅋㅋㅋ귀엽..
- Design, develop, tools 3가지메뉴
- 디자인!
- 각 회사에 대한 브랜드에 맞춰 하는 부분!
- 머터리얼 파운데이션
- 테마 , 왜 나왔는지 등등을 학술적으로 설명
- 계층구조
- 머터리얼 한글, 한문 등을 지원할 수 있도록!
- 머터리얼 가이드
- 에셋에 대한 길이 부터 소스코드까지!
- 와.. 개예뻐..
- 디벨롭!
- Github - > material components
- 전부 공개!
- tools
- 가장 직관적인 아이콘만! 애매한건 다뻄
- 컬러를 선택하면 가장 잘 어울리는 색을 골라줌ㅋㅋㅋ 미쳤다
- 에디터
- 디자인 -> 개발자 소스 sketch의 플러그인 형태!
- 갤러리는 협업하는 스튜디오
- 앱바가 아래로 내려와써…..! 오른손으로 하는데 위에는 불편!
- 백드롭!
- Relevant immediate
- Youtube.com/googledevelopers
Play console New Feature
- Release
- Prelaunch report
- 실제 디바이스로 미리 테스트를 할 수 있도록
- 아 이거구나!
- 지금은 디자인 관련한 부분도 테스트가 가능
- 사이닝에 대한 기능이 필요한 부분ㅇ ㅣ많은데, 정보를 주면 이것도 테스트 가능
- 딥링크 - 딥하게 들어가있는 기능을 바로 테스트 가능하도록
- 자바스크립트 부터 시작해서 로봇 크롤러가의 일을 지정해줌
- Testing
- 인터널하게 테스트할 수 있게 하는 트랙이 필요해서 만들어짐
- 최대 100명까지 테스트를 할 수 있도록 할 수 있고, 좀더 빠르고 쉽게 공유 가 가능
- 알파 혹은 배타테스트는 배포하고 대기가 필요함
- 인터널은 api의 지원을 받고 있다
- Play features
- Closed testing
- Create closed track
- 이제는 무한대로 가질 수 있다!
- usage
- 국가의 특정적인 부분을 활용 가능
- Open TEsting
- 클로즈 한 후에 오픈하게 되는데, 더 많은 피드백을 받고 있겠죠.
- 오픈테스팅을 통해서 특정 커뮤니티 안에 있는 사람들..?
- 테스트 사용자 수 조절
- 특정 나라에서 테스트 가능
- rollout
- 프로덕션단계
- 프로새스 간소화
- Staged rollout
- 점진적으로 진행해서 진행
- 퍼센테이지 별로 진행
- Release
- 크래시나 이러
- 퍼블리싱 api
- 새로운 테스트 트랙이 포함되어 있고
- 릴리즈를 멈출 수 있다.
- Draft releases 가능
- Prelaunch report
- Craft better
- 안드러ㅗ이드 마이트
- 배터리, 안정성, 랜더링
- 새로운 기능 셋업타임과 퍼미션
- 배터리
- 여러 기능이 있음
- stability
- Crash reate
- rendering
- 싱글 프레임에서 얼마나 시간이 걸리는지 !
- App start time
- 퍼미션
- 유저들이 퍼미션 허락을 해줬는지 안했는지.
- 카테고리 밴치마크
- 같은 카테고리에서 다른 앱에 비해 어느정도 인지 확인가능
- 전체적으로 어떻게 perform을 볼 수 있다.
- Core vitals
- 중요한 정보들을 모아서 볼 수 있는 정보
- 무언가 문제가 생긴다면 맨위에 강조해서 보여줄거임
- 나쁜 기능이 생기기 전에 감지해서 할
- 이슈 감지와 같은 부분은 이메일로 날려줌.
- Make better decisions
- 더 나은 비즈니스 결정
- 유저 라이프 사이클에서 결정을 내리는 것이 중요하다.
- Awesome acquisition
- 수익. 창출하는 유저와 그냥 유저가 있음
- 그래서 고객을 확보하거나 수익을 내기 우,ㅣ해서 어떻게 해야하는지
- 유저의 진입점부터 어떻게 유지가 되는지 볼 수 있음.
- 어떻게 플레이스토어에서 접근하게 되었는지 알 수 있음. (브라우징, 검색 등)
- 유입 전략을 세울 수 있음
- 30일 유지
- Revenue optio
- 수익 최적화!!!
- 서브스크립션 레포틀르 만듦
- 리텐션이나 취소 삭제등을 알 수 있도록 업데이트 함
- 집단에서 테스트를 해보고 2개의 그룹을 만들어서 무료 체험 / 유료 체험 테스트하고 결과를 확인가능
- 어떤 고객들이 이탈이 되는지 알 수 있음.
- 유저로부터의 인사이트 제공
- 윙백 유저
- 뉴앱 대시보드
- 라이브로 반영되고 있는 정보드를 확인할 수 있다.
- 대시보드 커스텀 가능
- 결론
- 프리런치를 통해 안정적
- 크래프트 배터를 통해서 유저에게 나은 유엑스르 할 숭 ㅣㅆ고
- 메이ㅏ커 배터를 통해서 회사에 더 나은 수익을 낼 수 있도록. 할 수 있었다 감사!
Android app bundle
- 이걸 통해 안드로이드 앱을 줄일 수 있는
- 퍼플리싱 방법과 이를 통해 어떻게 서빙할 수 있는지도 확인해보자
- App bundle format
- 앱번들은 퍼블리싱 용도고 설치가 안됨.
- 최종 apk에 들어가지 않음.
- 버퍼 포맷으로 바뀜.
- 바이너리로 바꾸기 전에 그런 방법이 있음.
- 파일 타겟팅이 잘 할 수 있음.
- File tartgeting
- 어떤 유저한테 어떤 파일이 가야 하는지가 결정
- 그들이 필요한 파일만을 제공 그러므로 용량이 줄어듦.
- Fr - French 불어 사용자에게
- Asset targeting
- 언어와 같이 필요한 assets만 제공.
- Serving
- Split apks
- 여러 개 apk가 나뉘어져 있음.
- 하나하나가 apk포맷임
- 설치가 되고 나면 하나의 앱으로 동작.
- 동일한 키로 사인이 되어야 함
- 만드는 방법
- 커먼한 것은 base에 들어감
- 그리고 필요한 부분을 split으로 나눔
- Dpi / x86 / fr,en …
- 어떻게 유저에게 활용하나
- 전부 서빙하는게 아니라 필요한 부분만 날리다
- 이럴 때 플레이 스토어는 포트 기술이 있다.
- 추가로 필요한 부분은알아서 네트워크 사황일 때 깔아줌
- 롤리팝이상일 때 가능
- 그 이전엔 앱번들은 pre l device라 함
- 앱번들을 만들고 스플릿을 만들고 하는 부분은 알아서 적용됨.
- Split apks
- Size savings
- 멀티 apk를 만들 필요가 없고
- 앱의 사이즈를 세이브 할 수 있음
- Building the android app bundle
- 안드로이드 스튜디오
- 빌드메뉴 들어가서 create bundle을 ㅁ나들면됨 $./gradlew modulename : ***
- Budle block에서 disable가능
- ㅇㅇㅇ
- 구글플레이에서 릴리즈 키를 가지고 있어야한다.
- 이를 릴리즈 키를 가지고 여러 스플릿으로 사이닝을 하게 되고 배포가 된다.
- 테스트를 하고 싶다면 resigning하지 않아도돔
- 작은 유저와 테스트를 할 수 있게 지원
- 에전처럼 릴리즈 하고,
- apk와 번들읆 모두 드래그 가능
- 플레이가 다시 해줌
- Publishing api
- 퍼블리싱 pai는 모두 지원
- 어떻게 app bundle을 테스팅하는지
- 인터널 테스트 트랙
- 어떤 지연이 없고 바로 테스팅 가능.
- Bundle tools
- 워크 플로우에 통합하기 쉽다
- Universe apk 을 만들기쉽다. 모든 디바이스를 지원할 수 있도록
- GitHub/google/bundletool
- 인터널 테스트 트랙
- modularzation
- 피처에 따라서 모듈화 할 수 있는기능 제공
- 피처에 따라서 빨간색으로 표기해주고 바로 설치가 되지 않도록
- 이를 나누는데 많은 사람이 사용? 많은 용량을 차지? 이걸 기다릴 수 있는?
- base는 항상 있고
- app_recipe모듈
- vr_viewer모듈이 있다
- 각각은 모두 같은 구조로 배이스와 각각 hdpi와 같은 것들ㅇ ㅣ별도로 존재
- creating a dynamic feature
- onDemand feature
- 메니페스트에서 ondemand= true로 사용 피처 모듈로 빼낸 후에
- 새로운 라이브러리를 만듦(playCoreLibrary -java)
- 스플릿인스톨 매니저를 통해서 리퀘스트를 만들 수 있고 삭제도 가능
- 일부 큰 모듈과 같은 부분은 유저의 확인이 필요!
- Deferred install이라는 기능이 있는데 추가적인 모듈이 설치가 될 수 있다.
- 여러가지 모드가 있다.
- 모듈은 앱버전과 동기화가 된다.
- 결론
- 다 만들었고 가이드는 만들고 있다.
Android for ChormeOS
- 크롬북 os의 특징
- 스크린이 넓고
- 가로모드
- 멀티 윈도우가 가능
- 입력방식이 키보드 마우스 터치팬으로 기능
- 크롬 os의 새로운 기능
- 태블릿 모드가 개선되었음
- 제목 푷시줄이 숨겨지고
- 화면 분할모드가 추가
- 9월부터 안드로이드 vitural 키보드도 지원가능
- 노티도 많이 정리가 되어서 안드와 비슷한 제공
- 어떤 것들을 하면 될까?
- 데스크탑을 위한 앱같은 느낌을 줘야한다
- 그러기 위해서 제공해줘야하는 단축키와 화면 디자인
- Layout xml항목에 지정해야한다.
- 작업표시줄에 대한 정리
- Shelf integration 폴더로 만들
- 앱 숏컷(바로가기
- 뒤로가기 버튼은 생성하지 않아도 됨. 크롬이 기본적으로 생산
- Lifetime management
- 카카오톡이 돌고 있는데 게임하고 있다면
- 중지된 상태에서도 메시지가 올라와야 맞는다.
- 근데 오히려 이것 떄문에 다운의 위험ㅇ ㅣ있다면 권고 하지 않겠다.
- Shared data
- 드래그앤 드롭해서 데이터를 세ㅜ어할 수 있다
- 정상적인 데이터읹 ㅣ체크해야한다 받을때
- 리사이징
- 반응형 디자인과 동일한 구조넹ㅋㅋ크크ㅡ
- 특정 사이즈에 맞춰서 구조를 바꾸는건가
- constratintLayout state 파일을 만들어야한다.
- 모든 레이아웃이 다 포함되어야 한다.
- oncreat에서 어떤걸 전환할 건지에 대해 설정해야한다.
- 자세하게 알려주면 GitHub,co
- 멀티 디스플레이
- 최대 7개 화면까지도 지원이 가느
- Android 5 이후의 버전으로 display default를 설정하지 말아야한다.
- 하지말아아ㅑ함
- 베스트 케이스
- 안드로이드 스튜디오에서 크롬 os애뮬레이터 테스트 가능——–
- usb를 통해 adb 디버깅이 가능.
- 리눅스가 크롬북에서 돌아감
- Chrome안에 android . linux가 돌아갈 수 있다.
- 리눅스와 Android 를 연결할 수 있다.