Avant le premier cours, vérifiez que votre poste de travail est opérationnel:
Device Manager > Create virtual device choisissez un device avec le triangle du PlayStore, puis une version d'OS Android récentePrenez en main l'IDE: vous pouvez aller dans les paramètres (File > Settings ou Android Studio > Preferences) et personnalisez l'IDE, je vous conseille notamment ceci:
Editor > Inlay HintsEditor > General > Auto Import > Kotlin (en bas) > cocher les 2 casesSettings > Editor > Color Scheme (vous pouvez utiliser ma config avec ⚙ > Import Scheme et ce fichier)🚀 Aidez vous de l'IDE: Android Studio fait beaucoup de travail pour vous donc utilisez l'autocompletion et les raccourcis:
CTRL/CMD + click pour voir les usages ou la définition d'un élémentAlt + Enter pour des "💡 QuickFix" (suggestions de l'IDE)Shift, Shift + "recherche" pour tout le reste (variable, fonction, classe, actions, options, ...)CMD + alt + L ou Alt + shift + L pour reformater correctement tout le code (ou la sélection)val text: String = "hello"
val user: User? = null
class MutableList<T> : List<T> {
// ...
val count: String
override fun add(element: E): Boolean
}
Dans cet exemple:
text est une variable de type Stringuser est une instance de la Class User?User? est une classe nullableUser soit nullMutableList est une classe qui prend un type parameter (ou generic)MutableList hérite de ListList est une interface: on dit que Array implémente Listcount est une variable définie dans une classe: on dit que c'est une propriétéadd() est une fonction qui surcharge une fonction ayant la même signature dans une des ses classes mèreadd() est une fonction définie dans une classe: on dit que c'est une méthodeVoir aussi d'autres notions de Programmation Orientée Objet: cours
Pour prendre en main les bases du langage, avec qq indices:
// on peut "chaîner" les appels nullable avec `?.`:
val email = client?.personalInfo?.email
// pour "interpoler" une variable dans une string on utilise '$'
fun getPattern(): String = """<pattern qui match 2 digits> $month <pattern qui match 4 digits>"""
val isEven = number % 2 == 0 // check division par 2
val lambdaWithExplicitParam = { explicitParam -> explicitParam == 42 }
val lambdaWithImplicitParam = { it == 42 }
data class Person(
val ...
val ...
)
Codelab: Jetpack Compose Basics
Pour continuer voir les autres codelabs Google
Pendant les prochains TP, vous allez créer un projet en binôme que vous compléterez au fil des TPs.
On prends comme base une simple Todo app, mais vous choisirez ensuite un autre sujet que l'on intégrera dans le même projet pour simplifier le rendu. L'objectif est d'utiliser les briques de base suivantes:
Navigation3Retrofit, kotlinx.serialization et kotlinx.coroutines)CoilViewModel, Repository)Et selon le sujet choisi, vous pourrez aussi implémenter:
DataStore ou Room) si l'API permet seulement de GET par exempleWorkManager)TalkBack)Quelques idées d'applications:
Si vous avex un mac et/ou un iPhone (ou juste si ça vous intéresse) on fera du Kotlin Mutliplatform afin de pouvoir lancer votre app également sur iOS !
Exemples d'années précédentes:
Exemples d'API gratuites:
Moins permissives (pas de POST par ex):
Ne perdez pas de temps et passez au TP1 !