5

AndroidApp に送信される .c ファイルをコンパイルして実行したいと考えています。ARM 用の ARM .c ファイルでコンパイルしたいと考えています。Android 4.2 で Galaxy Nexus を使用しています。Android SDK と Android NDK をインストールしました。ターミナル IDE でこれを実行しましたが、ターミナルから手動でコンパイルしたくありません。Android用GCC(android-gcc-4.4.0)をダウンロードしましたが、これをアプリケーションに適切に追加する方法と、Javaコード内からコンパイルする方法がわかりません。

私はこれについてインターネットでたくさんのことを読みましたが、どれも実際にこれを行う方法を理解するのに役立ちませんでした

だから私の問題は次のとおりです。AndroidアプリからAndroid / NDKツールチェーン、またはその他のツールチェーンを使用して.cファイルをコンパイルして実行するにはどうすればよいですか。

編集: Android-gcc を携帯電話のファイル ディレクトリ (data/data/.../files) に解凍しました。電話で gcc コンパイラを呼び出して、.c ファイルをコンパイルしたいと考えています。私は使用しようとしました:

String[] cmds={MainActivity.this.getFilesDir() + "/android-gcc-4.4.0/bin/arm-eabi-gcc-4.4.0", "-c", file_path};
String result = "";
Process p = Runtime.getRuntime().exec(cmds);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = in.readLine()) != null) 
{
    result += line + "\n";
}
alert_dialog("Output", result); // Creates and displays an alert dialog
in.close();
}
catch (Exception e) 
{
    alert_dialog("Error", e.toString() + "\n" + e.getMessage());
}

これは Android で gcc を呼び出す私のアプローチでしたが、次の例外しか取得しません: java.io.IOException: Error running exec()。コマンド [...] 作業ディレクトリ: null 環境 null。

電話でandroid-gccコンパイラを正しく呼び出す方法を知っている人はいますか?

どんな助けでも感謝し、事前に感謝します

4

1 に答える 1

-2

これは公式にサポートされているシナリオではありません。特権のないアプリがデバイスに実行可能コードを勝手にインストールできる OS はありません。

ルート化された電話では、運がいいかもしれません。それでも、ツールチェーンをゼロから作成する必要があります。NDK はこれを意図したものではありませんでした。ARM で動作する NDK のフレーバーはありません。

于 2013-03-28T19:55:44.753 に答える