2012-04-12 21 views
9

Chcę uruchomić napisany w C++ i skompilowany z Android toolchain 9, ale miałem do czynienia z problemem: domyślnie nie mam uprawnień do uruchomienia go i nie mogę zmienić uprawnień za pomocą polecenia chmod`.Jak uruchomić aplikację C++ w Androidzie SHELL

kiedyś Android 2.3.3 - Api Level 10

Zastosowanie opracowano krzyżowego kompilator API level 9

Procedura:

kompilacji zastosowanie:

~/toolchain_andr9/bin/ramię Linux-androideabi- g ++ helloworld.cpp

Następnie wysłać aplikację do sdcard na emulatorze:

>adb push a.out /mnt/sdcard 

następnie przejść do powłoki i spróbuj uruchomić a.out:

>adb shell 
> 
>/mnt/sdcard/a.out 

i rezultat:

>`/mnt/sdcard/a.out: permission denied` 

komenda ls -l pokazy prawa dla a.out:

>`----rwxr-x system sdcard_rw 863656 2012-04-12 22:42 a.out` 

Próbowałem zmienić uprawnienia:

>chmod 777 /mnt/sdcard/a.out 

Ale prawa nie zmieniają:

>`----rwxr-x system sdcard_rw 863656 2012-04-12 22:42 a.out` 

myślę, że opuścił kilka ważnych rzeczy, używając Android.

Czy ktoś może mi pomóc i dać mi sposób uruchamiania aplikacji w Androidzie SHELL?

Wielkie dzięki.

P.S. przepraszam za mój angielski =)

+0

Czy masz root? Без рута может не тыйти фокус: http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App –

+1

spróbuj umieścić swój plik w/data/local tam powinieneś być w stanie chmodować twój plik – mgiza

Odpowiedz

13

Domyślnie karta SD jest zamontowana z opcją noexec, która uniemożliwia wykonanie dowolnego pliku na karcie, niezależnie od uprawnień (nawet -rwxrwxrwx), więc musisz przenieść plik do innej lokalizacji, a następnie ją wykonać.

Najprostszym sposobem jest przeniesienie pliku do /data/local/tmp/ i wykonanie go przy użyciu pełnej ścieżki (zwykle semantyka POSIX PATH).

> adb push a.out /data/local/tmp/a.out 
> adb shell 
> chmod 755 /data/local/tmp/a.out 
> /data/local/tmp/a.out 

Ten nie wymagają dostępu użytkownika root i przetrwarestart.

4

Jeśli masz zrootowany telefon, możesz wykonać numer mount -o remount,rw /mnt/sdcard i powinien on zostać uruchomiony.

Próbowałem go na moim Androidzie.

+0

Czy to działa? Czy ktoś próbował tego? Doesbit usuwa flagę noexec? Czy sdcard ponownie się uruchamia po restarcie? Zmyliłem format (vfat> ext2) i zrobiło się bardzo szalonym androidem. Musiałem użyć 'newfs_msdos', aby to naprawić, więc nie chcę się z tym bawić. –

+0

@MarkMikofski To nie przetrwa ponownego uruchomienia komputera, a '' sdcard' zwykle uruchamia się po ponownym uruchomieniu komputera. –

+0

niesamowite, że całkowicie działa, po prostu usuwa flagi 'nosuid, nodev, noexec'! –

Powiązane problemy