Advanced Topics
注解处理技巧( Annotation processing technologies )如今已经异常风行了。在编译的时刻,Javac 平日会找到你定义的注解并且在他们之上做操作,是以你能做的平日就是生成新的类和 Java 文件。你可以写你本身的注解处理器。固然很不简单,然则可行。
注解技巧异常擅长处理两件工作。一是削减反复代码(boilerplate),另一件拿手的就是优化运行时的反射(introspection)。在运行时履行反射操作是异常慢的,是以你最好能在编译时代就却竽暌古化你的法度榜样,推荐一些比较风行的用注解来处理数据的看魏 Dagger , Butter Knife , AutoValue / Autoparcel , 以及 Realm 。
一个不好的消息是:Android API 不克不及给注解供给精确的包路径。解决这个问题的办法是创建两个子项目,一个用来指向注解,另一个指向注解处理器。注解同时须要注解处理器和你的代码。是以,你的 Android 库项目,将会有两个子项目。创建完两个子项目后,你须要将他们都打包在一路,最终打包出来的器械不仅仅是你的 jar 文件,同时还有注解和注解处理器。你还须要修改 javadoc 义务,把注解部分的文档也添加进去,以便闪开辟者可以或许读到所有的文档。
- // Jar
- task androidJar(type: Jar) {
- dependsOn assemble
- group 'Build'
- description 'blah blah'
- from zipTree(
- 'build/intermediates/bundles/release/classes.jar')
- from zipTree(
- '../annotations-processor/build/libs/processor.jar')
- from zipTree(
- '../annotations/build/libs/annotations.jar')
- }
- // javadoc tasks
- android.libraryVariants.all { variant ->
- task("javadoc${variant.name.capitalize()}", type: Javadoc) {
- description "Generates Javadoc for $variant.name."
- group 'Docs'
- source = variant.javaCompile.source
- source "../annotations/src/main/java"
- ext.androidJar = files(plugins
- .findPlugin("com.android.library")
- .getBootClasspath())
- classpath = files(variant.javaCompile.classpath.files)
- + ext.androidJar
- exclude '**/BuildConfig.java'
- exclude '**/R.java'
推荐阅读
今朝,当Go须要和C/C++代码集成的时刻,大年夜家最先想到的肯定是CGO。毕竟是官方的解决筹划,并且简单。调用C函数的时刻,必须切换当前的┞坊为线程的主栈,这带来了两个比较严重的问题:>>>详细阅读
本文标题:为什么要开发Android库?
地址:http://www.17bianji.com/lsqh/37244.html
1/2 1