客制化知识小结--device目录下的文件解析

老罗的文章:http://blog.csdn.net/luoshengyang/article/details/18928789

                    http://0xcc0xcd.com/p/index.php(进击的程序员)

vendorsetup.sh

add_lunch_combo full_yyd8163_tb_m-eng

add_lunch_combo full_yyd8163_tb_m-user
调用envsetup.sh中的函数,为LUNCH_MENU_CHOICES数组添加元素full_yyd8163_tb_m-eng
和full_yyd8163_tb_m-user
使用lunch的时候,不输入任何东西就会选full_yyd8163_tb_m-user,还可以输入1或2选择full_yyd8163_tb_m-eng
或者full_yyd8163_tb_m-user

而LUNCH_MENU_CHOICES应该是不知道在哪export的变量

 

lunch是编译非常重要关键的一步。这是指定TARGET_PRODUCT

首先编译时回去收集device目录下的所有AndroidProducts.mk。AndroidProduct.mk中需要指定编译的mk文件,如下分析是RK3399和mt8163的AndroidProducts.mk:

PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/rk3399.mk \
    $(LOCAL_DIR)/rk3399_64.mk \
    $(LOCAL_DIR)/rk3399_64_vr.mk \
    $(LOCAL_DIR)/rk3399_disvr.mk \
	$(LOCAL_DIR)/rk3399_stbvr.mk \
    $(LOCAL_DIR)/rk3399_32.mk \
    $(LOCAL_DIR)/rk3399_box.mk \
    $(LOCAL_DIR)/rk3399_mid.mk \
    $(LOCAL_DIR)/rk3399_64_only.mk
PRODUCT_MAKEFILES := $(LOCAL_DIR)/full_yyd8163_tb_m.mk

device目录下(包括各级子目录)那么多的AndroidProducts.mk文件,然后每个AndroidProducts.mk文件中可以指定很多个mk文件,那么最终是用哪个mk文件呢,就由TARGET_PRODUCT决定,就是选择$(TARGET_PRODUCT).mk。在$(TARGET_PRODUCT).mk中一般需要定义一些全局变量,下面分别看RK3399和mt8163的一个mk:

RK3399_mid.mk

#
# Copyright 2014 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.
#

$(call inherit-product, $(LOCAL_PATH)/rk3399_64.mk)

PRODUCT_NAME := rk3399_mid
PRODUCT_DEVICE := rk3399_mid
PRODUCT_MODEL := Y150C

PRODUCT_AAPT_CONFIG := normal large mdpi tvdpi hdpi xhdpi
PRODUCT_AAPT_PREF_CONFIG := hdpi

# debug-logs
ifneq ($(TARGET_BUILD_VARIANT),user)
MIXIN_DEBUG_LOGS := true
endif

# google apps
BUILD_WITH_GOOGLE_MARKET := true
BUILD_WITH_GOOGLE_MARKET_ALL := false
BUILD_WITH_GOOGLE_FRP := true

#for data encrypt options
BUILD_WITH_FORCEENCRYPT := true

#for GMS Certification
BUILD_WITH_GMS_CER := false

#for drm widevine
BUILD_WITH_WIDEVINE := true

#for cts requirement
ifeq ($(TARGET_BUILD_VARIANT),user)
PRODUCT_PROPERTY_OVERRIDES += \
    ro.adb.secure=1 \
    persist.sys.usb.config=mtp
else
PRODUCT_PROPERTY_OVERRIDES += \
    ro.adb.secure=0 \
    persist.sys.usb.config=mtp,adb
endif

BOARD_NFC_SUPPORT := false
BOARD_HAS_GPS := false

BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := true
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
BOARD_PROXIMITY_SENSOR_SUPPORT := false
BOARD_LIGHT_SENSOR_SUPPORT := true
BOARD_PRESSURE_SENSOR_SUPPORT := false
BOARD_TEMPERATURE_SENSOR_SUPPORT := false

#for bootanimation/shutdown support
BOOT_SHUTDOWN_ANIMATION_RINGING := true

PRODUCT_HAS_CAMERA := true
TARGET_ROCKCHIP_PCBATEST := true

PRODUCT_COPY_FILES += \
   device/rockchip/rk3399/rk3399_64/ddr_config.xml:system/etc/ddr_config.xml \
   device/rockchip/rk3399/rk3399_64/video_status:system/etc/video_status 


PRODUCT_PACKAGES += \
    SoundRecorder

full_yyd8163_tb_m.mk

# Inherit for devices that support 64-bit primary and 32-bit secondary zygote startup script
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)

# Inherit from those products. Most specific first.
#$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk)
# Inherit from those products. Most specific first.
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)

# Set target and base project for flavor build
MTK_TARGET_PROJECT := $(subst full_,,$(TARGET_PRODUCT))
MTK_BASE_PROJECT := $(MTK_TARGET_PROJECT)
MTK_PROJECT_FOLDER := $(shell find device/* -maxdepth 1 -name $(MTK_BASE_PROJECT))
MTK_TARGET_PROJECT_FOLDER := $(shell find device/* -maxdepth 1 -name $(MTK_TARGET_PROJECT))

# This is where we'd set a backup provider if we had one
#$(call inherit-product, device/sample/products/backup_overlay.mk)
# Inherit from maguro device
$(call inherit-product, device/yongyida/yyd8163_tb_m/device.mk)

# set locales & aapt config.
PRODUCT_LOCALES := zh_CN #en_US es_ES zh_CN zh_TW ru_RU pt_BR fr_FR de_DE tr_TR it_IT in_ID ms_MY vi_VN ar_EG hi_IN th_TH bn_IN pt_PT ur_PK fa_IR nl_NL el_GR hu_HU tl_PH ro_RO cs_CZ iw_IL my_MM km_KH ko_KR pl_PL es_US bg_BG hr_HR lv_LV lt_LT sk_SK uk_UA de_AT da_DK fi_FI nb_NO sv_SE en_GB ja_JP

#AAPT configuration
PRODUCT_AAPT_CONFIG := normal large xlarge
PRODUCT_AAPT_PREF_CONFIG := hdpi

# Set those variables here to overwri
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值