如何在Android.mk中使用makefile语法

时间:2012-06-14 15:07:06

标签: android makefile

我想在Android.mk中使用 makefile 语法。因为我想生成一个特殊的bin文件。但我不知道该怎么做。我尝试了几种方法,但没有人工作。谁知道呢? 感谢。

现在,我的实施是:

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 > $@
        $(hide) rm -f $(PRODUCT_OUT)/temp.bin

include $(BUILD_PHONY_PACKAGE)

但它不起作用。

1 个答案:

答案 0 :(得分:0)

你想在编译时为你的Android项目组合两个PNG,对吗?为什么要使用NDK呢?为主机编写程序(可以使用Cygwin和GCC与ImageMagick),运行它,然后将生成的PNG放入项目中。无需在NDK中这样做。

NDK(或任何其他makefile)中的Makefile是您运行的,而不是用户。无论在makefile中做什么都是在你发布应用程序之前完成的。

现在,如果您希望用户进行PNG组合,那么您不需要“特殊箱”。您只需要一个常规的NDK项目,它会生成一个您的Android应用程序将调用的库(.SO),并将文件名作为参数传递。该应用程序,一旦你构建并发布它,就不会有makefile - 只是一个编译过的库。

来自OP的问题编辑编辑:不要浪费时间使用Android NDK。只需在Cygwin(或* nix shell)下运行相关命令。