Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
30
Traitement des annotations en Kotlin
Yves Kalume
February 24, 2023
Tweet
Share
More Decks by Yves Kalume
See All by Yves Kalume
Bringing AI to Android With Gemini
yveskalume
0
1
Dompting the Elephant: Making Sense of Gradle for Android Developers
yveskalume
0
11
Practical AI for Android Developers with Android Studio’s AI Agent
yveskalume
0
2
Designing scalable Compose APIs
yveskalume
1
130
Demystifying Memory Leaks in Android
yveskalume
2
120
L’essentiel de Git et Github en max 20 minutes
yveskalume
1
50
Modern Android Architecture
yveskalume
1
94
GDSC Alumni retour d’experience
yveskalume
0
26
Premier pas avec Jetpack compose
yveskalume
0
16
Other Decks in Programming
See All in Programming
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
460
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
110
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
Deno Tunnel を使ってみた話
kamekyame
0
230
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
170
開発に寄りそう自動テストの実現
goyoki
2
1.4k
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
270
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
390
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
410
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
150
愛される翻訳の秘訣
kishikawakatsumi
3
340
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
3.6k
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Statistics for Hackers
jakevdp
799
230k
Amusing Abliteration
ianozsvald
0
69
Leo the Paperboy
mayatellez
0
1.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
51
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Making Projects Easy
brettharned
120
6.5k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
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