此插件要解决的问题是:
使用此插件后,在编译期(代码混淆之前)扫描所有打到apk包中的类,将符合条件
的类收集起来,并生成注册代码到指定的类的static块中,自动完成注册
在apk打包过程中,对编译后的所有class(包含jar包中的class)进行扫描,将 scanInterface的实现类 或 scanSuperClasses的子类扫描出来,并在 codeInsertToClassName 类的 static块 中生成注册代码,如demo中:
public class CategoryManager {
static
{
CategoryManager.register(new CategoryA()); //scanInterface的实现类
CategoryManager.register(new CategoryB()); //scanSuperClasses的子类
}
}
扫描的类包含:通过maven依赖的库、module依赖的library、aar包、jar包、AIDL编译后的类及当前module中的java类
要点:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.billy.android:autoregister:x.x.x'
}
}
apply plugin: 'auto-register'
autoregister {
registerInfo = [
[
'scanInterface' : 'com.billy.app_lib_interface.ICategory'
, 'scanSuperClasses' : ['com.billy.android.autoregister.demo.BaseCategory']
, 'codeInsertToClassName' : 'com.billy.app_lib_interface.CategoryManager'
//未指定codeInsertToMethodName,默认插入到static块中,故此处register必须为static方法
, 'registerMethodName' : 'register' //
, 'exclude' : [
//排除的类,支持正则表达式(包分隔符需要用/表示,不能用.)
'com.billy.android.autoregister.demo.BaseCategory'.replaceAll('\\.', '/') //排除这个基类
]
],
[
'scanInterface' : 'com.billy.app_lib.IOther'
, 'codeInsertToClassName' : 'com.billy.app_lib.OtherManager'
, 'codeInsertToMethodName' : 'init' //非static方法
, 'registerMethodName' : 'registerOther' //非static方法
]
]
}
更新日志:
支持增量编译及其开关(默认开启,可通过配置cacheEnabled = false
来关闭增量编译,参考demo)
修复gradlew build命令同时打debug和release包时,release包中注册的代码重复的问题
解决同时编译多个application module(点击Build -> Rebuild/Build APKs)时出现错误注册的问题
解决windows的兼容性问题
兼容java8
从本仓库中删除为ARouter定制的路由自动注册插件,已提供ARouter专用精简版路由自动注册插件并提交PR到ARouter仓库
解决使用继承后,scanSuperClasses指定的类本身不会被自动注册的bug,并升级为V1.0.5
scanSuperClasses 参数指定的父类不需要自动添加到exclude中
抽象类不会被添加到自动注册列表。
新增ARouter定制的路由自动注册插件:auto-register-for-arouter
classpath 'com.billy.android:auto-register-for-arouter:1.0.0'
apply plugin: 'auto-register-for-arouter'
生成的注册代码不再局限于static块中,可以在任意方法(codeInsertToMethodName)中
需要注意: codeInsertToMethodName 与 registerMethodName 必须同时为static或非static
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。