Instalasi Android tidak selalu memiliki semua alat yang diharapkan pada sistem seperti Unix.
Sebagai contoh, saat ini saya memiliki perangkat bermasalah yang tidak memiliki find
utilitas CLI. Maksud saya, inilah yang saya dapat saat adb shell
:
$ find
/system/bin/sh: find: not found
Juga:
$ /system/bin/toolbox find
find: no such tool
Perangkat khusus ini menjalankan Android 5.0 (ditambah beberapa penambahan kepemilikan oleh LG, saya kira), tetapi pertanyaannya adalah untuk semua versi Android, tentu saja.
Apakah ada prosedur standar untuk menginstal alat asli / CLI (seperti find
), di Android? (Seorang manajer paket? ) Dan, bagaimana pun juga, bagaimana melakukannya dengan cara yang paling benar?
adb
shell
command-line
Nama tampilan
sumber
sumber
Jawaban:
Untuk perangkat Android yang di-rooting
Anda dapat mempertimbangkan menginstal aplikasi BusyBox oleh Stephen. Per Play Store, versi Android minimum yang didukung oleh aplikasi adalah Android 1.6 dan ini adalah aplikasi yang diperbarui dengan baik. Intinya, ia menginstal binary busybox ke
/system/xbin
dan menempatkan symlink di direktori yang sama untuk semua utilitas yang dimilikinya.Apa itu BusyBox (bukan aplikasi)?
Berikut adalah daftar utilitas resmi yang disediakannya.
find
Alat dapat ditemukan di sana.Alternatif kompeten untuk BusyBox adalah Toybox, yang telah menggantikan Toolbox dalam rilis Marshmallow.
Apa itu Toybox ?
Berikut adalah daftar resmi dari utilitas toybox. BusyBox, saat ini, tampaknya mendukung lebih banyak alat daripada Toybox.
Saya tidak berpikir ada aplikasi untuk menginstal biner Toybox, jadi Anda dapat menggunakan jawaban saya di sini untuk tujuan pemasangannya. Perhatikan bahwa jawabannya dapat digunakan untuk pemasangan Toybox dan BusyBox. Hanya prasyarat yang mengunduh biner dari sumber resmi.
Tautan unduhan resmi:
Untuk perangkat Android yang tidak di-root
Saya tidak tahu apakah ada pendekatan universal untuk semua versi Android. Yang mengatakan, untuk Android 4.0 dan lebih tinggi BusyBox Install (No Root) mengaku berfungsi. Mungkin ada beberapa aplikasi terminal yang dilengkapi dengan biner BusyBox. Saya belum secara pribadi menguji aplikasi terminal semacam itu tetapi mudah untuk memahami bahwa kelemahan terbesar mereka adalah: Anda tidak dapat menggunakan atau menggunakan mereka dengan baik menggunakan adb .
Namun ada pendekatan, yang tampaknya berfungsi untuk semua versi Android di atas 4.2 (berdasarkan tes saya).
/data/local/tmp
adalah direktori yang dapat diedit olehshell
pengguna.adb shell
memberi Anda shell jarak jauh pada perangkat dan masuk sebagai pengguna yang sama.Yang harus Anda lakukan adalah memasukkan binary BusyBox / Toybox
/data/local/tmp
dan membuat symlink untuk utilitas di direktori yang sama. Anda dapat menggunakan langkah-langkah berikut untuk itu.(Membutuhkan pengaturan adb di PC.)
Izzy merekomendasikan cara paling mudah untuk menempatkan symlink untuk biner BusyBox .
Semua alat itu sekarang dapat diakses menggunakan jalur absolut
/data/local/tmp/TOOL
. Ganti ALAT dengan nama utilitas. Contoh penggunaan perintah find calling:Untuk sesi shell interaktif, Anda dapat menambahkan lokasi FILE ke $ PATH menggunakan perintah ekspor:
Selesai itu, kini Anda dapat menggunakan find atau utilitas BusyBox / Toybox lainnya dengan cara ini:
Perlu dicatat bahwa perubahan dalam $ PATH hanya berlaku untuk sesi shell saat ini. Ini berarti bahwa setiap kali Anda meluncurkan shell menggunakan adb, Anda harus mengekspor $ PATH.
Oleh karena itu, tidak ada solusi Android untuk sesi shell non-interaktif selain menemukan cara untuk membuat variabel yang keberadaan dan nilainya akan bertahan di luar sesi shell saat ini di PC Anda, bukan Android . Contoh:
sumber