-3

我在构建 Android ROM(galaxys2att,姜饼)时遇到问题。我决定是时候更聪明地处理 makefile 了。所以我创建了一个简单的测试项目来玩。但它没有被编译。这是我所做的:

1 我在可构建模块下创建了一个目录(“ myproject/ ”)(我使用了“ Mms/ ”,但其他人也有同样的问题)。
2 我Android.mk在该目录中创建包含

你好:

   echo "Hello from myproject"

(我在 hello: 和 echo: 页面编辑器之间没有空行添加了这些)

3 我mm在“ Mms/ ”目录下运行。

Mms 和其他子项目已编译但没有 myproject 的证据。

Mms 中的 Android.mk 包含的行 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 中需要的一些变量,然后通过包含预定义的 Android makefile 来完成工作。

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_EXECUTABLEBUILD_STATIC_LIBRARYBUILD_EXECUTABLE用于构建静态库或可执行文件。

于 2013-01-16T22:31:44.200 回答