android源码编译时拷贝替换指定文件

Posted 苏小七

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android源码编译时拷贝替换指定文件相关的知识,希望对你有一定的参考价值。

由于要做版本定制,某些版本的资源文件等(例如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源码编译时拷贝替换指定文件的主要内容,如果未能解决你的问题,请参考以下文章

Android编译时动态替换Jar包中的类

Android源码编译是干啥

Android Framework 之 使用系统编译的文件 添加到 SDK 的源码

如何使用Android Studio开发/调试Android源码

深入理解 Android 模块化里的资源冲突

深入理解 Android 模块化里的资源冲突