美文网首页
android-apt、annotationProcessor、

android-apt、annotationProcessor、

作者: 进哥哥Jiang | 来源:发表于2017-08-31 11:58 被阅读0次

    【转载】http://www.crazyjiang.cn/2017/06/06/android-gradle-api/

    android-apt

    APT(Annotation Processing Tool),注释处理工具,对源代码文件进行检测,根据注解自动生成代码。并编译生成的源文件和原来的源文件,将它们一起生成class文件。

    annotationProcessor

    编译时执行,不会打包到apk中。完全替代android-apt。

    provided

    编译时执行,不会打包到apk中。但是跟apt/annotationProcessor有着根本的不同。

    A 、B、C都是Library。 
    A依赖了C,B也依赖了C 
    App需要同时使用A和B 
    那么其中A(或者B)可以修改与C的依赖关系为Provided
    

    A这个Library实际上还是要用到C的,只不过它知道B那里也有一个C,自己再带一个就显得多余了,等app开始运行的时候,A就可以通过B得到C,也就是两人公用这个C。所以自己就在和B汇合之前,假设自己有C。如果运行的时候没有C,肯定就要崩溃了。

    总结一下,Provided是间接的得到了依赖的Library,运行的时候必须要保证这个Library的存在,否则就会崩溃,起到了避免依赖重复资源的作用。

    compile

    会编译到最后的APK或library中

    api

    完全等同于compile指令

    implementation

    对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。

    api指令编译
    implementation指令编译

    建议

    在Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implement的,如果没有错,那就用implement,如果有错,那么使用api指令,这样会使编译速度有所增快。


    参考资料

    android gradle tools 3.X 中依赖,implement、api 指令

    深入理解编译注解(三)依赖关系 apt/annotationProcessor与Provided的区别

    你必须知道的APT、annotationProcessor、android-apt、Provided、自定义注解

    Android注解使用之注解编译android-apt如何切换到annotationProcessor

    相关文章

      网友评论

          本文标题:android-apt、annotationProcessor、

          本文链接:https://www.haomeiwen.com/subject/hrhqjxtx.html