Android使用JavaStruct處理結構體
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 shortu16DeviceType; ///<源裝置型別 }
@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) publicshort 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 *; }