主要观点总结
本文介绍了在Android开发中,随着AGP8的变更,TheRouter插件在编译过程中的调整与优化。文章详细描述了遇到的问题,包括编译速度慢、无法增量编译等,并给出了多种解决思路,包括使用AsmClassVisitorFactory和toTransform(),以及最后的优化方案。
关键观点总结
关键观点1: AGP8的变更导致很多class操作类的插件代码需要修改。
TheRouter在开发时支持AGP8,使用了Gradle提供的标准API。但新版本的API带来了编译速度变慢和无法增量编译的问题。
关键观点2: toTransform()方法的使用导致了编译速度慢。
使用toTransform()方法需要将所有的jar和class聚合到一个jar内,导致无法增量编译,使得编译速度变慢。
关键观点3: AsmClassVisitorFactory可以解决部分问题但带来了新的挑战。
AsmClassVisitorFactory可以对指定类做字节码操作,但需要在所有类遍历完才能确定需要处理的类,存在同步问题。
关键观点4: 存在两种解决思路。
一是在编译期将所有需要处理的类写入文件,然后在Transform时读取;二是结合AsmClassVisitorFactory和toTransform(),并加入内存缓存机制来确保产物的一致性。
关键观点5: 最后的优化方案结合了增量编译和产物保障。
通过内存缓存机制,比较本次编译使用的类记录和上次构建结果,不同则抛出异常提醒用户重新构建。
免责声明
免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。
原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过
【版权申诉通道】联系我们处理。