Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin Annotation Processor Tools(kapt)

Kotlin Annotation Processor Tools(kapt)

TISとのLTでのKotlin Annotation Processor Tools(kapt)の話
kapt1、kapt2、dagger2のworkaroundとか動作とか調べたやつ

Naohiro Yoshida

March 07, 2017
Tweet

More Decks by Naohiro Yoshida

Other Decks in Technology

Transcript

  1. ,PUMJO"OOPUBUJPO1SPDFTTPS5PPMT ,BQU

    .BSDI
    !
    /BPIJSP:PTIJEB
    3FDSVJU5FDIOPMPHJFT$P -UE

    View Slide

  2. %*$POUBJOFSJTSFRVJSFE

    0UIFSGSBNFXPSLTUPSFEVDFCPJMFSQMBUFDPEFJTSFRVJSFE
    "OESPJEJTOPUKVTUBGSPOUFOE

    CVUBGVMMTUBDLBQQMJDBUJPO
    "OESPJE
    $MFBO"SDIJUFDUVSF

    View Slide

  3. "WPJESFqFDUJPO
    ˚+%,%ZOBNJD1SPYZ
    !
    +BWBCZUFDPEFNBOJQVMBUJPOBUSVOUJNF

    JTHFOFSBMMZVOBWBJMBCMF
    º$(-JC "TQFDU+-58 MPBEUJNFXFBWJOH

    "OESPJE5IFPSZ

    View Slide

  4. "OOPUBUJPO1SPDFTTJOH +43

    (FOFSBUFKBWBTPVSDFDPEFGSPNPSJHJOBMKBWBTPVSDF
    "DUJWJUZKBWB "[email protected]*OKFDUPS

    KBWB
    !*OKFDU (FOFSBUFE'JMF
    ˞MPNCPLEPFT`UHFOFSBUFTPVSDFDPEFCVUUSBOTGPSN"45 BCTUSBDUTZOUBYUSFF

    KBWBD

    View Slide

  5. ,PUMJO
    -JHIUXFJHIU"MU+BWB OVMMTBGF
    DPNQJMFFSSPS
    WBSNPEFM.PEFMOVMM

    GVOFYFDVU IPHF.PEFM
    \NPEFMIPHF^

    DPNQJMFFSSPS

    WBSNPEFM.PEFM OVMM

    GVOFYFDVUF IPHF4USJOH
    NPEFM FYFDVUF IPHF

    $PNQJMF&SSPS
    4VQQSFTT/VMMBCMF&YFDVUJPO

    View Slide

  6. ,PUMJO
    KBWBJOUFSPQFSBUCJMJUZ
    (FOFSBUFDMBTTCZ"4.MJLFTDBMB DMPKVSF
    generate stub
    for javac
    javac kotlinc
    LU
    DPNQJMFKBWB
    XJUITUVC
    DPNQJMFLI
    XJUIKBWBDMBTT
    TUVC

    View Slide

  7. 1SPCMFN
    "DUJWJUZLU
    !*OKFDU
    "[email protected]*OKFDUPSLU
    LU LU
    º(FOFSBUFE
    "DUJWJUZLU
    !*OKFDU
    "[email protected]*OKFDUPSKBWB
    LU
    º(FOFSBUFE
    LPUMJOD
    KBWBD
    XJUI+43

    LPUMJODEPFTO`UTVQQPSU+43

    KBWBDDBO`USFBEBOOPUBUJPOPGLU

    View Slide

  8. ,BQU
    "OOPUBUJPO1SPDFTTPSGPSLPUMJO
    -FUKBWBDSFBELUBOOPUBUJPO
    "DUJWJUZLU "[email protected]*OKFDUPS

    KBWB
    !*OKFDU (FOFSBUFE'JMF
    LBQU
    BOEKBWBD

    View Slide

  9. ,BQU
    LU
    BOOPUBUJPO

    YYYUYU
    generate stub javac kotlinc
    "OOPUBUJPO
    1SPDFTTPS
    XSBQQFE

    SVOBTHSBEMFUBTL
    EBHHFS
    EBUBCJOEJOH
    PSNB
    ʜ
    TUVC
    BEEBOOPUBUJPOJOGPUPDMBTT
    DBMMVOXSBQQFEBOOPUBUJPOQSPDFTTPS

    View Slide

  10. 6OTUBCMF
    Τϥʔ NonExistentClassʹΞΫηεͰ͖·ͤΜ

    error.NonExistentClassͷΫϥεɾϑΝΠϧ͕ݟ͔ͭΓ·ͤΜ

    ৄࡉ͸࣍ͷελοΫɾτϨʔεͰௐ͍ࠪͯͩ͘͠͞ɻ

    com.sun.tools.javac.code.Symbol$CompletionFailure:
    error.NonExistentClassͷΫϥεɾϑΝΠϧ͕ݟ͔ͭΓ·ͤΜ

    Τϥʔݸ
    :PVIBWFUZQFTHFOFSBUFECZ"OOPUBUJPO1SPDFTTJOHJOZPVSEFDMBSBUJPOTJHOBUVSFT MJLFGVO
    QSPWJEF0SNB%BUBCBTF DPOUFYU$POUFYU
    PSMBUFJOJUWBSPSNB0SNB%BUBCBTF#FDBVTF,PUMJO
    NBLFTJUTTUVCTCFGPSF+BWB"OOPUBUJPO1SPDFTTJOHSVOT ,PUMJOLOPXTKVTUOPUIJOHBCPVU
    0SNB%BUBCBTF BOEUIFOBNFPGUIFEFDMBSBUJPOJOTUVCTXJMMCFFSSPS/PO&YJTUFOU$MBTT
    5IJTCSFBLTUIF"OOPUBUJPO1SPDFTTJOHUPPM*UTBLJOEPGLBQUMJNJUBUJPO BOEXFDVSSFOUMZ
    EPFTOULOPXBXBZUPpYJUXJUIPVUSFJNQMFNFOUJOH"OOPUBUJPO1SPDFTTJOHJO,PUMJO#VUBTB
    XPSLBSPVOE ZPVDBODIBOHFUIFSFUVSOUZQFUP%BUBCBTF)BOEMF BOENBLFBOFYQMJDJUDBTU
    JOTJEFZPVSGVODUJPO UIJTpYFTUIFCVJME
    JetBrains says

    View Slide

  11. 1SPCMFNXJUI%BHHFS
    %BHHFSDIFDLTBMMpFMETTFUUFSTHFUUFST
    XIFUIFSPSOPU!*OKFDUJTEFDMBSFE
    %BHHFS
    .FNCFST
    *OKFDUJPO
    BDUJWJUZ#JOEJOH

    !*OKFDUBDUJWJUZ1SFTFOUFS
    !
    PO$SFBUF ʜ

    PO4UBSU ʜ

    TFU"DUJWJUZ#JOEJOH

    FSSPS/PO&YJTJUFOU$MBTT

    TFU"DUJWJUZ1SFTFOUFS ʜ

    View Slide

  12. 8PSLBSPVOE
    .BLFbFSSPS/PO&YJTUFOU$MBTT`CZZPVSTFMG

    UIJTJTPVSpSTUXPSLBSPVOE
    /FWFSVTFHFOFSBUFEDMBTTGPSNFUIPEBSHVNFOU

    ºWBMCJOEJOH"DUJWJUZ9YY#JOEJOH

    ˓QSJWBUFWBMCJOEJOH"DUJWJUZ9YY#JOEJOH
    4PMVUJPO
    'JY%BHHFS
    IUUQTHJUIVCDPNHPPHMFEBHHFSQVMM

    View Slide

  13. ,BQU FYQFSJNFOUBM

    (FOFSBUFOPUDMBTTTUVCTCVUKBWBTPVSDFTUVCT

    BOE/PO&YJTUFOU$MBTTKBWB
    LU

    /PO&YTJTUFOU
    $MBTTKBWB
    kaptKotlin task compileKolin task
    "OOPUBUJPO
    1SPDFTTPS
    "MMUIFLUKBWB

    View Slide

  14. #VJME5JNF
    NJOTʙNJOTTFDT
    ,BQU LPUMJO

    ,BQU EBHHFSQBUDIFE

    5PUBMFMBQTFEUJNFGSPNbDMFBO`UPbJOTUBMM"1,b
    NJOTʙNJOTTFDT

    View Slide

  15. 1SPCBCMZ4UBCMF

    View Slide