1. 程式人生 > >android源碼編譯時拷貝替換指定文件

android源碼編譯時拷貝替換指定文件

android cau value 定制 部分 get android源碼 oal first

由於要做版本定制,某些版本的資源文件等(例如style.xml)需要不同的配置,但是android的編譯開關無法在xml裏使用,於是想到了編譯時根據不同的編譯開關編譯不同的文件,如下:

1.建立A.xml文件,當編譯開關OEM_CUSTOMER_SUPPORT=22時編譯將該文件拷貝到指定目錄。

建立B.xml文件,當編譯開關OEM_CUSTOMER_SUPPORT不等於22時,將該文件拷貝到指定目錄。

2.編寫拷貝腳本文件myDefine.sh,內容為:

#!/bin/bash
#
if [ $OEM_CUSTOMER_SUPPORT -eq 22 ] ; then
cp packages/apps/xxx/config/A.xml packages/apps/xxx/res/values/styles.xml

else
cp packages/apps/xxx/config/B.xml packages/apps/xxx/res/values/styles.xml
fi

3.將拷貝腳本文件myDefine.sh加入到系統編譯build/core/main.mk

......

# A helper goal printing out install paths
.PHONY: GET-INSTALL-PATH
GET-INSTALL-PATH:
@$(foreach m, $(ALL_MODULES), $(if $(ALL_MODULES.$(m).INSTALLED), \
echo ‘INSTALL-PATH: $(m) $(ALL_MODULES.$(m).INSTALLED)‘;))

else # ONE_SHOT_MAKEFILE

ifneq ($(dont_bother),true)
#
# Include all of the makefiles in the system
#

# Can‘t use first-makefiles-under here because
# --mindepth=2 makes the prunes not work.

$(shell chmod 777 packages/apps/PeepHole/config/PeepHoleStyle.sh)
$(shell packages/apps/PeepHole/config/PeepHoleStyle.sh)

......

粗體部分為新加內容,第一句是使得sh腳本有讀寫執行的權限,第二句是真正的執行

android源碼編譯時拷貝替換指定文件