IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android android.bp使用 编译宏 -> 正文阅读

[移动开发]Android android.bp使用 编译宏

以 hardware 下的?android.hardware.bluetooth@1.0-impl.so 为例。

android.bp

//
// Copyright (C) 2016 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// ? ? ?http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


//引入go脚本

bootstrap_go_package {
? ? name: "soong-xxxparser",
? ? pkgPath: "android/soong/xxxparser",

? ? deps: [
? ? ? ? "blueprint",
? ? ? ? "blueprint-pathtools",
? ? ? ? "soong",
? ? ? ? "soong-android",
? ? ? ? "soong-cc",
? ? ? ? "soong-genrule",
? ? ],

? ? srcs: [
? ? ? ? "xxxparser.go",
? ? ],
? ? pluginFor: ["soong_build"],
}

xxxparser_defaults {
? ? name: "xxxparser_defaults",
}

//ANDROIDBP_FUN = ["YES"]

cc_library_shared {
? ? name: "android.hardware.bluetooth@1.0-impl",
? ? defaults: ["hidl_defaults", "xxxparser_defaults",],
?? ?//["hidl_defaults"], "xxxparser_defaults",
? ? vendor: true,
? ? relative_install_path: "hw",
?? ?//cflags: ["-Wno-error=implicit-function-declaration"],
? ? srcs: [
? ? ? ? "bluetooth_hci.cc",
? ? ? ? "bluetooth_address.cc",
? ? ? ? "vendor_interface.cc",
? ? ? ? "multibt_hal.cc",
? ? ],
?? ?include_dirs: [
? ? ? ? "system/bt/hci/include"
?? ?],
? ? shared_libs: [
? ? ? ? "android.hardware.bluetooth@1.0",
? ? ? ? "libbase",
? ? ? ? "libcutils",
? ? ? ? "libhardware",
? ? ? ? "libhidlbase",
? ? ? ? "libhidltransport",
? ? ? ? "liblog",
? ? ? ? "libutils","libutilscallstack"
? ? ],
? ? static_libs: [
? ? ? ? "android.hardware.bluetooth-async",
? ? ? ? "android.hardware.bluetooth-hci",
? ? ],
}

cc_library_static {
? ? name: "android.hardware.bluetooth-async",
? ? vendor: true,
? ? defaults: ["hidl_defaults"],
? ? srcs: [
? ? ? ? "async_fd_watcher.cc",
? ? ],
? ? export_include_dirs: ["."],
? ? shared_libs: [
? ? ? ? "liblog",
? ? ],
}

cc_library_static {
? ? name: "android.hardware.bluetooth-hci",
? ? vendor: true,
? ? defaults: ["hidl_defaults"],
? ? srcs: [
? ? ? ? "hci_packetizer.cc",
? ? ? ? "hci_protocol.cc",
? ? ? ? "h4_protocol.cc",
? ? ? ? "mct_protocol.cc","mycallstack.cpp"
? ? ],
? ? export_include_dirs: ["."],
? ? shared_libs: [
? ? ? ? "libbase",
? ? ? ? "libhidlbase",
? ? ? ? "liblog",
? ? ? ? "libutils","libutilscallstack"
? ? ],
}

//cc_test {
// ? ?name: "bluetooth-vendor-interface-unit-tests",
// ? ?vendor: true,
// ? ?defaults: ["hidl_defaults"],
// ? ?srcs: [
// ? ? ? ?"test/async_fd_watcher_unittest.cc",
// ? ? ? ?"test/h4_protocol_unittest.cc",
// ? ? ? ?"test/mct_protocol_unittest.cc",
// ? ?],
// ? ?local_include_dirs: [
// ? ? ? ?"test",
// ? ?],
// ? ?shared_libs: [
// ? ? ? ?"libbase",
// ? ? ? ?"libhidlbase",
// ? ? ? ?"liblog",
// ? ? ? ?"libutils",
// ? ?],
// ? ?static_libs: [
// ? ? ? ?"android.hardware.bluetooth-async",
// ? ? ? ?"android.hardware.bluetooth-hci",
// ? ? ? ?"libgmock",
// ? ?],
//}

//cc_test_host {
// ? ?name: "bluetooth-address-unit-tests",
// ? ?defaults: ["hidl_defaults"],
// ? ?srcs: [
// ? ? ? ?"bluetooth_address.cc",
// ? ? ? ?"test/bluetooth_address_test.cc",
// ? ? ? ?"test/properties.cc",
// ? ?],
// ? ?local_include_dirs: [
// ? ? ? ?"test",
// ? ?],
// ? ?shared_libs: [
// ? ? ? ?"libbase",
// ? ? ? ?"liblog",
// ? ?],
//}

cc_binary {
? ? name: "android.hardware.bluetooth@1.0-service",
? ? defaults: ["hidl_defaults"],
? ? relative_install_path: "hw",
? ? vendor: true,
? ? init_rc: ["android.hardware.bluetooth@1.0-service.rc"],
? ? srcs: ["service.cpp"],
?? ?cflags: ["-Wno-error=implicit-function-declaration"],

? ? shared_libs: [
? ? ? ? "liblog",
? ? ? ? "libcutils",
? ? ? ? "libdl",
? ? ? ? "libbase",
? ? ? ? "libutils",
?? ??? ?"libutilscallstack",
? ? ? ? "libhardware",
? ? ? ? "libhidlbase",
? ? ? ? "libhidltransport",
? ? ? ? "android.hardware.bluetooth@1.0",
? ? ],
}

//cc_binary {
// ? ?defaults: ["xxxparser_defaults"],
// ? ?name: "AndroidBp",
// ? ?srcs: ["main.c"],
// ? ?cflags: ["-Wno-error=implicit-function-declaration"],
// ? ?shared_libs: [
// ? ? ? ?"libcutils",
// ? ? ? ?"liblog",
// ? ? ? ?"libutils",
// ? ?],
//}
?

android.bp 同目录下的go文件?xxxparser.go


package xxxparser
import (
? ? "android/soong/android"
? ? "android/soong/cc"
)
? ??
func init() {
? ? //resister a module "xxxparser_defaults"
? ? android.RegisterModuleType("xxxparser_defaults", xxxdroidDefaultsFactory)
}

func xxxdroidDefaultsFactory() (android.Module) {
? ? module := cc.DefaultsFactory()
? ? android.AddLoadHook(module, xxxdroidDefaults)
? ? return module
}
? ? ??
func xxxdroidDefaults(ctx android.LoadHookContext) {
? ? type props struct {
? ? ? ? Cflags []string
? ? }
? ? p := &props{}
? ? p.Cflags = globalDefaults(ctx)
? ? ctx.AppendProperties(p)
}

func globalDefaults(ctx android.BaseContext) ([]string) {
? ? var cppflags []string
? ? //if ctx.AConfig().Getenv("ANDROIDBP_FUN") == "YES" {
? ? ? // cppflags = append(cppflags,"-DXXX")
? ? //}
?? ?
?? ?//export BLUETOOTH_MODULE=BK3515N
?? ?if ctx.AConfig().Getenv("BLUETOOTH_MODULE") == "BK3515N" {
? ? ? ?cppflags = append(cppflags,"-DUSE_BK3515N")
? ? }
? ? return cppflags
}


编译前 先导出环境变量?export BLUETOOTH_MODULE=BK3515N,

那么就会设置宏定义?USE_BK3515N

没有导出BLUETOOTH_MODULE,就不会定义宏了。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:41:20  更:2022-02-28 15:44:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 16:30:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码