Android.bp文件簡介

来源:https://www.cnblogs.com/linhaostudy/archive/2020/02/25/12361659.html
-Advertisement-
Play Games

Android.bp是用來替換Android.mk的配置文件,它使用Blueprint框架來解析。Blueprint是生成、解析Android.bp的工具,是Soong的一部分。Soong則是專為Android編譯而設計的工具,Blueprint只是解析文件的形式,而Soong則解釋內容的含義,最終 ...


Android.bp是用來替換Android.mk的配置文件,它使用Blueprint框架來解析。Blueprint是生成、解析Android.bp的工具,是Soong的一部分。Soong則是專為Android編譯而設計的工具,Blueprint只是解析文件的形式,而Soong則解釋內容的含義,最終轉換成Ninja文件。

1、模塊

定義一個模塊從模塊的類型開始,模塊有不同的類型,如下例子中的“cc_binary”,模塊包含一些屬性格式為“property-name:

property-value”,其中name屬性必須指定,其屬性值必須是全局唯一的。

cc_binary{

    name: "gzip",

    srcs: ["src/test/minigzip.c"],

    shared_libs: ["libz"],

    stl: "none",

}

預設模塊“cc_defaults”的用法如下。

cc_defaults{

    name: "gzip_defaults",

  shared_libs: ["libz"],

    stl: "none",

}



cc_binary{

    name: "gzip",

    defaults: ["gzip_defaults"],

    srcs: ["src/test/minigzip.c"],

}

2、變數

變數賦值可以通過“=”號賦值。

gzip_srcs = ["src/test/minigzip.c"],



cc_binary {

  name: "gzip",

    srcs: gzip_srcs,

  shared_libs: ["libz"],

  stl: "none",

}

3、註釋

註釋包括單行註釋//和多行註釋/* */。

4、類型

具體支持以下幾種類型:

Bool(`true` or `false`)

Integers(`int`)

Strings(`"string"`)

Listsof strings (`["string1", "string2"]`)

Maps(`{key1: "value1", key2: ["value2"]}`)

5、操作符

String類型、字元串列表類型和Map類型支持操作符“+”。

6、格式控制工具

bpfmt是一個bp文件的格式控制工具,包括4個空格的縮進、列表有多個元素時每個元素一行、列表和map的最後一個元素多一個冗餘的逗號等等。工具目錄為:build/blueprint/bpfmt/

在當前目錄下執行以下命令:

7、Android.mk轉為Android.bp

androidmk工具可以把mk文件轉換為bp文件,但一些複雜的用法和自定義的規則需要手動轉換。工具目錄為:build/soong/androidmk/

androidmkAndroid.mk>Android.bp

8、支持的模塊類型

Android.bp可以支持android_app、cc_binary、cc_binary_host等多種類型,具體如下圖:

image

9、支持預編譯類型

Android.bp可以支持5種預編譯類型,如下圖所示:

image

10、模塊名稱解析

soong提供了可以在不同目錄中配置相同的模塊名稱,只要每個模塊的名稱在不同的命令空間中聲明。

soong_namespace{

    imports: ["path/to/otherNamespace1","path/to/otherNamespace2"],

}

11、條件式編譯

cc_library{

    ...

    srcs: ["generic.cpp"],

    arch: {

        arm: {

            srcs: ["arm.cpp"],

        },

        x86: {

            srcs: ["x86.cpp"],

        },

    },

}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有線等效加密(WEP)標準是802.11無線安全早期的解決方案,WEP並不安全。 既然WEP並不安全,為什麼還要學習WEP呢? 1. WEP簡單,相比後續出現的加密協議,它不要求有多麼強大的計算能力。一些老的設備,特別是缺乏足夠處理能力的手持設備,WEP已經是最佳選擇; 2. 較新的技術,如TKIP ...
  • 1.MySQL版本: mysql> select @@version;+ +| @@version |+ +| 8.0.18 |+ +1 row in set (0.00 sec) 2.Centos操作系統版本 [root@Hadoop-00 /]# cat /etc/redhat-releaseC ...
  • 背景 ​ SQL作為一門標準的、通用的、簡單的DSL,在大數據分析中有著越來越重要的地位;Spark在批處理引擎領域當前也是處於絕對的地位,而Spark2.0中的SparkSQL也支持ANSI SQL 2003標準。因此SparkSQL在大數據分析中的地位不言而喻。 本文將通過分析一條SQL在Spa ...
  • https://blog.csdn.net/sumaliqinghua/article/details/86246762 【通俗易懂】關係模式範式分解教程 3NF與BCNF口訣!小白也能看懂原創置頂 沃茲基.碩德 最後發佈於2019-01-10 18:26:14 閱讀數 13082 收藏展開本來是為 ...
  • https://blog.csdn.net/wyh7280/article/details/83350722 範式通俗理解:1NF、2NF、3NF和BNCF原創hongiii 最後發佈於2018-10-24 21:03:43 閱讀數 14993 收藏展開範式通俗理解:1NF、2NF、3NF和BNCF ...
  • SQL腳本 /*************1:刪除臨時表*************/ if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tempTable')) drop table #tempTable; ...
  • 有時候我們需要跨庫join查詢,但是配置多數據源成本又太高,Oracle提供了DBLink功能,MySQL中也有類似的實現:federated engine。 1. MySQL中使用federated引擎的表能夠映射遠程資料庫的表,本地的這張表相當於遠程資料庫某表在本地的引用,在本地對錶的操作能夠實 ...
  • 註意:無特殊說明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 展示非同步任務狀態 當有一個Future(非同步)任務需要展示給用戶時,可以使用FutureBuilder控制項來完成,比如向伺服器發送數據成功時顯示成功提示: 效 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...