1. 程式人生 > >Android添加項目編譯.

Android添加項目編譯.

android編譯

一.產品配置文件

[由底層向上構建順序: 芯片架構層 -> 核心板層 -> 設備層 -> 產品層]

  1. 芯片架構層: 產品使用的硬件架構,ARM X86等.

  2. 核心主板層: 硬件電路的核心板配置

  3. 設備層: 外圍設備的配置, 鍵盤,鼠標, 外接設備等.

  4. 產品層: 最終系統生成需要的配置, 支持(默認)的國家語言, 是否攝像頭, sensor等.
    [我們只需要配置產品層就行了.]

二.如何把產品加入編譯

1.vendorsetup.sh,這個文件用來統計這個基線所有的產品[型號] (下面以虛擬產品型號:c123)在源碼/device/c123/下,新建vendorsetup.sh,裏面添加”add_lunch_combo c123[產品名稱]”,這個vendorsetup.sh文件將會在 envsetup.sh[build/下]中掃描device和vendor這兩個文件:

# Execute the contents of any vendorsetup.sh files we can find.
for f in `test -d device && find -L device -maxdepth 4 -name ‘vendorsetup.sh‘ 2> /dev/null | sort` `test -d vendor && find -L vendor -maxdepth 4 -name ‘vendorsetup.sh‘ 2> /dev/null | sort`
do    
    echo "including $f"
    . $f
done
unset f

2.AndroidProducts.mk,這個存放在具體產品文件下[device/c123/],用來定義產品的一些配置信息.一般只用來做一個'重定向':

PRODUCT_MAKEFILES :=     $(LOCAL_DIR)/c123.mk1212

3.在device/c123/下新建名稱為c123.mk[就是AndroidProducts.mk的重定向文件]這個文件通常會配置一些手機需要的文件信息,如media,audio等xml文件,GMS包,jar引入,產品信息的命名等,也可以將一些需要拷貝到手機裏面的文件放在這裏:

# media_profiles and media_codecs 
PRODUCT_COPY_FILES += device/c123/media/media_profiles.xml:system/etc/media_profiles.xml                       device/c123/media/media_codecs.xml:system/etc/media_codecs.xml ...
PRODUCT_NAME := 產品名稱[設置 - 關於設備]
PRODUCT_DEVICE := 設備名稱
PRODUCT_BRAND := 手機品牌
PRODUCT_MODEL := 產品型號
...

4.BoardConfig.mk,主要是配置使用什麽架構,調整分區,設置分區大小等.也是在device/c123/目錄下.

TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
...
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 分區大小[單位是bit]
BOARD_USERDATAIMAGE_PARTITION_SIZE := 分區大小[單位是bit]

基本以上文件都是放在項目文件下的,在源碼根目錄執行 ‘source build/envsetup.sh’ 的時候會自動把這些文件加載進行,然後 ‘choosecombo’ 選擇添加的項目名,然後執行 ‘make’ 就會編譯那個項目了.
關於Android.mk這個文件是一個android編譯單個目標的makefile.基本上源碼裏面每個apk生成以及farmework很多編譯都需要這個文件.
  
註:源碼是Android 6.0.[此文章本人於在CSDN發表過.]

本文出自 “Amos的技術博客” 博客,轉載請與作者聯系!

Android添加項目編譯.