unexpected LOCAL_MODULE_CLASS for prebuilts: FAKE
引言
又有好久没有写点偏重实战类型的博客了,最近一直都在捣鼓源码分析和项目相关事情,是时候来点偏重实战类型的博客了。捯饬点啥实战的呢,正好最近在迁移项目到Android 11上面,发现了一些不少Android 11相较于以前Android版本的一些特性,这里我就分析一个在Android 11上面预编译不支持错误的解决小实战。其错误吗如下:
build/make/core/main.mk:368: warning: "Compile using modified AOSP tree supporting full vendor value-adds"
[ 75% 1088/1440] including FAKE_TEST/Android.mk ...
FAILED:
In file included from out/soong/Android-bengal.mk:1047859:
In file included from FAKE_TEST/Android.mk:9:
In file included from build/make/core/prebuilt.mk:26:
build/make/core/prebuilt_internal.mk:62: error: fake_out : unexpected LOCAL_MODULE_CLASS for prebuilts: FAKE.
09:23:43 ckati failed with: exit status 1
注意:本篇的介绍是基于Android 11平台为基础的!
一.怎么解决
也许读者看到这里就会心里想了,既然Android 11不支持LOCAL_MODULE_CLASS为FAKE类型的,那不用它不就是了换一个方式实现吗,譬如PRODUCT_COPY_FILES关键词来实现不就好了,读者提出了这个解决方法那么证明是对Android的编译是有一定理解的。但是由于历史原因(我们的一套代码需要适配从Android 4.2到Android 11的整个编译环境),且由于我们的很多地方都使用到了FAKE的这种LOCAL_MODULE_CLASS所以此种办法不能采纳。那么我是怎么解决的呢!让我为大家徐徐展开慢慢分析!
1.1 错误的产生
由于源码牵涉到公司,所以这里我自己编写了一个非常简单的Android.mk来还原现场(不要问我为啥不用Android.bp历史包袱啊),其Android.mk定义如下:
LOCAL_PATH := $(call my-dir)
##################

本文介绍了一种在Android 11编译环境中遇到的错误——预编译不支持FAKE类型的LOCAL_MODULE_CLASS,并提供了解决方案。通过将FAKE替换为ETC,成功解决了编译错误。
最低0.47元/天 解锁文章
31万+





