2013-01-16 106 views
-3

我在建立Android ROM(galaxys2att,gingerbread)時遇到問題。我決定現在是瞭解makefile處理的時候了。所以我創建了一個簡單的測試項目來玩。但它的不是得到編譯。下面是我所做的:如何將項目添加到Android Build?

1我創建一個目錄(「的myproject/‘)下可構建模塊(我用’彩信/」但其他人有同樣的問題)。
2 I在含有該目錄中創建Android.mk

你好:

echo "Hello from myproject" 

(I有你好之間沒有空行:和回聲:在網頁編輯器中加入這些)

3我在「Mms/」目錄中運行mm

彩信和其他子項目編譯但沒有我項目的證據。

Android.mk在彩信中包含線 include $(call all-makefiles-under, $(LOCAL_PATH))

當然我跑envsetup.sh原本。
我在這裏錯過了什麼?

回答

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) 

Android.mk不像是一個普通的Makefile。你有一個樣板文件,定義子makefile中需要的一些變量,然後通過包含預定義的Android makefile來完成工作。

BUILD_SHARED_LIBRARY,例如,在build/core/build-all.mk定義爲

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

其本身定義並檢查一些使變量,然後包括$(BUILD_SYSTEM)/build-module.mk,依此類推。

在build-all.mk中,還定義了其他變量,如BUILD_HOST_EXECUTABLE,BUILD_STATIC_LIBRARYBUILD_EXECUTABLE,它們用於構建靜態庫或可執行文件。

+0

非常感謝您的回覆。我會試試這個。 - 約翰 – DontPanic

+0

工程太棒了!再次感謝。 – DontPanic