Uruchamianie własnego pliku wykonywalnego na powłoce Androida

14

Potrzebuję specjalnego narzędzia wiersza poleceń i stworzyłem program C w mojej powłoce Linux. Skompilowałem program z kompilatorem krzyżowym ARM. Następnie przeniosłem program do systemu plików Android i próbowałem go uruchomić.

Dane wyjściowe są zabronione.

Co muszę zrobić, aby uruchomić własne skompilowane programy w systemie plików Android?

Nuno Santos
źródło
Próbowałeś, chmod +x pgma potem ./pgmtakże?
ott--
8
Być może umieściłeś go na swojej karcie SD - która jest zamontowana z noexecflagą. Musisz przenieść go do pamięci wewnętrznej telefonu lub uruchomić za pomocą powłoki (np sh /path/to/myexecutable.).
Izzy
2
stackoverflow.com/questions/9868309/…
Ciro Santilli 28 改造 中心 法轮功 六四 事件

Odpowiedzi:

14

Zakładam, że użyłeś adb push do przesłania pliku wykonywalnego na kartę SD. Niestety, karta SD jest zawsze montowana z opcją „noexec”, co oznacza, że ​​nie możesz stąd nic wykonać.

Dlatego musisz skopiować plik wykonywalny do lokalnego systemu plików, np. Do / data / local. W przypadku, gdy urządzenie nie jest zrootowane lub nie masz zainstalowanego BusyBox, nie będzie komendy „cp”. Możesz po prostu użyć kota: cat /sdcard/myprog > /data/local/myprog.

Następnie musisz ustawić uprawnienia do pliku wykonywalnego. Chmod na Androidzie zwykle nie obsługuje składni „u + x”. Dlatego musisz zadzwonić chmod 555 /data/local/myprog.

Następnie można wykonać swój plik wykonywalny: /data/local/myprog.

Robert
źródło
Dziękuję za odpowiedź. W rzeczywistości problem dotyczył generacji binarnej. Nie został wygenerowany poprawnie! ;)
Nuno Santos
Mam zajęty na moim urządzeniu, ale to polecenie: shell @ n200C: / $ busybox cp / storage / external_storage / sda1 / ffmpeg / data / ------ show error = cp: not create '/ data / ffmpeg ': Odmowa zezwolenia
Dr.jacky
tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directorychociaż plik jest obecny
Necktwi
/ data / local wymaga dostępu do konta root na moim urządzeniu. Zamiast tego użyj / data / local / tmp
Chan Tzish
10

Najpierw musisz wepchnąć go do katalogu, takiego jak /data/local/tmp. Następnie musisz ustawić uprawnienia do tego za pomocą chmod 755 executable. Następnie możesz uruchomić go jako ./executable.

Wykonaj następujące kroki:

adb push wykonywalny / data / local / tmp
powłoka adb
cd / data / local / tmp
plik wykonywalny chmod 755
./executable

Alternatywnie, jeśli chcesz uruchomić go z folderu zasobów, musisz skopiować plik do folderu danych /data/data/packagename/. Następnie za pomocą Fileklasy ustaw setExecutableflagę truena plik i uruchom ją za pomocą klasy Process lub pakietów stron trzecich, takich jak Root Tools .

Koorosh Ghorbani
źródło