您的位置:首页 > 产品设计 > UI/UE

android build/core/main.mk 简单的使用方法

2017-12-21 15:18 477 查看
             android build/core/main.mk 简单使用

             

在开发时,突然有个需求需要在编译rom时,通过makefile编译脚本,区分是否是新功能和原生功能,我次了,这可怎么办,于是参考各种网上的makefile脚本语法,于是做了简单的实现;

下面我们做个demo采用系统默认的壁纸做个例子,通过make编译,进行区分;

1.build/core/下新生成一个属于自己name_feature.mk文件;

//路径
.build/core
//生成一个自己的mk
name_feature.mk


2.打开main.mk文件,加入你新生成的mk文件;

+#add new feature
+include $(BUILD_SYSTEM)/name_feature.mk

# Set up various standard variables based on configuration
# and host information.
include $(BUILD_SYSTEM)/config.mk


3.以上两个步骤做完,下面我们来看name_feature.mk实现

makefile会收集ADDITIONAL_BUILD_PROPERTIES中的属性,追加到build.prop中,在这不多做解释了,有兴趣可网上搜一下;

#add new feature
//如果相同则(条件为真)执行反之执行else
ifeq ($(strip $(ANDROID_FEATURE_NAME_VALUSE)),true)
ADDITIONAL_BUILD_PROPERTIES += ro.andorid_default_wallpaper=true
else
ADDITIONAL_BUILD_PROPERTIES += ro.andorid_default_wallpaper=false
endif


4.下面我们来看java代码如何来增加的;

路径:frameworks/base/core/java/android/app/WallpaperManager.java

private InputStream openDefaultWallpaperRes(Context context, @SetWallpaperFlags int which) {
...
//这一步是增加的代码..
if (SystemProperties.getBoolean("ro.andorid_default_wallpaper", false)) {
is = context.getResources().openRawResource(
com.android.internal.R.drawable.feature_default_wallpaper);
} else {
//系统默认
is = context.getResources().openRawResource(
com.android.internal.R.drawable.default_wallpaper);
}
...
return is;
}


以上就算完成了吗,不是在进行整编的时候还需要加一些属性,一般我们会直接进行make -j4这样默认是false,我们增加的功能是不会引入的,接下来我们看;

//在整编代码时,加上这句就ok了,反之不加
make -j8 ANDROID_FEATURE_NAME_VALUSE=true


以上就ok了

理解makefile和main.mk
http://blog.csdn.net/xiao_yuanjl/article/details/78864287
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐