Android.mk 虚假包使用 mma 构建,但不使用 make 构建

问题描述 投票:0回答:1

使用 Android 9 构建系统,我能够使用

BUILD_PHONY_PACKAGE
LOCAL_ADDITIONAL_DEPENDENCIES
能够在 Android.mk 文件中执行自定义构建,但是,现在我切换到 Android 11,但不知何故无法让它工作。如果您不熟悉 Android 构建系统的虚假包构建模板,请参阅 https://kristianrumberg.wordpress.com/2016/02/13/android-local-module-based-on-custom-target/

奇怪的是,如果我用

mma
编译,那么它会成功构建,但是如果我使用
make -j8
,那么makefile中指定的目标根本不会执行。我想知道我错过了什么。请看下面的例子:

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

LOCAL_MODULE := mypackage
LOCAL_MODULE_TAGS := optional

mypackage_ANDROID_API ?= 28
mypackage_ANDROID_NDK_CROSS_COMPILE := aarch64-linux-android$(mypackage_ANDROID_API)-
mypackage_LIBDIR := lib64
mypackage_ARCH := arm64
mypackage_ANDROID_NDK_PATH := toolchain/android-ndk/android-ndk-r19c-linux-x86_64
mypackage_ANDROID_NDK_BIN_PATH := $(mypackage_ANDROID_NDK_PATH)/toolchains/llvm/prebuilt/linux-x86_64/bin

mypackage_ANDROID_DIR := $(shell pwd)
mypackage_ANDROID_NDK_DIR := $(mypackage_ANDROID_DIR)/$(mypackage_ANDROID_NDK_PATH)
mypackage_ANDROID_NDK_BIN_DIR := $(mypackage_ANDROID_DIR)/$(mypackage_ANDROID_NDK_BIN_PATH)

mypackage_SOURCE_PATH = $(mypackage_LOCAL_PATH)/mypackage
mypackage_BUILD_PATH = $(OUT_DIR)/standalone/build/mypackage

$(mypackage_BUILD_PATH):
    ....
    ....

$(mypackage_BUILD_PATH)/apps/mypackage: $(mypackage_BUILD_PATH)
    $(hide) \
        ANDROID_NDK=$(mypackage_ANDROID_NDK_DIR) \
        CROSS_COMPILE=$(mypackage_ANDROID_NDK_CROSS_COMPILE) \
        PATH=$(mypackage_ANDROID_NDK_BIN_DIR):$$PATH \
        $(MAKE) -C "${mypackage_BUILD_PATH}" --silent \
            DESTDIR="$(mypackage_ANDROID_DIR)"/"$(PRODUCT_OUT)" \
            generate_apps \
            install_programs

LOCAL_ADDITIONAL_DEPENDENCIES := $(mypackage_BUILD_PATH)/apps/mypackage
include $(BUILD_PHONY_PACKAGE)

我确保这里没有未定义或指向错误位置的路径变量。我也验证了问题是目标

$(mypackage_BUILD_PATH)/apps/mypackage
没有执行。文件的其余部分被执行。我预计目标会被执行,因为它是在
LOCAL_ADDITIONAL_DEPENDENCIES
变量中指定的。

我只是想知道为什么它与

mma
一样有效,但与
make -j8
却不起作用。预先感谢。

makefile android-source
1个回答
0
投票

您可以添加

droidcore
目标来进行全部制作。 例如:

$(mypackage_BUILD_PATH) droidcore:
    ....
    ....

mmm的第一个目标 全力以赴的第二个目标

© www.soinside.com 2019 - 2024. All rights reserved.