Android Knowledge
by Danny Sun
1. Persistence
1.1. SharedPreferences
1.2. SQLite
1.2.1. Room
2. Architectures
2.1. MVP
2.1.1. VIPER
2.2. MVVM
2.2.1. Data Binding
2.2.2. ViewModel
3. IDE
3.1. Android Studio
3.1.1. Instant Run
4. Testing
4.1. UI Testing
4.1.1. Espresso
4.2. Unit Testing
4.2.1. JUnit 4
4.2.2. Mockito
4.2.3. PowerMockito
4.3. Test Coverage
4.4. Flaky Tests
5. A/B Testing
5.1. Leanplum
5.2. Firebase
6. Publish
6.1. Libraries
6.1.1. Jitpack
7. Jetpack
7.1. Google Maven Repository
7.2. Sunflower Demo
7.3. Android KTX
7.3.1. MVVM
7.3.1.1. LiveData
7.3.1.2. ViewModel
8. Layout
8.1. ConstraintLayout
8.2. AsyncLayoutInflater
9. Version Control
9.1. Git
9.1.1. Merge vs Rebase
10. Dependency Injection
10.1. Dagger 2
10.1.1. Module
10.1.2. Component
11. Reactive Extensions
11.1. RxJava
11.1.1. RxKotlin
11.1.2. RxAndroid
11.1.3. RxBinding
11.1.4. RxJava 2
11.1.4.1. Emitter
11.1.4.2. Creating Observables
11.1.4.3. Threading
11.1.4.4. Subject: a fusion of an Observable and a Subscriber
12. Debugging
12.1. Android Studio Debugger
12.1.1. Watches
12.1.2. Attach debugger to process
12.2. Window VQA
12.3. Charles Proxy
12.3.1. Charles Enterprice License
12.3.2. Map Local
12.3.3. Edit Response
12.3.4. Charles License
12.3.5. Rewrite
12.4. Logcat
12.4.1. Timber
12.4.2. Hugo
12.5. Stetho
12.6. Flipper
13. CI/CD
13.1. Jenkins
13.2. TeamCity
14. Performance
15. Monitoring
15.1. Fabric
15.1.1. Crashlytics
15.2. Datadog
15.3. Google Analytics
16. Coding Style
16.1. Kotlin
16.1.1. Android Kotlin style guide
16.2. Say no to Hungarian notation
17. Compatibility
17.1. Support Library
17.1.1. collections