2012-06-14 26 views
0

我想在Android.mk中使用makefile語法。因爲我想生成一個特殊的bin文件。但我不知道該怎麼做。我嘗試了幾種方法,但沒有人工作。有人知道嗎? 謝謝。如何在Android.mk中使用makefile語法

現在,我的實現是:

include $(CLEAR_VARS) 
INTERNAL_OBMRES_FILES := $(TOPDIR)frameworks/base/core/res/assets/images/android-logo-mask.png \ 
    $(TOPDIR)frameworks/base/core/res/assets/images/android-logo-shine.png 

LOCAL_MODULE := obmRes.bin 
LOCAL_MODULE_TAGS := optional 
LOCAL_REQUIRED_MODULES := $(RGB2565) 
BUILT_OBMRES_TARGET := $(PRODUCT_OUT)/obmRes.bin 

obmRes.bin:$(BUILT_OBMRES_TARGET) 
$(BUILT_OBMRES_TARGET): $(INTERNAL_OBMRES_FILES) 
     $(hide) convert $(TOPDIR)frameworks/base/core/res/assets/images/android-logo-mask.png $(TOPDIR)frameworks/base/core/res/assets/images/android-logo-shine.png -compose dstover -size 256x64 -composite -depth 8 rgb:$(PRODUCT_OUT)/temp.bin 
     $(hide) $(RGB2565) < $(PRODUCT_OUT)/temp.bin > [email protected] 
     $(hide) rm -f $(PRODUCT_OUT)/temp.bin 

include $(BUILD_PHONY_PACKAGE) 

但它不工作。

+0

Android.mk不是您的JNI構建的* makefile - 它是更大的makefile的一部分。你可以使用makefile語法。但正在建造的目標通常不在您的控制範圍之內。請詳細介紹「特殊bin文件」。 –

+0

感謝您的回覆。那麼,我想用imageMagic來結合兩個PNG文件。並將其輸出爲原始文件。我想通過Android.mk來控制它。 – xeonxu

回答

0

你想在編譯時爲你的Android項目組合兩個PNG,對吧?你爲什麼要使用NDK呢?爲主機編寫一個程序(可以將Cygwin和GCC與ImageMagick一起使用),運行它,然後將生成的PNG放入項目中。 NDK中無需這樣做。

NDK(或任何其他makefile)中的Makefile是你運行的東西,而不是用戶。無論您在製作應用程序之前做了什麼,makefiles都會完成。

現在,如果您希望用戶執行PNG組合,那麼您不需要「特殊容器」。您只需要一個常規的NDK項目,該項目會生成一個庫(.SO),供您的Android應用程序調用,並將文件名作爲參數傳遞。該應用程序,一旦你建立併發布它,就不會有makefile - 只是一個編譯庫。

編輯從OP的問題編輯:不要浪費時間與Android NDK。只需運行Cygwin(或* nix shell)下的相關命令即可。

+0

這不適用於構建Android應用程序。我的工作是發佈android rom。當啓動運行時,'特殊倉'用於顯示徽標。我的目的是在構建整個android系統時自動生成這個文件。 – xeonxu

+0

您需要多久重新制作一次該徽標?你是否真的需要確保它是最新的每一個構建? –