Android kabuğunda kendi yürütülebilir dosyasını çalıştırma


14

Belirli bir komut satırı aracına ihtiyacım var ve Linux kabuğumda bir C programı yaptım. Programı bir ARM çapraz derleyici ile derledim. Daha sonra programı Android dosya sistemine taşıdım ve çalıştırmayı denedim.

Çıktı izin reddedildi.

Derlediğim programları Android dosya sisteminde çalıştırmak için ne yapmam gerekiyor?


Denedim chmod +x pgmve sonra ./pgm?
ott--

8
Muhtemelen noexecbayrağa takılı olan sdcard'ınıza yerleştirdiniz . Ya telefonu dahili depolama alanına taşımanız ya da bir kabuk (örneğin sh /path/to/myexecutable) üzerinden çalıştırmanız gerekir .
Izzy

Yanıtlar:


14

Sd karta yürütülebilir dosya yüklemek için adb push kullandığınızı varsayıyorum. Ne yazık ki sd kart her zaman "noexec" ile monte edilir, bu da buradan hiçbir şey yürütemeyeceğiniz anlamına gelir.

Bu nedenle, yürütülebilir dosyayı yerel dosya sistemine kopyalamanız gerekir, örneğin / data / local. Cihaz köklü değilse veya BusyBox kurulu değilse "cp" komutu olmayacaktır. Sadece kedi kullanabilirsiniz: cat /sdcard/myprog > /data/local/myprog.

Ardından, yürütülebilir dosyada yürütülebilir izni ayarlamanız gerekir. Android'deki Chmod genellikle "u + x" sözdizimini desteklemez. Bu nedenle aramak zorundasınız chmod 555 /data/local/myprog.

Ardından önceki yürütülebilir çalıştırabilirsiniz: /data/local/myprog.


Cevabınız için teşekkürler. Aslında sorun ikili nesildeydi. Doğru oluşturulmadı! ;)
Nuno Santos

Aygıtımda meşgul kutusu var, ancak bu komut: shell @ n200C: / $ busybox cp / storage / external_storage / sda1 / ffmpeg / data / ------ show error = cp: oluşturulamıyor '/ data / ffmpeg ': İzin reddedildi
Dr.jacky

tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directorydosya mevcut olsa da
Necktwi

/ data / local, cihazımda root erişimi gerektirir. Bunun yerine / data / local / tmp kullan
Chan Tzish

11

İlk olarak, gibi bir dizine itmeniz gerekir /data/local/tmp. Ardından, bunu kullanmak için izin ayarlamanız gerekir chmod 755 executable. Bundan sonra, onu çalıştırabilirsiniz ./executable.

Tam adımlar aşağıdaki gibidir:

adb push çalıştırılabilir / veri / yerel / tmp
adb kabuğu
cd / veri / yerel / tmp
chmod 755 yürütülebilir
./executable

Alternatif olarak, öğeyi varlık klasörünüzden çalıştırmak istiyorsanız, dosyayı veri klasörünüze kopyalamanız gerekir /data/data/packagename/. Daha sonra Filesınıfı kullanarak dosya için setExecutablebayrağı ayarlayın ve trueProcess sınıfı veya Kök Araçları gibi üçüncü taraf paketleriyle çalıştırın .

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.