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?


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

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.


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 .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.