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 *;
}