AOSP编译错误汇总
unkonw type namespace
从图可以看出是namespace不对.解决方法 将 c
文件改成 cpp
can not link against
因为编译的模块的测试模块依赖的共享库是vendor的, 所以测试模块页必须是vendor的
在测试模块加上:
LOCAL_VENDOR_MODULE := true
missing dependencies
这个是找不到应用的模块, 原因是模块是用 Android.mk
构建编译的,而我编译的测试模块是 Android.bp
构建的
- 全部改成
Android.bp
用androidmk
将Android.mk
生成为Android.bp
, 但是bp是无法条件编译的, 如果里面有条件编译 你可能需要修改你的Android.mk
同时你的模块如果引用了其他模块,其他模块也要改成Android.mk
, 总之就是麻烦 不好用 - 全部改成
Android.mk
下面是例子:
BUILD_NATIVE_TEST
自动包含依赖项gtest
LOCAL_MODULE_TAGS
标志着测试模块
include $(CLEAR_VARS)
LOCAL_MODULE := config-test
LOCAL_SRC_FILES := config_test.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_CFLAGS = -Wall -Werror -Wunused
#LOCAL_CLANG_CFLAGS += -Wno-error=unused-const-variable -Wno-error=unused-private-field
LOCAL_MODULE_TAGS := tests
LOCAL_SHARED_LIBRARIES := libconfig
LOCAL_VENDOR_MODULE := true
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
include $(BUILD_NATIVE_TEST)
error: overriding commands for target
错误
makefile文件,发现去掉stem可以编译,但肯定不能去掉,去掉就达不到覆盖adbd的效果了, stem的意思是编译后adbd-root 然后名为adbd
diff --git a/system/core/adb/Android.bp b/system/core/adb/Android.bp
index bf54c278cd..9677c9181f 100644
--- a/system/core/adb/Android.bp
+++ b/system/core/adb/Android.bp
@@ -536,7 +536,6 @@ cc_binary {
cc_binary {
name: "adbd-root",
- stem: "adbd",
host_supported: false,
defaults: ["adbd_bin_defaults"],
cflags: [
最终解决方法 BoardConfig.mk 中添加:
BUILD_BROKEN_DUP_RULES := true