Skip to content

hzbx/Protocol

 
 

Repository files navigation

Android模块化通信协议Protocol

原理: 1、通过注解+APT将接口类与实现类生成映射类 3、动态代理+反射调用

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调用模块2的代码

模块1: 创建接口

@Protocol("通信协议字符串,保证全局唯一即可")
public interface 接口类{

   void method1(参数1,参数2...)

   返回值 method2()

}

模块2: 创建实现类

@ProtocolImpl("通信协议字符串,必须与模块1的字符串一致")
public class 实现类{

    //方法名与参数必须与模块1的方法名与参数一致
    public void method1(参数1,参数2){
        // do something
    }

    public 返回值 method2(){
        //do something
    return 返回值
    }
}

模块1调用模块2

ProtocolFactory.getInstance().invoke(接口类.class).method1(参数1,参数2)
返回值 = ProtocolFactory.getInstance().invoke(接口类.class).method2()

混淆配置: Protocol生成中间代码

-keep class com.protocol.provider.** { *; }

Protocol注解的类需要过滤混淆

About

组件通信

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 89.5%
  • Kotlin 10.5%