Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Traitement des annotations en Kotlin
Search
Yves Kalume
February 24, 2023
Programming
1
19
Traitement des annotations en Kotlin
Yves Kalume
February 24, 2023
Tweet
Share
More Decks by Yves Kalume
See All by Yves Kalume
Designing scalable Compose APIs
yveskalume
1
70
Demystifying Memory Leaks in Android
yveskalume
2
77
L’essentiel de Git et Github en max 20 minutes
yveskalume
1
32
Modern Android Architecture
yveskalume
1
75
GDSC Alumni retour d’experience
yveskalume
0
18
Premier pas avec Jetpack compose
yveskalume
0
8
Flutter et Firebase
yveskalume
0
9
La modularisation dans le développement Android
yveskalume
0
9
Other Decks in Programming
See All in Programming
いつか使える ObjectSpace / Maybe useful ObjectSpace
euglena1215
2
140
Using Livebook to build and deploy internal tools @ ElixirConf 2024
hugobarauna
0
250
The Shape of a Service Object
inem
0
520
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.6k
How to Break into Reading Open Source
kaspth
2
210
REXML改善のその後
naitoh
0
190
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2k
令和トラベルにおけるLLM活用事例:社内ツール開発から得た学びと実践
ippo012
0
210
AndroidアプリのUIバリエーションをあの手この手で確認する / Check UI variations of Android apps by various means
tkmnzm
1
170
watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編
oniak3ibm
PRO
0
180
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
410
Crafting Cross-Platform Adventures: Building a Game Engine with Kotlin Multiplatform
dwursteisen
0
120
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
30
2.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
19k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
89
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
322
23k
The Invisible Side of Design
smashingmag
295
50k
Teambox: Starting and Learning
jrom
131
8.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
GitHub's CSS Performance
jonrohan
1030
450k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
41
6.5k
Web Components: a chance to create the future
zenorocha
308
42k
Transcript
Traitement des annotations en Kotlin Yves Kalume (@kalumeyves) Développeur Mobile
@Composable fun HomeScreen() @OptIn(ExperimentalPagerApi.:class) @Devscat @SuppressWarnings("deprecation") @Deprecated @Configuration @Autowired Annotation
Processing
Une annotation permet au programmeur d'intégrer des informations supplémentaires dans
un code source.
Déclaration d’une annotation annotation class Devscast @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.SOURCE)
Utilisation d’une annotation @Devscast class Foo(val id: Int, val name:
String) fun main() { val annotations = Foo.:class.annotations print(annotations) ./ [] une liste vide... pourquoi ? }
Kotlin Symbol Processing (KSP)
KSP en action dependencies { implementation("com.google.devtools.ksp:symbol-processing-api:1.8.10-1.0.9") }
src/main/resources/META-INF/services/
Fournisseur de processeur class DevscastProcessorProvider : SymbolProcessorProvider { override fun
create( environment: SymbolProcessorEnvironment ): SymbolProcessor { return DevscastProcessor(environment) } }
Processeur class ListedProcessor( private val environment: SymbolProcessorEnvironment ) : SymbolProcessor
{ override fun process(resolver: Resolver): List<KSAnnotated>{ ./ traitement } }
val result = resolver.getSymbolsWithAnnotation( Devscast.:class.qualifiedName.toString() ) ./ ... return result.filterNot
{ it.validate() }.toList()
Prêt à être utilisée
dependencies { implementation(project(":lib") ) ksp(project(":lib")) } android { kotlin {
sourceSets.debug { kotlin.srcDirs += 'build/generated/ksp/debug/kotlin' } sourceSets.release { kotlin.srcDirs += 'build/generated/ksp/release/kotlin' } } }
Merci ! Yves Kalume - @kalumeyves Développeur Mobile