Android
Contents
- 1 Android
- 1.1 See Also
- 1.2 Android
- 1.3 Android Developper
- 1.3.1 Java for Android
- 1.3.2 Kotlin for Android
- 1.3.3 C/C++ for Android
- 1.3.4 Material Design
- 1.3.5 AndroidX & JetPack
- 1.3.6 Android SDK Documentation
- 1.3.7 facebook SDK for Android
- 1.3.8 Google Codelabs
- 1.3.9 Android Training
- 1.3.10 Android Tutorials
- 1.3.11 Mongo DB
- 1.3.12 Android Architecture Components
- 1.3.13 Android Dev Tools
- 1.3.14 Android documentation
- 1.3.15 Android Blogs
- 1.3.16 Android books
- 1.3.17 Android Articles
- 1.4 Android Topics
- 1.4.1 Android App Bundle
- 1.4.2 API level and OS releases
- 1.4.3 Android Application architecture guide
- 1.4.4 Application() object
- 1.4.5 Android LifeCycle Cheat Sheets
- 1.4.6 Android Jetpack
- 1.4.7 Android Manifest
- 1.4.8 Android Releases
- 1.4.9 Android X
- 1.4.10 Activities
- 1.4.11 Animations
- 1.4.12 Buttons
- 1.4.13 Broadcast Receiver
- 1.4.14 Connectivity
- 1.4.15 coroutines
- 1.4.16 Data-Binding
- 1.4.17 Data and File storage overview
- 1.4.18 Deprecated
- 1.4.19 Device running and debugging
- 1.4.20 Intents
- 1.4.21 Devops corner
- 1.4.22 Gradle
- 1.4.23 Lifecycle, activities and fragment, architecture component, jetpack, android X
- 1.4.24 LiveData, architecture component, jetpack, android X
- 1.4.25 Layout and Bindings Expression
- 1.4.26 Layouts
- 1.4.27 Android Library /Module Repository local or remote you managed
- 1.4.28 Life Cycle, Transformation Maps and Bindings Expression
- 1.4.29 Fragments
- 1.4.30 Media , Formats etc...
- 1.4.31 Navigation, architecture component , Android JetPack
- 1.4.32 Parcelables
- 1.4.33 Permissions
- 1.4.34 Resources
- 1.4.35 Room, architecture component , Android Jetpack
- 1.4.36 room and coroutines
- 1.4.37 RecyclerView RecyclerViewAdapter
- 1.4.38 Samples on github
- 1.4.39 Shared Preferences
- 1.4.40 SQLite
- 1.4.41 Type Mismatches
- 1.4.42 Snackbar , MaterialUI
- 1.4.43 Text Appearence
- 1.4.44 Testing
- 1.4.45 Vibrator API
- 1.4.46 View Binding
- 1.4.47 Work Manager
- 1.5 Android Studio
- 1.6 Android on Youtube
- 1.7 Android Trainnings
- 1.8 Android NDK
- 1.9 Android Wear
- 1.10 Android TV
- 1.11 Android Car
- 1.12 Android Things (IOT)
- 1.13 Android on Chrome OS
- 1.14 Android AOSP
- 1.15 Android Devevelopment
- 1.15.1 a Few Libraries of Interest
- 1.15.1.1 ButterKnife
- 1.15.1.2 SQLDelight
- 1.15.1.3 JSON
- 1.15.1.4 Moshi
- 1.15.1.5 Workflow
- 1.15.1.6 Picasso
- 1.15.1.7 I/O Libraries
- 1.15.1.8 ExoPlayer
- 1.15.1.9 Dagger / Dagger 2
- 1.15.1.10 Koin
- 1.15.1.11 Kodein
- 1.15.1.12 kTor
- 1.15.1.13 tornadoFx
- 1.15.1.14 Timber
- 1.15.1.15 RxJava for Android
- 1.15.1.16 Splitties
- 1.15.1 a Few Libraries of Interest
- 1.16 Android Game Developement
- 1.17 Google Play Store
- 1.18 Android Testing
Android
Opensource Technology Android wiki pages (OTA)
List of links of interest on project
Goal is to keep & share knowledge on android technologies
See Also
- Android
- AndroidAOSP
- AndroidNDK
- AndroidGoogleAPIs
- AndroidGooglePlayServices
- AndroidGooglePlayConsole
- AndroidDevices
Android
Desiging for Android
Android Developper
Java for Android
Kotlin for Android
- Kotlin
- https://kotlinlang.org/docs/reference/properties.html
- https://demonuts.com/category/kotlin-android-tutorial-example/
- [kotlin coroutines https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md]
- [kotlin CodeLabs https://codelabs.developers.google.com/codelabs/kotlin-android-training-repository/#0]
- Kotlin with style
C/C++ for Android
Material Design
AndroidX & JetPack
Android SDK Documentation
https://developer.android.com/reference/android/view/View
facebook SDK for Android
Google Codelabs
a lot of coding labs to show many implementation of features
Android Training
- https://developer.android.com/courses
- https://developer.android.com/courses/advanced-training/toc
- https://developer.android.com/courses/fundamentals-training/overview-v2
Android Tutorials
- https://www.vogella.com/tutorials/android.html
- https://guides.codepath.com/android
- https://code.tutsplus.com/categories/android-sdk
Mongo DB
Android Architecture Components
- https://developer.android.com/jetpack/docs/guide
- https://android-developers.googleblog.com/2017/05/android-and-architecture.html
- https://developer.android.com/topic/libraries/architecture/index.html
- https://upday.github.io/blog/model-view-controller/
- https://upday.github.io/blog/model-view-presenter/
- https://upday.github.io/blog/model-view-viewmodel/
- https://docs.microsoft.com/fr-fr/xamarin/xamarin-forms/enterprise-application-patterns/mvvm
- https://github.com/android/architecture-samples
- https://github.com/android/architecture-samples/tree/todo-mvp-rxjava
- https://github.com/android/architecture-samples
- https://github.com/android/plaid
- https://github.com/android/sunflower
- https://github.com/android/architecture-components-samples/tree/master/GithubBrowserSample
- https://github.com/google/iosched
- https://github.com/google/santa-tracker-android
- https://github.com/chrisbanes/tivi
Model-View / ViewModel
Android Dev Tools
Android documentation
Android Blogs
- https://guides.codepath.com/android
- https://code.tutsplus.com/categories/android-sdk
- https://www.greenbot.com/
- https://proandroiddev.com
- https://www.survivingwithandroid.com
- https://medium.com/androiddevelopers
- https://programmingwithmosh.com/
- https://www.chillcoding.com
Android books
Android Articles
Android Topics
Android App Bundle
An Android App Bundle is a publishing format that includes all your app’s compiled code and resources, and defers APK generation and signing to Google Play.
API level and OS releases
Android Application architecture guide
Application() object
- https://developer.android.com/reference/android/app/Application
- http://www.ltm.fr/android-surcharger-la-classe-application-dandroid/
Android LifeCycle Cheat Sheets
- https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-i-single-activities-e49fd3d202ab
- https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-ii-multiple-activities-a411fd139f24
- https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-iii-fragments-afc87d4f37fd
- https://medium.com/androiddevelopers/the-android-lifecycle-cheat-sheet-part-iv-49946659b094
Android Jetpack
Android Manifest
- everything in the android doc is there : https://developer.android.com/guide/topics/manifest/manifest-intro
errors on manifest when you build
- android:exported required in activity targeting Android 12 and Higher
- full text is
"android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details."
<activity android:name=".MainActivity" android:screenOrientation = "portrait" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
- to change into
<activity android:name=".MainActivity" android:screenOrientation = "portrait" android:exported="true" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
- we have to set once the build target is equal or superior to Android 12 (API level 31 ) and the activity owns <intent-filter>
- android:exported="true" , the activity is exported
- android:exported="false", the activity is not exported
Android Releases
- last : Android 12, API Level 31 https://developer.android.com/about/versions/12
- Android 11 , https://developer.android.com/about/versions/11
- Android 10, https://developer.android.com/about/versions/10
- Android 9, "Pie", https://developer.android.com/about/versions/pie
- Android 8, "Oreo", https://developer.android.com/about/versions/oreo
- Android 7, "Nougat", https://developer.android.com/about/versions/nougat
- Android 6, "Marshmallow", https://developer.android.com/about/versions/marshmallow
- Oldest version supposed by Google App Compatibility Lib
- Oldest Target For Architecture Component (Android Jetpack)
- ALL : https://developer.android.com/about/versions
Android X
Activities
Animations
Buttons
Broadcast Receiver
Connectivity
- https://developer.android.com/guide/topics/connectivity
- https://developer.android.com/training/basics/network-ops
Connecting
coroutines
- https://medium.com/androiddevelopers/easy-coroutines-in-android-viewmodelscope-25bffb605471
- https://medium.com/androiddevelopers/coroutines-on-android-part-ii-getting-started-3bff117176dd
- https://medium.com/androiddevelopers/coroutines-on-android-part-iii-real-work-2ba8a2ec2f45
- https://kotlinlang.org/docs/reference/coroutines-overview.html
- https://codelabs.developers.google.com/codelabs/kotlin-coroutines/#0
- https://kotlinlang.org/docs/reference/coroutines-overview.html
- https://kotlinlang.org/docs/reference/coroutines/coroutine-context-and-dispatchers.html
- https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-dispatchers/index.html
- https://medium.com/androiddevelopers/exceed-the-android-speed-limit-b73a0692abc1
- https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-job/
- https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/launch.html
- https://kotlinlang.org/docs/reference/returns.html#return-at-labels
- https://developer.android.com/reference/androidx/core/text/HtmlCompat
Data-Binding
articles
- https://medium.com/androiddevelopers/android-data-binding-library-from-observable-fields-to-livedata-in-two-steps-690a384218f2
- https://medium.com/androiddevelopers/data-binding-lessons-learnt-4fd16576b719
sample codes
- https://github.com/android/databinding-samples
- https://codelabs.developers.google.com/codelabs/android-databinding/#0
Data and File storage overview
- https://developer.android.com/training/data-storage/files.html#WriteInternalStorage
- https://developer.android.com/training/data-storage/room
Deprecated
stuff that is deprecated by API levels, and how to replace that stuff ( this is a never-ending work , just started so there is only a few stuff)
Android kotlin extensions are deprecated
Kotlin synthetics deprecated use view binding see viewBinding
view binding is no more "synthetic" but require data binding from jetpack
ViewModelProviders.of() is deprecated, how should I create object of ViewModel?
don't :
grade : implementation 'androidx.core:core:1.1.0' kotlin :boardViewModel = ViewModelProviders.of(this).get(BoardViewModel::class.java)
do:
grade : implementation 'androidx.core:core:1.2.0' // and upper versions viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
and if your MyViewModel is having parameters then use a Factory:
val factory = MyViewModelFactory(myParam) viewModel = ViewModelProvider(this, factory).get(MyViewModel::class.java)
where MyViewModel is something like
class MyViewModel(myParam: Int) : ViewModel() { ... }
and Its Factory something like:
class MyViewModelFactory(private val myParam: Int) : ViewModelProvider.NewInstanceFactory() { @Suppress("UNCHECKED_CAST") override fun <T : ViewModel> create(modelClass: Class<T>): T { return MyViewModel(myParam) as T } }
Best is with last Android SDK API using the by ViewModels() injection one the level grants it
// Use the 'by viewModels()' Kotlin property delegate // from the activity-ktx artifact private val model: NameViewModel by viewModels()
//note: this is available only from an activity or a fragment
Using by viewModels()
more to be provided
by activityViewModels()
more to be provided
- guess ( still need to be verified ) :
- activityViewModels() is meant to be used when you have to share a model in between several fragments inside an activity, in that case the model is owned by the activity
- ViewModels() work for both fragment and activity', but the model is not explicitly shared, and owned by the fragment
- see
WebView setAppCache is deprecated in API level 30
- preparing to App Cache removal
- https://web.dev/appcache-removal/
Device running and debugging
activate your device to run an app on it
- https://developer.android.com/studio/run/device
- https://developer.android.com/studio/debug/dev-options.html
NB: sometime on a specific phone maker layer above Android legacy the "about the phone" can be located in a different system panel e.g. OnePlus is having it own about the phone panel replacement.
Intents
Common Intents
Devops corner
automatic code checking
- https://proandroiddev.com/automating-analyzing-of-code-in-android-projects-a60313569c53
- https://pmd.github.io
- https://errorprone.info
- https://developer.android.com/studio/write/lint
- https://detekt.github.io/detekt/
- https://www.sonarqube.org
- https://github.com/SalomonBrys/ANR-WatchDog
Gradle
- there is a Gradle plugin in Android Studio current is 7.01
- there is a Gradle tool current is 7.2
- both do not have the same version
- sometime, actually soon or later, android studio is going to propose you to add a Gradle wrapper
- this is actually creating a local gradlew tool for your project ,
you can then use ./gradlew in place of gradle in the terminal for the project to insure to run the correct version for your project it is done adding a Gradle-wrapper.properties
- Anytime, Android is going to propose you to upgrade Gradle plugin , it will actually provide you with a view within build panels at the bottom where it will tell you what is going to change
you have to valid the changes to make ( it hapens pressing above button) else you will think you upgraded but actually until you tell so, you did not
- you can edit your grable file by hand ( typing text)
- you can edit your gradle file using the android studio /file/ project settings dialog...
you may encounter several errors at build time
- bad "Source option"
Task :app:compileDebugJavaWithJavac FAILED error: Source option 5 is no longer supported. Use 6 or later. error: Target option 1.5 is no longer supported. Use 1.6 or later. Source option 5 is no longer supported. Use 6 or later. Target option 1.5 is no longer supported. Use 1.6 or later.
this has do with the java compiler version and the JVM
compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' }
in the setting dialog it is on the modules section source and target be aware that there a pop up menu , unfortunately it does not provide you with only the correct value for exemple you can select an environment variable , for me it was a $kotlinversion set to 1.5.30 unfortunately the JVM to use was JDK and JVM 11
by not having the correct JVM and JDK version, and so, the wrong java compiler and environment, you may get errors in java generated source code . you should never edit these generated files but understand what is going wrong most of the time android studiowill tell you what to do , sometimes not then goggle search engine is your best friend or your colleagues or me ;)
gradle project setting dialog
- it lists all the modules your integrated in your project in Dependencies
you can update to newer version by changing it
- it provides you with suggestions for modules version to upgrade to
BUT sometime it is just wrong you should remember the previous version in case of issues in order to go back
- note that android studio is also providing such suggestions in the pop up menu that is shows near by the text when mouse cursor is above the text
JVM
JAVA
Kotlin
- https://github.com/Kotlin/kotlin-style-guide
- https://github.com/Kotlin/kotlin-script-examples
- https://github.com/Kotlin/kotlin-native-calculator-sample
- https://github.com/Kotlin/kotlin-fullstack-sample
- When to use with, let, apply, also, run
Lifecycle, activities and fragment, architecture component, jetpack, android X
- https://developer.android.com/topic/libraries/architecture/lifecycle
- https://developer.android.com/jetpack/androidx/releases/lifecycle#declaring_dependencies
- https://developer.android.com/topic/libraries/data-binding/architecture#livedata
LiveData, architecture component, jetpack, android X
- https://developer.android.com/topic/libraries/architecture/livedata
- https://developer.android.com/reference/kotlin/androidx/lifecycle/LiveData
- https://www.youtube.com/watch?v=2rO4r-JOQtA
Layout and Bindings Expression
- https://developer.android.com/topic/libraries/data-binding/architecture
- https://developer.android.com/topic/libraries/data-binding/expressions#resources
Data Binding Sample
Layouts
- https://developer.android.com/guide/topics/ui/declaring-layout
- https://developer.android.com/guide/topics/ui/declaring-layout#kotlin
- https://developer.android.com/guide/topics/ui/layout/linear
- https://developer.android.com/guide/topics/ui/layout/relative
- https://developer.android.com/reference/android/support/v7/widget/GridLayout
- https://developer.android.com/guide/webapps/webview.html
- https://developer.android.com/reference/androidx/constraintlayout/widget/ConstraintLayout.html
- https://developer.android.com/reference/android/text/Layout
- https://developer.android.com/studio/debug/layout-inspector
layout in Material
- https://material.io/design/layout/understanding-layout.html#usage
- https://material.io/design/layout/responsive-layout-grid.html#columns-gutters-margins
Layout resources
- https://developer.android.com/guide/topics/resources/layout-resource
- https://developer.android.com/reference/android/R.layout
reusing layouts
trainings on layouts
- https://developer.android.com/training/tv/start/layouts
- https://developer.android.com/training/wearables/ui/layouts
- https://developer.android.com/training/improving-layouts/optimizing-layout
- https://developer.android.com/training/multiscreen/screensizes
- https://developer.android.com/training/constraint-layout
samples on layouts
Android Library /Module Repository local or remote you managed
- building a repo using a Gitlab project , the maven lrepo will be hosted by gitlab with a token access
- https://proandroiddev.com/creating-a-private-maven-repository-for-android-libraries-on-gitlab-91137c402777
- https://docs.gradle.org/current/userguide/declaring_repositories.html
- https://gist.github.com/adrianbk/c4982e5ebacc6b6ed902/
- https://ryanharter.com/blog/2015/06/hosting-a-private-maven-repo-on-amazon-s3/
- https://guides.codepath.com/android/Building-your-own-Android-library
- https://docs.gitlab.com/ee/user/packages/maven_repository/
- https://jeremyfiggins.com/2021/05/26/publishing-and-using-library-modules-with-gradle-intellij-and-gitlab/
- https://proandroiddev.com/creating-a-private-maven-repository-for-android-libraries-on-gitlab-91137c402777
- building a local module library to be used by code inside the Android studio Project
Life Cycle, Transformation Maps and Bindings Expression
- https://developer.android.com/reference/kotlin/androidx/lifecycle/Transformations#map(androidx.lifecycle.LiveData,%20androidx.arch.core.util.Function)
- https://developer.android.com/reference/kotlin/androidx/lifecycle/Transformations#switchMap(androidx.lifecycle.LiveData,%20androidx.arch.core.util.Function)
- https://developer.android.com/reference/kotlin/androidx/lifecycle/MediatorLiveData
Fragments
- https://medium.com/androiddevelopers/fragment-transitions-ea2726c3f36f
- https://developer.android.com/reference/android/app/Fragment
Media , Formats etc...
- https://developer.android.com/guide/navigation
- https://developer.android.com/guide/navigation/navigation-getting-started
- https://developer.android.com/guide/navigation/navigation-design-graph
- https://developer.android.com/guide/navigation/navigation-swipe-view
- https://developer.android.com/guide/navigation/navigation-navigate
- https://developer.android.com/guide/navigation/navigation-migrate
Parcelables
the android way to serialize object into a bundle of key , value pairs
once an object is parcelized we can add it as an object with a key into a bundle
Bundle for exemple used to save /restore state of an application when asked to do so (See Activity lifecycle)
- https://developer.android.com/guide/components/activities/parcelables-and-bundles
- https://developer.android.com/reference/android/os/Parcelable
- https://developer.android.com/reference/kotlin/android/os/Parcel
Permissions
- https://developer.android.com/guide/topics/permissions/overview
- https://developer.android.com/training/permissions/requesting
- App permission best Practices, https://developer.android.com/training/permissions/usage-notes
- https://developer.android.com/guide/topics/permissions/default-handlers
- https://developer.android.com/guide/topics/permissions/defining
Resources
App Resources
Available Resources Types
More Resources types
String Resources
Adding resources in Android Studio
- https://developer.android.com/studio/write/add-resources
- https://developer.android.com/guide/topics/permissions/default-handlers
Room, architecture component , Android Jetpack
- https://developer.android.com/topic/libraries/architecture/room
- https://developer.android.com/reference/android/arch/persistence/room/Room
- https://developer.android.com/reference/android/arch/persistence/room/Dao
- https://developer.android.com/reference/android/arch/persistence/room/package-summary#annotations
- https://developer.android.com/reference/android/arch/persistence/room/PrimaryKey.html
- https://developer.android.com/reference/android/arch/persistence/room/Entity
- https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo
- https://developer.android.com/training/data-storage/room/defining-data.html
- https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0
- https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0
- https://codelabs.developers.google.com/codelabs/android-persistence/index.html?index=..%2F..%2Findex#0
- https://developer.android.com/training/data-storage/room/creating-views
- https://developer.android.com/training/data-storage/room/migrating-db-versions
- https://developer.android.com/training/data-storage/room/testing-db
- https://developer.android.com/training/data-storage/room/referencing-data
- https://developer.android.com/training/data-storage/room/index.html
- https://developer.android.com/reference/android/arch/persistence/room/RoomDatabase
- https://developer.android.com/reference/android/arch/persistence/room/Database
- https://developer.android.com/reference/android/arch/persistence/room/RawQuery
- https://developer.android.com/reference/android/arch/persistence/room/RawQuery
- https://en.wikipedia.org/wiki/Singleton_pattern
- https://en.wikipedia.org/wiki/Factory_method_pattern
- https://developer.android.com/jetpack/docs/guide#separation-of-concerns
- https://kotlinlang.org/docs/reference/object-declarations.html#Companion-Objects
- https://developer.android.com/training/data-storage/room/migrating-db-versions
- https://medium.com/androiddevelopers/understanding-migrations-with-room-f01e04b07929
- https://medium.com/androiddevelopers/testing-room-migrations-be93cdb0d975
room and coroutines
RecyclerView RecyclerViewAdapter
- https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter
- https://en.wikipedia.org/wiki/Adapter_pattern
- https://developer.android.com/guide/topics/ui/layout/recyclerview
- https://github.com/googlearchive/android-RecyclerView
a Sample from Google
- https://developer.android.com/reference/androidx/cardview/widget/CardView.html
- https://developer.android.com/guide/topics/ui/layout/cardview.html
ListAdapter, DiffUtil
- https://developer.android.com/reference/android/support/v7/recyclerview/extensions/ListAdapter.html
- https://developer.android.com/reference/android/support/v7/recyclerview/extensions/AsyncListDiffer.html
- https://developer.android.com/reference/android/support/v7/util/DiffUtil
Samples on github
save key-value data
SQLite
- https://www.sqlite.org/index.html
- https://www.sqlite.org/lang.html
- https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase
- https://developer.android.com/reference/android/arch/persistence/room/Dao
Type Mismatches
list weid type mismatch and possible way to solve it
On Edit Text, you cannot assign a String ??
- Type mismatch.
Required: Editable Found: String
editText.text = String
- why ?
When generating a synthetic property for a Java getter/setter pair Kotlin first looks for a getter. The getter is enough to create a synthetic property with a type of the getter. On the other hand the property will not be created if only a setter presents.
When a setter comes into play property creation becomes more difficult. The reason is that the getter and the setter may have different type. Moreover, the getter and/or the setter may be overridden in a subclass.
- use setText accessor (the best solution)
Use setText(String), since editText.text expects an Editable, not a String.
- cast the EditText as Text View
(binding.userName as TextView).text = "oh"
- build an Editable object from the string
fun String.toEditable(): Editable = Editable.Factory.getInstance().newEditable(this) mEditText.text = myString.toEditable()
Snackbar , MaterialUI
Text Appearence
Testing
Vibrator API
View Binding
NOTE : Android Kotlin extensions are deprecated so you have to migrate from Kotlin Synthetics to Jetpack view binding
note an older pre- viewbinding , binding solution is, among others, Butterkinife
Work Manager
- https://medium.com/androiddevelopers/introducing-workmanager-2083bcfc4712
- https://developer.android.com/topic/libraries/architecture/workmanager
- https://developer.android.com/topic/libraries/architecture/workmanager/basics
- https://developer.android.com/reference/androidx/work/Worker
work manager google codelab
Android Studio
- https://fr.wikipedia.org/wiki/Android_Studio
- https://developer.android.com/studio/index.html
- https://developer.android.com/studio/intro/index.html
Android on Youtube
Android Trainnings
- UDACITY
- Developping Android Apps
- Developping Android Apps with Kotlin (architecture Components)
- Developping Android Apps with Java
- https://www.udacity.com/courses/all
- [https://www.udacity.com/course/gradle-for-android-and-java--ud867
- https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905
- UDEMY
Android NDK
Android Wear
Android TV
Android Car
Android Things (IOT)
Android on Chrome OS
Android AOSP
Android Harware
Android Architecture
AOSP
Building
repo
git repositories
- https://android.googlesource.com/?format=HTML
- https://android.googlesource.com/platform/frameworks/support/
Android Devevelopment
a Few Libraries of Interest
ButterKnife
a deprecated by viewBindings (see focuses section) for bindings
SQLDelight
JSON
Moshi
a JSON Parser lib in kotklin and java
Workflow
a finite state machine for swift and kotlin
Picasso
an imaging and caching library
I/O Libraries
okio
A modern I/O library for Android, Kotlin, and Java.
RetroFit
a HTTP client for android and Java
- https://square.github.io/retrofit/
- https://square.github.io/retrofit/2.x/retrofit/index.html?retrofit2/http/Query.html
- https://github.com/square/retrofit
OkHttp
a Http lib , efficient , modern ,
OwnCloud
ExoPlayer
ExoPlayer is a media player library developed by Google.
Dagger / Dagger 2
a java dependency injection for android obsolete prefer koin or kodein (see below)
- https://proandroiddev.com/dagger-2-on-android-the-simple-way-f706a2c597e9
- https://dagger.dev
- https://github.com/google/
Koin
a kotlin dependency injection for android
Kodein
a kotlin dependency injection for android
kTor
have to be move to the kotlin page
a client server dev toolkit with kotlin
tornadoFx
have to be move to the kotlin page
a JavaFx toolkit for kotlin
Timber
a Log Extension Utility Library
RxJava for Android
RxJava bindings for Android for RxJava2 RxAndroid: Reactive Extensions for Android
Splitties
a collection of small libraries that can be added individually not limited to Android , but to kotlin even if currently most are only targeting Android
Android Game Developement
- https://developer.android.com/games
- https://android-developers.googleblog.com/search/label/Games
- https://developer.android.com/newsletter#games-quarterly
- https://medium.com/googleplaydev/tagged/game-development
- https://playacademy.exceedlms.com/student/catalog
Google Play Store
Android Testing
https://developer.android.com/training/testing/fundamentals
https://developer.android.com/training/testing/index.html https://developer.android.com/training/testing/integration-testing/index.html https://developer.android.com/training/testing/unit-testing/local-unit-tests.html https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html
tools https://developer.android.com/studio/test/command-line.html https://developer.android.com/studio/test/monkeyrunner/index.html https://developer.android.com/studio/test/monkey.html https://source.android.com/devices/tech/debug/dumpsys.html
UI Testing https://developer.android.com/training/testing/ui-testing/index.html https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html https://google.github.io/android-testing-support-library/docs/uiautomator/
testing support library https://google.github.io/android-testing-support-library/ https://developer.android.com/topic/libraries/testing-support-library/
testing display performance https://developer.android.com/training/testing/performance.html
testing a service https://developer.android.com/training/testing/integration-testing/service-testing.html
testing a content provider https://developer.android.com/training/testing/integration-testing/content-provider-testing.html
testing -samples https://github.com/googlesamples/android-testing
testing templates https://github.com/googlesamples/android-testing-templates
CodeLab Testing android app https://codelabs.developers.google.com/codelabs/android-testing/index.html#0
testing and debugging with android studio https://www.youtube.com/watch?v=2I6fuD20qlY