adbシェルから実行できるCLIアプリを構築することは可能ですか?
2 に答える
はい、可能です。C を使用する Android NDK を使用します。実行するバイナリをどこかに保存するには、ルート化する必要がある場合があります。注意してください。SD カードからは実行されません。通常、/data/local/tmp は 1 つの場所です。心に。そして、バイナリを上記の場所にプッシュするときは、実行するためにバイナリ自体に許可の実行ビットを設定する必要があります。また、所有権とグループ所有者を変更する必要がある場合もあります。
走行距離は ROM によって異なります。
公式にはサポート/推奨されていませんが、現在は可能です。
おそらく最も簡単な方法は、プロジェクト ディレクトリを設定し、その中に Android.mk と C ソースを含む jni フォルダーを設定することです。hello-jni ndk サンプルをガイドとして使用してください。
次に、Android.mk の BUILD_SHARED_LIBRARY を BUILD_EXECTUABLE に変更し、通常どおり親プロジェクト ディレクトリから ndk-build を実行します。
おそらく、ndk スタンドアロン ツールチェーン生成機能を使用することもできます。または、過去には、ndk gcc を (ab) 使いやすくするためのさまざまな非公式ラッパー システムが存在していました。
セキュリティで保護されたデバイスに実行可能ファイルを配置できる場所はいくらでもあります。実行可能ビットのマウント レベルのブロックが原因で、sd カードが不足しています。およそ Android 2.2 から、ディレクトリ /data/local は adb シェル ユーザーによって書き込み可能になり、以前のバージョンでは、テストのためによく悪用される /sqlite_stmt_journals ディレクトリがあります。
もう 1 つの可能性は、APK を使用して実行可能ファイルをそのプライベート ストレージにデプロイし、それらを誰でも読み取り可能で実行可能にすることです (jni が chmod() を呼び出して他のユーザーの実行ビット セットを取得するか、または chmod シェルを実行できると思います)。効用)。欠点は、シェルが長い /data/data/some.package.name パスで動作する必要があり、中間の /data フォルダーが参照できないことです!