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文件了

 

有了这个工具我们很容易的修改android.bp

比如我们想把某个动态链接的bin改为静态链接,则可如下修改:

cc_binary {

    name: "updater",

    srcs: ["updater.cpp"],

    local_include_dirs: [
        "..",
        "include",
    ],

    cflags: [
        "-Wno-unused-parameter",
        "-Werror",
    ],

    share_libs: ["libupdater"],

}
把里面的动态库链接改为静态链接:share_libs改为static_libs,然后增加:static_executable: true,


cc_binary {
 
    name: "updater",
 
    srcs: ["updater.cpp"],
 
    local_include_dirs: [
        "..",
        "include",
    ],
 
    cflags: [
        "-Wno-unused-parameter",
        "-Werror",
    ],
 
    static_libs: ["libupdater"],
 
    static_executable: true,
 
}
然后即可编译出静态链接的bin文件
 

手动将Android.bp转换Android.mk可能会比较繁琐,因为它们的格式和结构有所不同。但是,你可以按照以下步骤进行转换: 1. 创建一个新的Android.mk文件,并在文件开头添加以下内容: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ``` 2. 找到Android.bp文件中的每个模块定义。每个模块定义通常以`cc_library`、`cc_binary`、`java_library`等关键字开始。将每个模块定义转换Android.mk规则。 例如,将以下Android.bp示例转换Android.mk: ```bp cc_library { name: "my_library", srcs: ["file1.cpp", "file2.cpp"], include_dirs: ["include"], shared_libs: ["lib1", "lib2"], cflags: ["-Wall", "-Werror"], cppflags: ["-std=c++11"], target: { android: { cflags: ["-fno-exceptions"], }, }, } ``` 可以转换为以下Android.mk规则: ```mk LOCAL_MODULE := my_library LOCAL_SRC_FILES := file1.cpp file2.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_SHARED_LIBRARIES := lib1 lib2 LOCAL_CFLAGS := -Wall -Werror LOCAL_CPPFLAGS := -std=c++11 ifeq ($(TARGET_ARCH),arm) LOCAL_CFLAGS += -fno-exceptions endif include $(BUILD_STATIC_LIBRARY) ``` 根据你的模块类型和属性,转换规则的具体细节可能会有所不同。 3. 对于每个模块定义,将转换后的规则添加到Android.mk文件中。 4. 根据你的项目结构和依赖关系,可以按照需要添加其他规则和变量。 5. 最后,在Android.mk文件的末尾,添加以下内容来完成文件的闭合和构建规则的设置: ``` include $(BUILD_PACKAGE) ``` 请注意,手动转换可能会比较繁琐,并且需要根据你的具体情况进行调整。在进行手动转换之前,最好先了解Android.mk文件的结构和语法规则,以及你要转换的每个模块类型的规则和属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值