Basic
- 기본 App 만들기
- Toast & Log 출력
- App categories
- SharedPreferences로 데이터 저장
- SharedPreferences에 ArrayList를 저장
- 앱 데이터 폴더 경로 및 내부/외부 저장소
- Adaptive Icon
- Adaptive Icon 만들기
- Handler 사용 방법
- Intent의 이해(1)
- Intent의 이해(1)
- NotificationListener로 Notification 정보 받기
- DownloadManager로 파일 다운
- 앱 퍼미션 확인
- Runtime permission 요청
- 커스텀 퍼미션을 정의
- Notification 등록
- Assets에서 파일을 읽는 방법
- 저장소에 파일 저장, 읽기
- Parcelable으로 데이터를 전달
- SAF(Storage Access Framework)
- App 설치, 삭제
- 앱 설치, 삭제 이벤트 수신
- 설치된 앱 리스트
- Launcher 화면에 보이는 앱 리스트
- App 실행 기록(UsageStatsManager)
- 설치된 App의 버전 확인
- StorageStatsManager로 App 크기 계산
- Storage의 크기 및 여유 공간
- Screen On/Off 이벤트 수신, 상태 확인
- 시간, 날짜 변경 이벤트 받기
- 시간 정보 가져오기
- 진동(Vibration) 발생시키기
- App Shortcuts
- 네트워크(WIFI) 연결 상태 확인
- Quick Settings에 Custom Tile 추가
- AlarmManager로 알람 등록
- WakeLock
- XmlResourceParser로 XML 파싱
- GPS, Network 위치 (LocationManager)
- GPS, Network 위치 (PlayService Library)
- Settings Pannel
- PlayStore 앱 설치(다운로드) 화면으로 이동
- 파일의 MimeType(확장자) 가져오기
- JSON 파일 Parsing
- Drawable -> Bitmap, Bitmap -> Drawable 변환
- MultiDex
- Uri, Scheme, SSP
- 지원되는 System Feature 확인
- UID, GID와 Security
- FBE와 Direct boot 이해
- Darkmode 활성화
- Handler와 Executor 비교
- Mainline, APEX
- 디바이스 발열 상태 모니터링
Activity
- 다른 Activity 실행
- Activity Lifecycle
- Activity Back Stack
- 실행가능한 Activity인지 확인하기
- Activity를 Full screen으 로 만들기
- Background Activity 실행 제한
Service
- AIDL로 Remote Service 구현
- 다른 앱의 Service에 바인딩
- Messenger로 Remote Service 구현
- IntentService
- JobIntentService
- JobService, JobScheduler
- Foreground Service 실행
Content Provider
Broadcast Receiver
Android 변경사항
View & Widget
- View와 ViewGroup
- RelativeLayout
- LinearLayout
- ConstraintLayout
- Button, TextView
- Autosizing TextView
- RecyclerView
- DataBinding
- Spinner
- Prefrerence
Jetpack
- LiveData
- ViewModel
- Lifecycle
- Lifecycle 프레임워크 코드 분석
- Navigation
- Navigation Drawer 구현
- Room
- WorkManager
- Paging
- Jetpack을 사용하는 예제
Tips
- Android 소스 다운로드 및 빌드
- WIFI로 adb 연결
- 쉘 명령어로 안드로이드 emulator를 실행
- Non-SDK 인터페이스는 제한 정책
- Apk 파일 decompile
- Android App Bundle로 Apk 크기 줄이기
- Android Studio에서 so Library 추가
- 앱이 32/64bit 기기에서 동작하게 만들기
- Samsung Odin 다운로드
- boot.img의 커널, 램디스크 수정
- systrace로 성능 분석
- Kotlin Coroutine
- Platfom key로 App 서명(Signing)
- custom framework.jar로 빌드
- Emulator에서 adb remount
- Native(C++)에서 Call stack 출력
- adb로 프로세스, 쓰레드 & 메모리 정보 확인
- Java 코드를 DEX로 변환하는 방법
- 앱의 SQLite DB 테이블 확인
- Call stack 출력
- adb shell input 명령어
- AIDEGen으로 IDE에서 Framework 개발
- BuildConfig 정보 읽기 및 상수 추가