2011-11-08 6 views
1

私はlinuxからgingerbreadにC++で書かれたモデム接続マネージャを移植しています。これは、私がNDKでJavaラッパーを使用するが、 "init.rc"からブート時に呼び出されるサービスである "GUI"付きの "app"に終わらない。私はアンドロイドに関連した最新のドキュメントをビルド/コア/の下にビルドしていないものがいくつか見つかりました。そこには、Androidビルドシステムの基本を説明するいくつかのHTMLファイルと、C++実行可能ファイル、静的ライブラリ、共有ライブラリなどの一般的な状況のテンプレートであるいくつかの "file.mk"があります。Android.mkのルールは、多くのfiles.txtからfile.oを作成し、それを他のファイルとリンクします.oはfiles.cppから作成しました。

私はすべて外部/ myservice下のソースとそれはAndroid自体と同時にコンパイルするつもりです。 (私はすでにカーネルを自分のプラットフォームに移植していますが、モデムだけが残っています)

Android.mkファイルのサブフォルダには、「.cpp」ファイルが変数LOCAL_SRC_FILES:= cppfile1.cpp cppfile2.cpp ....これはcppfile1.o cppfile2.oを生成します。

これらのcppfile * .oをobjfile.oとリンクしてlibfile.soを作成する必要があります。私はfiles.oの束からlibfile.soを生成する方法に関する規則を見つけました。

複雑なことは、「linux makefile」コマンドを移植してobjfile.oを作成することです。ここでは、それはobjfile.oを作るために、テキストファイルの束をマージするリンカの仕事であることを意味し、どの

$(LD) $(LDFLAGS) -r -b binary -o QMIDB.o \ 
      QMI/Entity.txt \ 
      QMI/EnumEntry.txt \ 
      QMI/Enum.txt \ 
      QMI/Field.txt \ 
      QMI/Struct.txt 

どのように見えるかです。そのファイルは初期化されたデータ構造の束であり、そこに実行するコードはありませんが、テキストエディタですべてのfiles.txtを見るのはかなり醜いです。

私はAndroid.mkファイルにそれをどのように統合するのか手がかりがありません。どのようにそれを行うことができますか?私はさらに多くの情報を見つけることができるヒントに感謝しています。 Androidアプリケーションの構築に関する情報は簡単に見つかりますが、Android/Kernel自体に近いものを見つけることは別の話です。

答えて

0

mkから。ファイルを簡単に取得することができます....

Windowsプラットフォームを使用してネイティブコードからファイルを作成する場合は、Ndkのセットアップとcygwinのセットアップを使用する必要があります。まず

インストールした場所に場所NDK ...

その後cygwinのセットアップは1つのチェックにインストールプロセスのすべての機能をデフォルトでないインストール(これは、Linux端末の一種)NDK-buildコマンドとしては、Linuxから認識されていますターミナル。あなたのcygwinのターミナルから今

プロジェクトフォルダのJNIファイルへのアクセスを取得...またはどこMKが配置されて...

http://developer.android.com/sdk/ndk/index.html 

は、端末をcygwinのからNDK-buildコマンドを実行する方法を、次のreferalを使用します。..

今、私たちはNDK-buildコマンドを使用しNDKの完全なパスを提供する...

...遵守のコードは私たちのプロジェクトのための.soファイルを生成した後

これで、System.loadlibraryコマンドを使用してsoファイルを使用する、つまりネイティブコードを使用できるようになりました。

ファイル形式mkを取得するには、ndk setupを使用してコンパイルする必要があります。私たちはネイティブコードを実行するためにファイルを直接コピーできません。また、platfromを使用しています。cygwin setupそれを行うには

+0

ありがとうございました。私はすでに "file.so"を生成する方法を発見しました。私の本当の問題は、私の質問に示されているMakefileコマンドに従って、 "files.txt"からobjfile.oを生成する方法です。 –

+0

もっと正確に言えば、Androidアプリケーションを生成したくない場合は、C/C++コードをコンパイルするためにNDKが必要です。私がやっていることはDalvikの下にあり、少なくとも私のプラットフォームのためにやっているポート、Androidに含まれます。 AndroidにはすでにC/C++コードがあり、NDKを使用してコンパイルすることはありません。 –