Bir Android cihaza eksik komut satırı araçlarını nasıl yükleyebilirim?


9

Android kurulumları her zaman Unix benzeri bir sistemde olmasını beklediğiniz tüm araçlara sahip değildir.

Örneğin, şu anda findCLI yardımcı programı olmayan sorunlu bir cihazım var . Demek istediğim, ben bu süre içinde olsun adb shell:

$ find
/system/bin/sh: find: not found

Ayrıca:

$ /system/bin/toolbox find
find: no such tool

Bu özel cihaz Android 5.0 (artı LG tarafından bazı tescilli eklemeler) çalıştırıyor, ancak soru elbette tüm Android sürümleri için.

findAndroid'de yerel / CLI araçlarını (örneğin ) yüklemek için standart bir prosedür var mı ? ( Paket yöneticisi? ) Ve her neyse, bunu en doğru şekilde nasıl yapabilirim?



Evet, bu cihaz köklü. Ancak, köklü uyumlu yolları da bilmek ilginç. :)
Görünen Ad

Yanıtlar:


5

Köklü Android cihazlar için

Stephen tarafından BusyBox uygulamasını yüklemeyi düşünebilirsiniz . Play Store başına, uygulamanın desteklediği minimum Android sürümü Android 1.6'dır ve iyi güncellenmiş bir uygulamadır. Özünde, yükler busybox içine ikili /system/xbinve yerleştirir sembolik sahip olduğu tüm kamu hizmetleri için aynı dizine.

BusyBox nedir (uygulama değil)?

BusyBox, birçok yaygın UNIX yardımcı programının küçük sürümlerini tek bir küçük yürütülebilir dosyada birleştirir. Genellikle GNU dosya klasörlerinde, kabuk klasörlerinde vb. Bulduğunuz yardımcı programların çoğunun yerini alır. BusyBox'taki yardımcı programların tam özellikli GNU kuzenlerinden genellikle daha az seçeneği vardır; ancak, içerilen seçenekler beklenen işlevselliği sağlar ve GNU muadillerine çok benzer davranır. BusyBox herhangi bir küçük veya gömülü sistem için oldukça eksiksiz bir ortam sağlar.

İşte sağladığı hizmetlerin resmi listesi. findaracı burada bulabilirsiniz.

BusyBox'ın yetkili bir alternatifi Marshmallow sürümünde Toolbox'ın yerini alan Toybox'tur.

Nedir Toybox ?

Toybox, birçok ortak Linux komut satırı yardımcı programını tek bir BSD lisanslı yürütülebilir dosyada birleştirir. Basit, küçük, hızlı ve makul standartlara uygundur ( POSIX-2008 ve LSB 4.1 ).

İşte toybox'ın desteklediği yardımcı programların resmi listesi. Şu anda BusyBox, Toybox'tan daha fazla aracı destekliyor gibi görünüyor.

Bir uygulamanın Toybox ikili dosyasını yüklemek için var olduğunu düşünmüyorum, bu yüzden cevabımı burada yükleme amacıyla kullanabilirsiniz . Cevabın hem Toybox hem de BusyBox kurulumu için kullanılabileceğini unutmayın . Yalnızca ön koşul ikili dosyaları resmi kaynaklardan indirmektir.

Resmi indirme bağlantıları:

Köklendirilmemiş Android cihazlar için

Tüm Android sürümleri için evrensel bir yaklaşım olup olmadığını bilmiyorum. Bununla birlikte, Android 4.0 ve üstü için BusyBox Install (Root) çalıştığını iddia ediyor. BusyBox ikili ile birlikte gelen bazı terminal uygulamaları olabilir. Şahsen böyle bir terminal uygulamasını test etmedim, ancak en büyük dezavantajı olduğunu anlamak kolaydır: bunları kullanarak herhangi bir veya çok iyi kullanamazsınız.

Bununla birlikte, 4.2'nin üzerindeki herhangi bir Android sürümü için (testlerime dayanarak) işe yarayan bir yaklaşım var. kullanıcı /data/local/tmptarafından düzenlenebilen bir dizindir shell. adb shellcihazdaki uzak kabuğu verir ve aynı kullanıcıyla giriş yapar.

Tek yapmanız gereken BusyBox / Toybox ikili dosyasına koymak /data/local/tmpve aynı dizindeki yardımcı programlar için semboller oluşturmaktır. Bunun için aşağıdaki adımları kullanabilirsiniz.

(gerektirir PC'de kurulum.)

adb push LOCAL_FILE / data / local / tmp / # LOCAL_FILE dosyasını PC'de toybox / busybox ikili dosyası ile değiştirir
adb kabuğu
chmod 755 / data / local / tmp / FILE # ayarlanan ikili dosyada uygun izni ayarlama. DOSYA'yı ilk adımda ittiğiniz ikili dosyanın adıyla değiştirin. Tek bir kelimeyi tüm küçük harflerle isim olarak kullanmaktır
box = / data / local / tmp / FILE # sonraki adımda kullanım için yerel bir değişken ayarlama. FILE dosyasını uygun şekilde değiştirin
$ kutu | $ box sed 's / \ / \ n / g' | $ box sed '$ d' | okunurken satır; $ box ln -sf / data / local / tmp / FILE / data / local / tmp / $ satırı; done # Tüm yardımcı programları listelemek için $ box tarafından başvurulan ikili dosyayı yürütüyoruz, ardından bir liste oluşturuyoruz ve ardından listedeki her öğe için bir dizinde bir sembolik bağlantı oluşturuyoruz.

Izzy, BusyBox ikili dosyaları için sembolik bağlantılar eklemenin en kolay yolunu önerdi .

adb shell / data / local / tmp / FILE --install -s / data / local / tmp / # FILE dosyasını uygun şekilde değiştirin. --install -s bir dizinde sizin için istenen simgeleri oluşturacaktır. Directory'nin yolu yanındadır. 

Tüm bu araçlara artık mutlak yol kullanılarak erişilebilir /data/local/tmp/TOOL. TOOL'u yardımcı program adıyla değiştirin. Find find komutunun örnek kullanımı:

adb shell /data/local/tmp/find --help
adb shell /data/local/tmp/FILE find --help   # alternative way of using a tool

Etkileşimli kabuk oturumları için, export komutunu kullanarak FILE konumunu $ PATH klasörüne ekleyebilirsiniz:

export PATH = / data / local / tmp: $ PATH #, mevcut $ PATH değerine / data / local / tmp önekidir. dışa aktarma, alt kabukların $ PATH değerinde aynı değeri görmesini sağlar

Bunu yaptığınızda, artık find veya başka bir BusyBox / Toybox yardımcı programını şu şekilde kullanabilirsiniz:

adb kabuğu 
yardım bulmak

Bu etmektir belirtmek $ PATH değişiklikler yalnızca geçerli kabuk oturumu için geçerlidir. Bu, adb kullanarak her kabuk başlattığınızda $ PATH dışa aktarmanız gerektiği anlamına gelir.

Bununla birlikte, etkileşimi olmayan kabuk oturumları için, varlığı ve değeri Android'de değil, PC'nizdeki geçerli kabuk oturumunun ötesinde kalacak bir değişken oluşturmanın bir yolunu bulmaktan başka, yalnızca Android çözümü yoktur . Misal:

adb shell $lolcat   # $lolcat is a temporary variable in my shell on PC and it was assigned the value /system/xbin/toybox. My bash shell is replacing $lolcat with its value and then passing it to adb shell (or you can say, it first expanded the variable and then executed the whole command)

Meşgul kutusunda ve oyuncak kutusunda bulunmayan araçlar, zaten birileri tarafından oluşturulmamış ve güvenebileceğiniz, indirip yükleyebileceğiniz güvenilir bir yere gönderilmemişse, bunları Android için kendiniz oluşturmanız gerekir.
Firelord
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.