您的位置:首页 > 移动开发 > Android开发

AndroidL 源码编译 预置GMS包与第三方应用 系统属性管理

2015-11-27 11:44 471 查看
一,android整体编译

1.减压源码到指定的目录

2.安装JDK

3.执行以下脚本进行编译

#!/bin/bash

# 导入jdk环境变量

JAVA_HOME=/home/xxx/xxx/xxx/java-1.7.0-openjdk-1.7.0.9.x86_64

JRE_HOME=/home/xxx/xxx/xxx/java-1.7.0-openjdk-1.7.0.9.x86_64/jre

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

# 导入编译环境变量

source build/envsetup.sh

#lunch n # 采用第n种编译方法编译,输入lunch可以看到所有的编译方式

#make -j16 # 编译整个流



#编译短信模块, mmm xxx/xxx为编译当xxx/xxx目录下的Android.mk文件中定义的模块,它所依赖的模块不编译

#mmm ./packages/apps/Mms

#cd ./packages/apps/Mms

#mm 这两句是编译./packages/apps/Mms目录下以及它子目录下所有的Android.mk文件中定义的模块,它门所依赖的模块不编译



#make otapackage #编译OTA包, make xxx为编译xxx模块以及它所依赖的所有模块



# 编译OTA差分包命令,从xxx_27.zip到xxx_28.zip的查分包27to28.zip

#./build/tools/releasetools/ota_from_target_files -v -i ./out/target/product/XXXXX/obj/PACKAGING/xxx_27.zip ./out/target/product/XXXXX/obj/PACKAGING/xxx_28.zip ./27to28.zip;

二,预置gms包

1.将gms包减压到vendor目录下

2.在build/target/product/generic_no_telephony.mk文件中添加以下内容

......

$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)

+ $(call inherit-product, vendor/google/products/gms.mk)
# 添加这一句

......

3.在build/tools/buildinfo.sh最后加入以下内容,过GMS认证时需将后面的android-google改为公司的client-ID名称

......

+ echo "ro.com.google.clientidbase.am=android-google"

+ echo "ro.com.google.clientidbase.gmm=android-google"

+ echo "ro.com.google.clientidbase.ms=android-google"

+ echo "ro.com.google.clientidbase.yt=android-google"

+ echo "ro.com.google.clientidbase=android-google"

+

echo "# end build properties"

......

4.在vendor/google/products/gms.mk中进行删减要预置的应用



三,预置第三方应用以及库文件放置的位置

1.在vendor下创建一个文件夹Customers_Package,

再在这个文件夹中创建一个thirdapps文件用于放置第三方应用,

创建一个systemfile用于放置不需要编译即可放置到system文件下的内容

2.在Customers_Package下创建一个文件customers_package.mk,并添加以下内容,用于指定要编译的第三方应用模块

PRODUCT_PACKAGES += \

3,在systemfile中创建system文件,并在当前目录下创建copyfiles.mk文件并添加以下内容,用于拷贝system下面文件到system分区对应的位置

copy_files := $(subst $(LOCAL_PATH)/,, \

$(filter-out %.mk,\

$(patsubst ./%,%, \

$(shell find $(LOCAL_PATH) -type f -name "*") \

)))

PRODUCT_COPY_FILES += $(foreach file,$(copy_files),\

$(LOCAL_PATH)/$(file):$(file))

4,将以上两个mk文件加到build/target/product/generic_no_telephony.mk中

......

+ $(call inherit-product-if-exists, vendor/Customers_Package/system_file/copyfiles.mk)

$(call inherit-product, $(SRC_TARGET_DIR)/product/core.mk)

+ $(call inherit-product, vendor/Customers_Package/customers_package.mk)

......

四,统一修改各种系统属性

1.在build/core/下创建build_xxx.mk文件,定义各种需要修改的系统属性别名,如下所示

# ro.build.display.id

export BUILD_DISPLAY_ID=2015_11_30_build

export SMT_VERSION=false

# persist.sys.language

export SYS_LANGUAGE=en

......

2.在build/core/version_defaults.mk中添加以下内容进行编译build_xxx.mk文件

......

INTERNAL_BUILD_ID_MAKEFILE := $(wildcard $(BUILD_SYSTEM)/build_id.mk)

ifneq "" "$(INTERNAL_BUILD_ID_MAKEFILE)"

include $(INTERNAL_BUILD_ID_MAKEFILE)

endif

+ INTERNAL_BUILD_MAKEFILE := $(wildcard $(BUILD_SYSTEM)/build_xxx.mk)

+ ifneq "" "$(INTERNAL_BUILD_MAKEFILE)"

+ include $(INTERNAL_BUILD_MAKEFILE)

+ endif

......

3.在build/tools/buildinfo.sh中进行使用build_xxx.mk中定义的各种值,其他的文件中也可使用,buildinfo.sh中使用的较多

......

echo "ro.build.display.id=$BUILD_DISPLAY_ID"

echo "ro.product.model=$PRODUCT_MODEL"

echo "ro.product.brand=$PRODUCT_BRAND"

echo "ro.product.name=$PRODUCT_NAME"

echo "ro.product.device=$PRODUCT_DEVICE"

echo "ro.product.board=$TARGET_BOOTLOADER_BOARD_NAME"

......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: