-3

Android ROM (galaxys2att、gingerbread) のビルドに問題があります。私は、メイクファイルの処理についてもっと賢くなる時が来たと判断しました。そこで、簡単なテスト プロジェクトを作成して遊んでみました。しかし、それはコンパイルされていません。これが私がしたことです:

1ビルド可能なモジュールの下にディレクトリ (" myproject/ ") を作成します (私は " Mms/ " を使用しましたが、他にも同じ問題がありました)。2そのディレクトリ
に作成しますAndroid.mk

こんにちは:

   echo "Hello from myproject"

(hello: と echo: の間に空白行はありません: ページ エディターがこれらを追加しました)

3 mm" Mms/ " ディレクトリで実行しました。

Mms およびその他のサブプロジェクトはコンパイルされましたが、myproject の証拠はありません。

Android.mk in Mms 含まれる行 include $(call all-makefiles-under, $(LOCAL_PATH))

もちろんenvsetup.shもともと走りました。
ここで何が欠けていますか?

4

1 に答える 1

1

Android NDKには、にいくつかのドキュメントがあり.../docs/ANDROID-MK.htmlます。残念ながら、既存のmakefileを調べる以外に、見つけるべきドキュメントはあまりありません。共有ライブラリを構築するための最小限Android.mkのものは、次のようになります

# "initialize" Makefile
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

# setup some variables
LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

# do the build
include $(BUILD_SHARED_LIBRARY)

AnAndroid.mkは通常のMakefileとは異なります。ボイラープレートがあり、サブmakefileで必要ないくつかの変数を定義してから、事前定義されたAndroidmakefileを含めて作業を行います。

BUILD_SHARED_LIBRARYたとえば、は次のように定義されbuild/core/build-all.mkます。

BUILD_SHARED_LIBRARY := $(BUILD_SYSTEM)/build-shared-library.mk

それ自体がいくつかのmake変数を定義およびチェックし、次に$(BUILD_SYSTEM)/build-module.mk、などを含みます。

build-all.mk内には、静的ライブラリまたは実行可能ファイルを構築するために使用されるBUILD_HOST_EXECUTABLE、、BUILD_STATIC_LIBRARYなどの他の変数も定義されています。BUILD_EXECUTABLE

于 2013-01-16T22:31:44.200 に答える