Androidシェルで独自の実行可能ファイルを実行する


14

特定のコマンドラインツールが必要で、LinuxシェルでCプログラムを作成しました。ARMクロスコンパイラでプログラムをコンパイルしました。その後、プログラムをAndroidファイルシステムに移動し、実行しようとしました。

出力は許可されていません。

Androidファイルシステムで独自のコンパイル済みプログラムを実行するには、何をする必要がありますか?


試しましたchmod +x pgm当時と./pgmも?
ott--

8
おそらくあなたはそれをあなたのSDカードに置いた- noexecフラグでマウントされています。電話の内部ストレージに移動するか、シェルを介して実行する必要があります(例:)sh /path/to/myexecutable
イジー

回答:


14

実行可能ファイルをSDカードにアップロードするためにadb pushを使用したと仮定します。残念ながら、SDカードは常に「noexec」でマウントされます。つまり、ここからは何も実行できません。

そのため、実行可能ファイルをローカルファイルシステム、たとえば/ data / localにコピーする必要があります。デバイスがルート化されていない場合、またはBusyBoxがインストールされていない場合、「cp」コマンドはありません。単にcat:を使用できますcat /sdcard/myprog > /data/local/myprog

次に、実行可能ファイルに実行可能権限を設定する必要があります。通常、AndroidのChmodは「u + x」構文をサポートしません。したがって、電話する必要がありますchmod 555 /data/local/myprog

その後、実行可能ファイルを実行できます/data/local/myprog


返信のThx。実際、問題はバイナリ生成にありました。正しく生成されていませんでした!;)
ヌーノ・サントス

デバイスにbusyboxがありますが、このコマンド:shell @ n200C:/ $ busybox cp / storage / external_storage / sda1 / ffmpeg / data / ------ show error = cp:ca n't create '/ data / ffmpeg ':許可が拒否されました
-Dr.jacky

tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directoryファイルは存在しますが
-Necktwi

/ data / localには、デバイスのルートアクセスが必要です。代わりに/ data / local / tmpを使用してください
Chan Tzish

10

まず、などのディレクトリにプッシュする必要があります/data/local/tmp。次に、を使用してそのための許可を設定する必要がありますchmod 755 executable。その後、として実行できます./executable

完全な手順は次のとおりです。

adb push実行可能ファイル/ data / local / tmp
adbシェル
cd / data / local / tmp
chmod 755実行可能ファイル
./executable

または、アセットフォルダーから実行する場合は、ファイルをデータフォルダーにコピーする必要があります/data/data/packagename/。次に、Fileクラスを使用setExecutabletrueて、ファイルのフラグをに設定し、Processクラスまたはルートツールなどのサードパーティパッケージで実行します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.