開發者希望在 Android 應用中直接調用 Linux 的 nc (netcat) 命令進行網絡調試或數據傳輸。
nc 命令。pkg install netcat 安裝 nc。Intent 唤起 Termux 運行命令,但無法直接獲取輸出流。適用場景:開發者自用、調試工具類 App。
nc (ARM/aarch64) 放入 assets/ 或 files/ 目錄。getFilesDir() 或 getCacheDir(),賦予執行權限(chmod 700)。Runtime.getRuntime().exec() 或 ProcessBuilder 執行。限制:Android 7.0+ 限制 exec() 調用非系統二進制;SELinux 策略可能阻止執行。通常需要 Root 權限或簽名為系統應用。
不要依賴外部命令,直接使用標準 API:
優勢:跨平台、無權限問題、易維護、性能可控、符合 Android 生態最佳實踐。
new Thread(() -> {
try (Socket socket = new Socket("192.168.1.100", 9999);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println("Hello from Android");
String response = in.readLine();
runOnUiThread(() -> textView.setText("Server: " + response));
} catch (IOException e) {
e.printStackTrace();
}
}).start();
在 Android App 中調用 nc 屬於「異想天開」范疇。拥抱原生網絡 API,才是專業移動開發者的正確選擇。