1

Android 用の c4droid アプリをダウンロードし、 からコマンドを実行していますsystem();。何かが機能し、他の機能が機能しないことを学んでいます。クールなもののほとんどが機能しません。これは、Linux OS レベルでそのようなコマンドを実行する権限がユーザー プロファイルに与えられていないことが原因のようです。

そこで、別の実験を試みました。arm プロセッサ用の特別な Gnu コンパイラを入手し、簡単な Hello World アプリをコンパイルしました。次に、携帯電話を装着して、c4droidアプリを介して実行しようとしましたsystem("./myapp.bin");. permission deniedメッセージ を受け取りました。

それで、私は自分の電話で何ができて何ができないのかを理解しようとしているだけです。このような Hello World アプリを実行できますか? 作成したアプリケーションを実行するためにルート アクセスが本当に必要ですか? コードを Android/Java コードでラップして実行する方法はありますか? これを実行するには、Dalvikvm を経由する必要がありますか?

root化したり、busyboxのようなものをダウンロードしてsuを使用したりせずに、これを行う方法を本当に探しています。

4

1 に答える 1

1

多くのさまざまな問題。

  1. permission deniedプリミティブ シェルが認識する数少ないエラー メッセージの 1 つであり、要求されたコマンドが見つからないなど、他の多くの種類のエラーに使用されます。

  2. ツールボックス スイートには、多くの典型的な UNIX コマンドがありません。人々は、より包括的な補足として、busybox をインストールすることがあります。

  3. 実行したいことのいくつかは、実際には、shellアカウント (またはアプリケーション ユーザー ID) が持っていないアクセス許可を必要とします。デフォルトで adb シェルがルートとして実行されるのはエミュレータまたはエンジニアリング デバイスのみですが、「ルート化された」デバイスではルート シェルにアクセスできる場合があります。

  4. コンパイルされたコードを実行するのに root アクセスは必要ありませんが、コードには適切な ABI が必要であり、すべてのライブラリ依存関係が満たされている必要があり、実行可能フラグを持つファイルにインストールされ、非実行フラグでマウントされていないパーティションにインストールされている必要があります。実行可能フラグ。そこで直面する問題のいくつかは、glibc (またはその他) と Android のバイオニック libc です。実行可能なスクラッチ ディレクトリは Android のバージョンによって異なりますが、アプリがファイルを誰でも読み取り可能で実行可能に設定している場合、アプリのプライベート ストレージ領域はオプションです。

  5. ネイティブ コードを実行する通常の (そして唯一の「推奨」) 方法は、それを Android の Bionic libc にリンクされた共有ライブラリとしてビルドし、JNI を使用して dalvik/Java アプリから呼び出すことです。

于 2013-05-09T18:56:52.817 に答える