1.基本使用參考:
https://blog.csdn.net/jazzsoldier/article/details/75669757
2.特殊使用
- 存在繼承關(guān)系時(shí),使用方法:
@StructClass
public class AVServer_Header {
@StructField(order = 0)
public short u16Headtag = (short) 0xF0F1; ///<0xF0F1
@StructField(order = 1)
public int u32SrcIP; ///<源IP地址,小端模式數(shù)據(jù)
@StructField(order = 2)
public short u16DeviceType; ///<源設(shè)備類型
}
@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]; ///<設(shè)備ID
@StructField(order = 2)
public short u8DevType; ///<設(shè)備類型 @see eDeviceType
@StructField(order = 3)
public static int getLength(){
return AVServer_Header.getLength() + 57 + 20;
}
}
3.混淆
- 當(dāng)要做proguard時(shí)添加如下代碼避免被處理
-keep @struct.StructClass class * {*;}
-keep,allowobfuscation @interface struct.StructClass
-keepclassmembers class * {
@struct.StructField *;
}