안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서
TRANSCRIPT
![Page 1: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/1.jpg)
안드로이드 6.0 마시멜로 targetSdkVersion를 고민하는 개발자를 위한 안내서
양찬석 Developer Advocate, Google
![Page 3: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/3.jpg)
23 올려야 할까요? 말아야 할까요?
![Page 4: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/4.jpg)
6.0 마시멜로의 새로운 기능이 필요하다면?
사용자가 잠자는 동안에도 작업이 진행되어야 한다면?
항상 정확한 시간에 작업이 이루어져야 한다면?
체크리스트 #1
targetSdkVersion을 올려야 합니다!
![Page 5: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/5.jpg)
체크리스트 #2
targetSdkVersion을 올리지 않더라도, 앱을 수정해 재배포 해야합니다.
마시멜로에서 앱을 실행했더니 죽는다면?
강제로 권한을 제거하면 심각한 문제가 발생한다면?
백그라운드에서 WiFi / Bluetooth Scan 작업을 수행해야 한다면?
![Page 6: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/6.jpg)
마시멜로의 새로운 기능
![Page 7: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/7.jpg)
Fingerprint Authentication
지문 인식을 통해 사용자 인증 가능
지문 인식을 위한 전체 UI/UX 플로우 제공
지문 인식 대화 창을 활용하는 샘플코드 Fingerprint and Payments APIs (Video)
![Page 8: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/8.jpg)
App Linking
기존 Deep Link는 사용자가 실행할 앱을 선택 후 앱이 실행 됨
![Page 9: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/9.jpg)
App Linking
새로운 App Linking 을 활용하면,
앱 설치 시 자동으로 등록된 도메인 사이트 인증
이 후에는, 사용자 확인 과정 없이 바로 특정 앱으로 이동
App
Verify
웹 사이트
![Page 10: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/10.jpg)
Voice Interactions
사용자가 마치 대화하는 것 처럼
앱의 특정 기능을 수행할 수 있도록 지원
Voice Interactions Codelab
![Page 11: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/11.jpg)
Direct Share
‘공유하기’를 통해 특정 아이템을 공유할 때,
공유할 앱 뿐만아니라,
특정 대상(예> 주소록 내 사람)을 지정하여 공유 가능
Direct Share 샘플코드
![Page 12: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/12.jpg)
마시멜로 대상으로 앱을 빌드하면 달라지는 것들
targetSdkVersion 23
![Page 13: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/13.jpg)
Runtime Permissions
앱 설치 시 권한 확인 없이 바로 앱 설치/업데이트 가능
앱 실행 중 권한 여부를 확인 한 후 권한 요청 필요
사용자는 설정화면을 통해 언제든지 앱의 권한을 변경 가능
![Page 14: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/14.jpg)
새로운 권한 모델은 ‘Dangerous’ 수준의 권한에만 적용 됨
CALENDAR, CAMERA, CONTACTS, MICROPHONE, LOCATION, PHONE, SENSORS, SMS, STORAGE
Runtime Permissions
Normal 수준 권한은 메니페스트에 선언하면 바로 사용 가능
INTERNET, USE_FINGERPRINT, ACCESS_NETWORK_STATE, RECEIVE_BOOT_COMPLETED, etc…
![Page 15: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/15.jpg)
“설정 > 애플리케이션 > 앱 선택 > 권한”
내 앱이 사용하고 있는 Dangerous 수준 권한 확인하기
체크 리스트
표시되는 권한이 없다면? 축하합니다 : ) Dangerous 수준 권한이 메니페스트에 선언되지 않았고, 앱은 런타임 권한 모델에 영향을 받지 않습니다.
![Page 16: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/16.jpg)
권한 확인
권한 요청 이유 설명
권한 요청
콜백 확인 후 처리
App System
Runtime Permissions Flow
권한 요청을 위한 대화창은 시
스템에서 생성 및 관리 됨
Activtiy LifecCycle에 주의
(onPause / onResume 호출)
![Page 17: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/17.jpg)
권한 확인
권한 요청 이유 설명
권한 요청
콜백 확인 후 처리
App
Runtime Permissions Flow
ContextCompat#checkSelfPermissions
ActivityCompat#shouldShowRequestPermissionRationale
ActivtiyCompat#requestPermissions
OnRequestPermissionsResultCallback #onRequestPermissionsResult
Runtime Permission Sample App 코드를 확인하세요.
![Page 18: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/18.jpg)
google.com/design/spec/patterns/permissions.html
![Page 19: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/19.jpg)
시스템 권한으로 변경된 권한들
다른 앱 위에서 팝업을 띄우기 위해 사용되던
SYSTEM_ALERT_WINDOW 권한과 시스템 설정 값을 강제로 변경하기
위해 사용되던 WRITE_SETTINGS 권한은 더이상 일반적인 방법으로 획
득할 수 없습니다.
고급 권한 설정을 통해
사용자가 직접 변경 가능합니다.
![Page 20: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/20.jpg)
SYSTEM_ALERT_WINDOW 올바르게 처리하기
권한 확인
권한 요청 엑티비티 실행
App
Settings.System.canDrawOverlays()
Start Activtiy ACTION_MANAGE_OVERLAY_PERMISSION action and app package url in data field (eg> package:com.my.app)
onPause onStop
onRestart onStart
onResume
![Page 21: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/21.jpg)
WRITE_SETTINGS 올바르게 처리하기
권한 확인
권한 요청 엑티비티 실행
App
Settings.System.canWrite()
Start Activtiy with ACTION_MANAGE_WRITE_SETTINGS action and app package url in data field (eg> package:com.my.app)
onPause onStop
onRestart onStart
onResume
![Page 22: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/22.jpg)
android { useLibrary ‘org.apache.http.legacy' …}
안드로이드 2.3 이 후 버전 부터는 HttpUrlConnection 사용이 권장 됩니다.
HttpUrlConnection 기반의 오픈 소스 라이브러리 Volley 혹은 OkHttp를 검토해보세요.
Apache Http Client 삭제
ApacheHttpClient 가 꼭 필요하다면 build.gradle 파일에
컴파일 의존성을 추가해주세요.
![Page 23: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/23.jpg)
Access to Hardware Identifier
WifiManager.getScanResults() BluetoothDevice.ACTION_FOUND BluetoothLeScanner.startScan() …
ACCESS_FINE_LOCATION 혹은 ACCESS_COARSE_LOCATION
권한이 없으면 주변 Wifi / Bluetooth 디바이스를 발견할 수 없습니다.
다음과 같은 메서드가 정상적으로 동작하지 않습니다.
![Page 24: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/24.jpg)
23으로 타겟을 올린 후, 멀쩡한 so 파일을 불러올 수 없다면?
Shared library with text relocations
target 23 미만에서는 다음과 같은 경고가 발생하지만, 사용 가능했던 라이브러리는
linker XXX has text relocations. This is wasting memory and is a security risk. Please fix.
target 23 이후는 ‘dlopen(3)’ 오류와 함께 사용 불가합니다.
Shared Library 컴파일 할 때
-fPIC 플래그를 컴파일 옵션에 추가해서 다시 빌드하세요.
![Page 25: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/25.jpg)
그 외 변경/삭제된 API
BrowserBookmark android.provider.Browser.getAllBookmarks() android.provider.Browser.saveBookmark()
Notification Notification#setLatestEventInfo()
AudioManager AudioManager#setStreamSolo() AudioManager#setStreamMute()
![Page 26: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/26.jpg)
기존 앱이라도 꼭 확인 해봐야 할 변화들
targetSdkVersion <= 23
![Page 27: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/27.jpg)
Open SSL 체크 리스트
마시멜로에서 앱이 정상적으로 실행되나요?
![Page 28: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/28.jpg)
안드로이드 6.0부터는 OpenSSL대신 BoringSSL 라이브러리가 사용됩니다.
NDK를 사용하는 경우, OpenSSL 라이브러리에 대해 직접 링크를 연결하지 마세요(예:libcrypto.so 및 libssl.so)
앱이 실행하자 마자 죽는다면? 의심해 보세요.
OpenSSL이 사라집니다
![Page 29: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/29.jpg)
안드로이드 플랫폼 API를 이용해 SSL을 활용할 수 있습니다.
꼭 필요한 경우 앱 패키지내에 Shared Library 파일을 직접 추가하세요. (libssl.so , libcrypto.so)
OpenSSL이 사라집니다
![Page 30: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/30.jpg)
Doze 체크 리스트
만일 여러분의 앱이, AlarmManager를 활용하거나, GCM등 푸시 서비스를 사용하면서,
반복적으로 작업을 수행하거나, 정확한 시간에 특정 작업을 수행해야 한다면...
테스트가 필요합니다!
![Page 31: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/31.jpg)
디바이스는 잠이 듭니다. 아주 깊이 ZZZ...
Doze
만일 오랜 시간 동안 (1시간 정도)
1. 배터리가 충전 중이 아니고 2. 스크린이 꺼져 있고 3. 디바이스가 움직이지 않을 때,
![Page 32: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/32.jpg)
네트워크를 사용할 수 없고,
애플리케이션이 요청한 WakeLock을 무시하고,
AlarmManager, JobScheduler, SyncAdapter를 통해 예약된 작업이 지
연됩니다.
디바이스가 잠이들면...
![Page 33: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/33.jpg)
잠이든 디바이스는...
Doze 모드 중간 중간 미뤄둔 작업을 처리하기 위해 Maintenance 모드에 진입합니다. (약 5분간)
![Page 34: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/34.jpg)
Doze 대응을 고민하기 전에
여러분의 앱은 사용자가 잠자고 있는 동안에도
처리해야할 중요한 작업이 있나요?
예> 알람시계, 실시간 메시징
그렇지않다면, 너무 걱정하지마세요.
사용자가 화면을 켜는 순간 Doze 모드가 바로 종료됩니다.
![Page 35: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/35.jpg)
API Level 23
Doze 와 AlarmManager
Doze 모드에서도 작업이 수행 되어야한다면...
AlarmManager#setAndAllowWhileIdle
AlarmManager#setExactAndAllowWhileIdle 메서드를 사용합니다.
두 메서드 모두 배터리 사용량에 나쁜 영향을 미칠 수 있습니다. 따라서...
Doze 모드가 아니면, >알람은 개별 앱 당, 최대 1분에 한 번 동작합니다.
Doze 모드 상에서는, >알람은 개별 앱 당, 최대 15분에 한 번 동작합니다.
![Page 36: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/36.jpg)
API Level 21
Doze 와 AlarmManager
Doze 모드에서 동작하는 알람 시계를 구현하려면...
AlarmManager#setAlarmClock 메서드를 사용합니다.
AlaramClock이 설정되면...
StatusBar에 아이콘이 표시되고,
설정된 알람 시간 조금 전에 Doze 모드에서 벗어납니다
![Page 37: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/37.jpg)
상황에 맞춰 올바른 API를 사용하세요!
보다 자세한 설명이 필요하면
왼쪽 그림을 클릭! 하세요.
![Page 38: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/38.jpg)
Doze 와 GCM
Doze 모드 일 때, Normal Priority GCM 수신이 지연됩니다.
Doze 모드 중에서도 리얼타임 메세징이 꼭 필요하다면... High Priority GCM 을 사용합니다.
{ "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...", "priority" : "high", "notification" : { "body" : "This week’s edition is now available.", "title" : "NewsMagazine.com", "icon" : "new", }, "data" : { "volume" : "3.21.15", "contents" : "http://www.news-magazine.com/world-week/21659772" } }
![Page 39: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/39.jpg)
Doze 모드 올바르게 대응하기
현재 디바이스가 Doze 모드인지 확인할 수 있습니다.
현재 앱이 Whitelist에 포함되어 있는지 확인할 수 있습니다.
디바이스 IDLE 상태 변화를 확인할 수 있습니다.
PowerManager#isDeviceIdleMode
PowerManager#isIgnoringBatteryOptimizations
ACTION_DEVICE_IDLE_MODE_CHANGED 브로드캐스트 인텐트
![Page 40: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/40.jpg)
배터리 최적화 무시Doze 중에도 네트워크 연결이 꼭 필요한 경우, 사용자에게 특정 앱의 배터리 최적화를 무시
할 것을 요청할 수 있습니다. 하지만 주의하세요. 불필요한 요청은 GooglePlay 정책에 위배
될 수 있습니다.
1. 메니페스트 상에
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 권한 선언
2. 다음 형태의 Intent 생성 후 엑티비티 실행
• ACTION: ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
• DATA URI: package:[app package name]
3. “배터리 최적화를 무시할까요?” 대화창 표시
![Page 41: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/41.jpg)
런타임 권한 체크 리스트
권한 설정에서 강제로 권한을 제거한 후에도 앱이 기대한 방식으로 동작하나요?
![Page 42: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/42.jpg)
런타임 권한
안드로이드 6.0 에서는 23 타겟으로 빌드되지 않은 앱도,
설정 메뉴를 통해 사용자가 앱의 권한을 강제로 제거할 수 있습니다.
사용자에게 위험성을 경고하는 대화창이 표시됩니다.
![Page 43: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/43.jpg)
targetSdk 가 23 미만의 앱에서 API 호출에 필요한 권한이 없는 경우, 안드로이드 플랫폼은 SecurityException 대신 민감한 정보에 접근하지 못하게 API 결과값을 조정합니다.
제거된 권한 메서드 이름 결과
android.permission-group.PHONE getLine1Number() null
android.permission-group.STORAGE Querying MediaStore Empty Cursor
android.permission-group.CAMERA openCamera() CameraAccessException
android.permission-group.CONTACTS Querying Contacts Empty Cursor
런타임 권한
![Page 44: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/44.jpg)
타겟 버전과 관계없이 권한을 갖고 있는지 확인할 수 있는 API가 추가되었습니다.
PermissionChecker#checkSelfPermission
런타임 권한
![Page 45: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/45.jpg)
권한은 사용하지 않을수록 좋습니다.
![Page 46: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/46.jpg)
WiFi / Bluetooth Scan 체크리스트
백그라운드 상에서 WiFi / Bluetooth Scan 작업을 수행하시나요?
![Page 47: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/47.jpg)
주변 디바이스 정보를 활용하면 사용자 위치를 알 수 있습니다.
targetSdkVersion이 23 미만인 경우 Location 권한이 없으면,
WiFi / Bluetooth Scan 작업은 앱이 포그라운드 상에서 동작할 때만
정상적으로 동작하며, 백그라운드 상에서는 동작하지 않습니다.
(빈 리스트를 반환합니다.)
Location 권한이 없는 경우...
![Page 48: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/48.jpg)
안드로이드 개발자 사이트
안드로이드 6.0 API 소개 비디오 플레이리스트
구글 코리아 개발자 블로그
Google Developer Group Korea
GDG Korea Android
OneStore 개발자 센터 블로그
참고자료 / 참고사이트
![Page 49: 안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서](https://reader034.vdocuments.mx/reader034/viewer/2022052116/5888e41c1a28ab87728b4887/html5/thumbnails/49.jpg)
여러분의 앱이 마시멜로에서 잘 동작하길 기원합니다...