1

我想在android应用程序中创建一个数据包并通过网络(第二层网络)发送我使用android studio。我下载jnetpcap-1.3.0文件,这个文件包括一些文件,比如jnetPcap.jar,我添加了这个jar文件到我的android项目,对吗?在这一步,我可以调用 jar 文件(jnetpcap.jar)中的一些类,但是当我想运行这个 android 应用程序时出现错误,我不知道如何解决这个问题。我为android appliaton分配了一些权限,例如权限是:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission zndroid:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

我的代码是:

int size=100;
Ethernet wEth;
byte[] sourceMac={};
byte[] destMac={};
Ip4 wIp4;
byte[] bytes={};
byte[] dIP={};
byte[] sIP={};
try {
Process p = Runtime.getRuntime().exec("su");
JPacket wPacket = new JMemoryPacket(size);
wPacket.order(ByteOrder.BIG_ENDIAN);
wPacket.setUShort(12, 0x0800);
wPacket.scan(JProtocol.ETHERNET_ID);
wEth = wPacket.getHeader(new Ethernet());
wEth.source(sourceMac);
wEth.destination(destMac);
wEth.checksum(wEth.calculateChecksum());
int headersize = 14;
wPacket.setUByte(14, 0x40 | 0x05);
wPacket.scan(JProtocol.ETHERNET_ID);
wIp4 = wPacket.getHeader(new Ip4());
wIp4.length(500 - wEth.size());
wIp4.source(dIP);
wIp4.destination(sIP);
wIp4.ttl(32);
wIp4.flags(0);
wIp4.offset(0);
wIp4.checksum(wIp4.calculateChecksum());
headersize += 20;
}catch (Exception ex)
{
 ex.printStackTrace();
}

我有这个错误,显示在 androis studio 的 logcat 上:

1. 11-15 14:03:42.084 2996-2996/com.example.saeed.monoq E/Trace: error 
opening trace file: No such file or directory (2) 11-15 14:03:42.814
2996-2996/com.example.saeed.monoq E/dalvikvm: Could not find class  
'android.util.ArrayMap', referenced from method   
com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources
11-15 14:03:42.844 2996-2996/com.example.saeed.monoq E/dalvikvm:   
Could not find class 'android.util.ArrayMap', referenced from method
com.android.tools.fd.runtime.MonkeyPatcher.pruneResourceCache 11-15 
14:03:44.884 2996-2996/com.example.saeed.monoq E/AndroidRuntime:   
FATAL EXCEPTION: main
                                                                             java.lang.ExceptionInInitializerError
                                                                             at   
com.example.saeed.monoq.MainActivity.onCreate(MainActivity.java:69)
                                                                             at android.app.Activity.performCreate(Activity.java:5008)

在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:107
我该如何解决这个问题?

4

1 回答 1

1

检查您的 Gradle 文件以查看您是否已包含所有必需的依赖项。对于数据包操作,您可能需要检查mvn repo详细信息。

于 2021-07-13T18:43:16.327 回答