0

私は根ざしたAndroid2.3に取り組んでいます。私のアプリケーションでは、jniメカニズムを使用して、動作するためにルート権限を必要とするネイティブ(c / c ++)関数を呼び出します。そのため、常に失敗します(電話がルート化されている場合でも、特定のプロセス/アプリがルート権限を付与する必要があるため) 。

その関数を、javaから実行するコマンド「sudoexec_name」によってLinux上で実行される外部実行可能ファイルに移動したい(Runtime.getRuntime().exec("sudo ...");)

それで

1)ネイティブ実行可能ファイルをコンパイルするにはどうすればよいですか?(通常のライブラリではありません[.so])

2)スタンドアロンの実行可能ファイルを入手した後、システムのどこにそれを配置する必要があり、どのような権限が必要ですか?

4

1 に答える 1

1

ネイティブの実行可能ファイルをコンパイルするには、のinclude $(BUILD_EXECUTABLE)代わりに使用しinclude $(BUILD_SHARED_LIBRARY)ます。で、最も単純なネイティブ実行可能ファイルを作成する方法を示す例がありNDKます。test-libstdc++

次に、それを実行可能にするために、のような実行可能な場所に配置して/data/local呼び出す必要がありchmod 777ます。その後、シェルを介して実行できます。

その関数を、Javaから実行するコマンド「sudoexec_name」(Runtime.getRuntime()。exec( "sudo ...");)によってLinux上で実行される外部実行可能ファイルに移動したい。

この場合、ワークフローは次のようになります。

  • コードをネイティブの実行可能ファイルにコンパイルし、アプリアセットに配置します
  • 開始時に、yoru実行可能ファイルをアセットからにコピーする必要があります/system/bin
  • を使用して実行することを許可しますchmod 777
  • 実際に実行可能ファイルを実行します

最初の3つのポイントは1回だけ実行する必要があります。

于 2012-11-29T14:51:07.787 に答える