android编译分析之6—device.mk

首先定义了几个device相关的变量,

_device_var_list := \
    DEVICE_NAME \
    DEVICE_BOARD \
    DEVICE_REGION

device和product类似,也有很多的DEVICES,不同的device v通过DEVICES..v进行区分,其中为makefile的全路径。

define dump-device
$(info ==== $(1) ====)\
$(foreach v,$(_device_var_list),\
$(info DEVICES.$(1).$(v) := $(DEVICES.$(1).$(v))))\
$(info --------)
endef

define dump-devices
$(foreach p,$(DEVICES),$(call dump-device,$(p)))
endef

device的继承,

#
# $(1): device to inherit
#
define inherit-device
  $(foreach v,$(_device_var_list), \
      $(eval $(v) := $($(v)) $(INHERIT_TAG)$(strip $(1))))
endef

依然是调用import-nodes,但是第一个参数为DEVICES,不详细分析了。

#
# $(1): device makefile list
#
#TODO: check to make sure that devices have all the necessary vars defined
define import-devices
$(call import-nodes,DEVICES,$(1),$(_device_var_list))
endef
#
# $(1): short device name like "sooner"
#
define _resolve-short-device-name
  $(eval dn := $(strip $(1)))
  $(eval d := \
      $(foreach d,$(DEVICES), \
          $(if $(filter $(dn),$(DEVICES.$(d).DEVICE_NAME)), \
            $(d) \
       )) \
   )
  $(eval d := $(sort $(d)))
  $(if $(filter 1,$(words $(d))), \
    $(d), \
    $(if $(filter 0,$(words $(d))), \
      $(error No matches for device "$(dn)"), \
      $(error Device "$(dn)" ambiguous: matches $(d)) \
    ) \
  )
endef

#
# $(1): short device name like "sooner"
#
define resolve-short-device-name
$(strip $(call _resolve-short-device-name,$(1)))
endef
Android 系统中,预置的 APK 通常是由设备制造商或运营商提供的应用程序,例如浏览器、音乐播放器、相机、日历等等。这些应用程序通常会在系统镜像中预置,以便用户在使用新设备时可以直接使用这些应用程序。 要在 Android 系统中添加预置的 APK,通常需要修改设备制造商或者设备型号的 `device.mk` 文件和应用程序的 `Android.mk` 文件。具体步骤如下: 1. 将预置的 APK 文件复制到设备制造商或者设备型号的 `device` 目录下,通常是类似于 `device/xxx/yyy` 的路径。 2. 在 `device.mk` 文件中添加以下代码,以将预置的 APK 添加到系统镜像中: ``` # 添加预置的 APK 到系统镜像中 PRODUCT_PACKAGES += MyApp1 \ MyApp2 \ MyApp3 ``` 其中,`MyApp1`、`MyApp2`、`MyApp3` 是需要预置的 APK 文件的名称,多个文件名之间使用空格分隔。 3. 在应用程序的 `Android.mk` 文件中添加以下代码,以将应用程序编译到系统镜像中: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_MODULE := MyApp1 LOCAL_SRC_FILES := MyApp1.apk LOCAL_CERTIFICATE := platform include $(BUILD_PREBUILT) ``` 其中,`MyApp1` 是应用程序的名称,`MyApp1.apk` 是应用程序的 APK 文件名。`LOCAL_MODULE_TAGS := optional` 表示该应用程序是可选的,如果设备没有安装该应用程序,也不会影响系统的正常运行。`LOCAL_CERTIFICATE := platform` 表示该应用程序使用系统签名。 需要注意的是,具体的添加方式和代码格式可能会因为设备制造商、设备型号或 Android 版本的不同而有所差异,以上代码仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值