Android 系统模块在构建时不生成输出

Android System Module does not generate output on build

我在构建 android 源代码 (Nougat) 时遇到问题。我有一个名为 poweroffhandler 的系统模块,它是用 C++ 编写的,并且有如下 Android.mk 文件。

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:= \
    #src_files

LOCAL_SHARED_LIBRARIES := \
    #libraries

LOCAL_MODULE:= poweroffhandler

include $(BUILD_EXECUTABLE)  

当我添加文件 $(error error_message) 时,它崩溃了(错误消息 "error_message")并停止了整个构建。(因此模块包含在构建序列中)但它不产生任何输出在构建序列之后。

我试过创建一个 .rc 与之关联的文件,如下所示。

已添加 Android.mk 文件 ->

LOCAL_INIT_RC := PowerOffHandler.rc

创建了一个名为 PowerOffHandler.rc

的新文件
service poweroffhandler /system/bin/poweroffhandler
    class core
    user graphics
    group graphics audio
    disabled
    oneshot

当我创建一个 .rc 文件时,它会在 intermediates 文件夹而不是 system/bin 文件夹中产生输出。

奇怪的是我可以从项目根目录构建模块:make poweroffhandler。然后我完全没有问题,问题是我不能为这个模块使用 build all 脚本(所以我不能进行自主集成)。

任何帮助将不胜感激,谢谢

我找到了答案,当你写一个系统模块时:

  • 您需要注册您的 Android.mk(例如在顶级文件夹中说 include $(call all-subdir-makefiles)
  • 您需要通过说 PRODUCT_PACKAGES += poweroffhandler
  • 将您的模块(由 LOCAL_MODULE:= poweroffhandler 指定)注册到 {root}/build/target/product/embedded.mk