《做個另類 Kotlin 開發者:從零入門 Kotlin 編譯器插件.pdf》由會員分享,可在線閱讀,更多相關《做個另類 Kotlin 開發者:從零入門 Kotlin 編譯器插件.pdf(30頁珍藏版)》請在三個皮匠報告上搜索。
1、Kotlinkotlin|Developed by JetBrains 另類的Kotlin開發者:從零Kotlin編譯器插件惠勤前情提要本次介紹將圍繞 K1 技術內容為主講者介紹 惠勤 FAANG 2yrs 前iOS軟體程師(6yrs+)故事是這樣的.公司罕的作機會5-10年的未來展望欣賞新興語的便利,想嘗試貢獻為什麼會有這樣的?Monorepo上千萬的程式碼分散式運算處理援內部系統與敝司的Android開發者攻擊與守備範圍Build SpeedAPK SizeNull SafeCode Modification(量並且動化)Android LintMixed compilation入門Kot
2、lin編譯器般Android開發者視.ktAndroid StudioGradleKotlin Compiler.javaCompiler界也分前後端窺看Compiler前端反向解碼反向解碼技能樹該怎麼點Kotlin 語法特性/Java爬Code-開源程式碼JVM-Class file formatABI(Application Binary Interface)-Decompile Psi Elements(K1)ASMAnnotation Processors-KAPT/KSPBytecode/DEX常具與參考獻Kotlin playgroundJetBrains/Kotlin https
3、:/godbolt.org/PsiViewerJavapKotlin-compile-testingKotlin poet如何不用Gradle開發內部原理使用 kotlinckotlinc hello.kt-include-runtime-d hello.jar java-jar hello.jarhttps:/kotlinlang.org/docs/command-line.htmlBuck/BazelDebuggingjava-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005-jar hello.jarDeb
4、ugging簡易KCP開發入門ExtensionsCompile and run your plugin librarykotlinc-cp kotlin-compiler-embeddable.jar plugin.kt-include-runtime-d plugin.jar kotlinc-Xplugin=plugin.jar sources.kt Unit testingkotlin-compile-testing val result=KotlinCompilation().apply sources=listOf(kotlinSource,javaSource)/pass your
5、 own instance of a compiler plugin compilerPlugins=listOf(MyComponentRegistrar()commandLineProcessors=listOf(MyCommandlineProcessor()inheritClassPath=true messageOutputStream=System.out .compile()DemoKotlin v1.9.21kotlinc kotlin-compiler-embeddable開發編譯器插件的挑戰非官方正式 API 維護困難:每次Kotlin版本升級都會是一個挑戰與其他插件相容性必要時需客製化添加補丁並重新打包 Kotlin compiler 原始碼K2將會是一個重構後的架構,許多K1 plugin將不復存在開發前請三思推薦閱讀Kotlin compiler crash course:Part 1,K1/K2,TalkMeta programming with KSP and Kotlin Compiler Plugin:TalkQ&Akotlin|Developed by JetBrains Thanks!Have a nice Kotlinkotlin|Developed by JetBrains