0

Androidスマートフォンで利用しようとしているCライブラリがあります

Java からネイティブ C 関数を呼び出すことができるように、SWIG を使用してライブラリ API をラップすることに最初は成功しました (SWIG はすべての C および Java JNI コードを自動生成します)。

つまり、x86 ラップトップで Java アプリケーションを作成し、ネイティブ共有ライブラリを呼び出すことができる立場にいます。

次のステップは、Android NDK を使用して、ターゲットのスマートフォン プラットフォーム (おそらく ARM) 用のネイティブ共有ライブラリを作成することです。

最終的には、ライブラリと連携する Android GUI を開発する予定です。

ただ、当面の対策として、なんとかスマートフォンの端末からJavaアプリを走らせることはできないのでしょうか?

これにより、Android GUI を作成する次のステップに進む前に、ラップトップで使用したのと同じ Java「ハーネス」アプリケーションをスマートフォンで使用して、それが機能するかどうかを確認できます。

アップデート

AndroidはJava言語を使用していますが、Javaバイトコードを使用していないことを忘れていました-そのdalvikは.apkにバンドルされているため、端末を開いてJavaハーネスを実行できると思いました。

$ java harness

意味がありません

Google アプリ ストアから Android ターミナル エミュレーター (Jack Palevich) を入手できることがわかりましたが、それを avd エミュレーターにどのように搭載できるかわかりません (私は現在スマートフォンを持っていません)。

4

1 に答える 1

1

android.os.Exec.createSubprocess() api をテストできると思います。デモコード:

Class<?> execClass = Class.forName("android.os.Exec");
    Method createSubprocess = execClass.getMethod("createSubprocess", String.class, String.class, String.class, int[].class);
    int[] pid = new int[1];
    FileDescriptor fd = (FileDescriptor)createSubprocess.invoke(null, "/system/bin/yourexecfile", "/", null, pid);

    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fd)));
    String output = "";
    try {
        String line;
        while ((line = reader.readLine()) != null) {
            output += line + "\n";
        }
    }
    catch (IOException e) {}

パス「/system/bin」を使用できます。しかし、他のパスについてはわかりませんが、テストできます。幸運を!^-^

于 2012-08-01T08:54:57.783 に答える