首先解决这个问题的思路是,将android.mk 转换成对应的android.bp文件 。
android.mk大家都很熟悉了,就是android下编译模块的配置文件,可以理解为android makefile。从android N之后,我们发现好多模块下面没有了android.mk文件,多了一个android.bp文件。这个是google在android N之后新的编译配置文件。
在实际项目中,我们需要把android.mk转换为android.bp,还好sdk中给我提供了androidmk工具,可以直接把android.mk转换为android.bp.
源码在:build/soong/androidmk
我们在out下面找下androidmk工具,如果没有可以执行命令:m -j blueprint_tools
然后在在out/soong/host/linux-x86/bin/androidmk生成工具
androidmk android.mk > android.bp
这样即可把android.mk转换为android.bp文件了
执行方式:
alps$ androidmk Android2.mk > Android2.bp
查看前后差异:Android2.mk如下
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under,src)
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_PACKAGE_NAME := OdmFileManager
LOCAL_PROPRIETARY_MODULE := false
LOCAL_MODULE_OWNER := mtk
LOCAL_CERTIFICATE := platform
LOCAL_OVERRIDES_PACKAGES := FileManager
LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
LOCAL_JAVA_LIBRARIES += mediatek-framework
LOCAL_JAVA_LIBRARIES += mediatek-common
LOCAL_STATIC_JAVA_LIBRARIES += com.mediatek.omadrm.common
include $(BUILD_PACKAGE)
include
(
c
a
l
l
a
l
l
−
m
a
k
e
f
i
l
e
s
−
u
n
d
e
r
,
(call all-makefiles-under,
(callall−makefiles−under,(LOCAL_PATH))
对应的Android2.bp如下:
android_app {
srcs: ["src/**/*.java"],
// ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_PRIVATE_PLATFORM_APIS
// LOCAL_PRIVATE_PLATFORM_APIS := true
name: "OdmFileManager",
proprietary: false,
owner: "mtk",
certificate: "platform",
// ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_OVERRIDES_PACKAGES
// LOCAL_OVERRIDES_PACKAGES := FileManager
static_libs: ["android-support-v4"] + ["com.mediatek.omadrm.common"],
libs: ["mediatek-framework"] + ["mediatek-common"],
}