Android模塊化通信協(xié)議Protocol
Github
原理:
1盾碗、通過注解+APT將接口類與實現(xiàn)類生成映射類
3、動態(tài)代理+反射調(diào)用
protocol -- Protocol入口
protocol-annotation -- 注解+接口module
protocol-compiler -- apt:生成注解代碼
使用姿勢:
根build.gradle
repositories {
google()
mavenCentral()
maven { url 'https://www.jitpack.io' }
}
module依賴:
api 'com.github.Archer1347.Protocol:protocol:1.0.0'
kapt 'com.github.Archer1347.Protocol:protocol-compiler:1.0.0'
例子:模塊1調(diào)用模塊2的代碼
模塊1:
創(chuàng)建接口
@Protocol("通信協(xié)議字符串泄私,保證全局唯一即可")
public interface 接口類{
void method1(參數(shù)1,參數(shù)2...)
返回值 method2()
}
模塊2:
創(chuàng)建實現(xiàn)類
@ProtocolImpl("通信協(xié)議字符串,必須與模塊1的字符串一致")
public class 實現(xiàn)類{
//方法名與參數(shù)必須與模塊1的方法名與參數(shù)一致
public void method1(參數(shù)1,參數(shù)2){
// do something
}
public 返回值 method2(){
//do something
return 返回值
}
}
模塊1調(diào)用模塊2
ProtocolFactory.getInstance().invoke(接口類.class).method1(參數(shù)1,參數(shù)2)
返回值 = ProtocolFactory.getInstance().invoke(接口類.class).method2()
混淆配置:
Protocol生成中間代碼
-keep class com.protocol.provider.** { *; }
Protocol注解的類需要過濾混淆