1.基本使用参考:
https://blog.csdn.net/jazzsoldier/article/details/75669757
2.特殊使用
- 存在继承关系时,使用方法:
@StructClass
public class AVServer_Header {
@StructField(order = 0)
public short u16Headtag = (short) 0xF0F1; ///<0xF0F1
@StructField(order = 1)
public int u32SrcIP; ///<源IP地址,小端模式数据
@StructField(order = 2)
public short u16DeviceType; ///<源设备类型
}
@StructClass
public class Local_BrocastSelf extends AVServer_Header{
@StructField(order = 0)
AVServer_Header header;
//public byte[] header = new byte[AVServer_Header.getLength()];
@StructField(order = 1)
public byte[] au8DevID = new byte[MainActivity.DP_DEV_ID_LEN]; ///<设备ID
@StructField(order = 2)
public short u8DevType; ///<设备类型 @see eDeviceType
@StructField(order = 3)
public static int getLength(){
return AVServer_Header.getLength() + 57 + 20;
}
}
3.混淆
- 当要做proguard时添加如下代码避免被处理
-keep @struct.StructClass class * {*;}
-keep,allowobfuscation @interface struct.StructClass
-keepclassmembers class * {
@struct.StructField *;
}