私は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自体に近いものを見つけることは別の話です。
ありがとうございました。私はすでに "file.so"を生成する方法を発見しました。私の本当の問題は、私の質問に示されているMakefileコマンドに従って、 "files.txt"からobjfile.oを生成する方法です。 –
もっと正確に言えば、Androidアプリケーションを生成したくない場合は、C/C++コードをコンパイルするためにNDKが必要です。私がやっていることはDalvikの下にあり、少なくとも私のプラットフォームのためにやっているポート、Androidに含まれます。 AndroidにはすでにC/C++コードがあり、NDKを使用してコンパイルすることはありません。 –