0

我想在 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)

但它不起作用。

4

1 回答 1

0

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

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

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

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

于 2012-06-14T15:26:46.687 回答