185 lines
6.4 KiB
Bash
185 lines
6.4 KiB
Bash
#!/bin/bash
|
|
|
|
declare -A dpi_aapt_map
|
|
|
|
dpi_aapt_map["ldpi"]="120"
|
|
dpi_aapt_map["140dpi"]="140"
|
|
dpi_aapt_map["mdpi"]="160"
|
|
dpi_aapt_map["180dpi"]="180"
|
|
dpi_aapt_map["200dpi"]="200"
|
|
dpi_aapt_map["tvdpi"]="213"
|
|
dpi_aapt_map["220dpi"]="220"
|
|
dpi_aapt_map["hdpi"]="240"
|
|
dpi_aapt_map["280dpi"]="280"
|
|
dpi_aapt_map["xhdpi"]="320"
|
|
dpi_aapt_map["360dpi"]="360"
|
|
dpi_aapt_map["400dpi"]="400"
|
|
dpi_aapt_map["420dpi"]="420"
|
|
dpi_aapt_map["xxhdpi"]="480"
|
|
dpi_aapt_map["560dpi"]="560"
|
|
dpi_aapt_map["xxxhdpi"]="640"
|
|
|
|
#IS_GO_BUILD=`get_build_var BUILD_WITH_GO_OPT`
|
|
KERNEL_PATH=`get_build_var PRODUCT_KERNEL_PATH`
|
|
if [[ $KERNEL_PATH =~ "kernel" ]] ; then
|
|
log "kernel path: $KERNEL_PATH"
|
|
else
|
|
KERNEL_PATH=kernel
|
|
log "kernel path: $KERNEL_PATH"
|
|
fi
|
|
|
|
# $1 var
|
|
# $2 value
|
|
# $3 msg to display
|
|
# Color: red for failed, green for pass
|
|
assert_env_value() {
|
|
RET=`get_build_var $1`
|
|
if [ $2 = "$RET" ] ; then
|
|
echo -e "\033[32m [Pass] \033[0m \t\"$1\" Check OK!"
|
|
else
|
|
echo -e "\033[31m [Failed] \033[0m \t$1 Check Failed! Expect \"$2\", But was \"$RET\""
|
|
echo -e "\033[31m \"$3\" \033[0m"
|
|
fi
|
|
}
|
|
|
|
# $1 config to be checked
|
|
# $2 file to be checked
|
|
# $3 msg to display
|
|
assert_config_in_file() {
|
|
RET=`grep -c "$1" $2`
|
|
if [ "1" = "$RET" ] ; then
|
|
echo -e "\033[32m [Pass] \033[0m \t\"$1\" Check OK!"
|
|
else
|
|
echo -e "\033[31m [Failed] \033[0m \t\"$1\" Check Failed! Expect \"$1\""
|
|
echo -e "\033[31m \"$3\" \033[0m"
|
|
fi
|
|
}
|
|
|
|
# $1 value
|
|
# $2 string
|
|
assert_value_in_string() {
|
|
if [[ "$2" =~ "$1" ]] ; then
|
|
echo -e "\033[32m [Pass] \033[0m \t\"$1\" Check OK!"
|
|
else
|
|
echo -e "\033[31m [Failed] \033[0m \t\"$1\" Check Failed! Expect \"$1\" FOUND, But was $2"
|
|
echo -e "\033[31m \"$3\" \033[0m"
|
|
fi
|
|
}
|
|
|
|
# $1 value
|
|
# $2 string
|
|
assert_value_not_in_string() {
|
|
if [[ "$2" =~ "$1" ]] ; then
|
|
echo -e "\033[31m [Failed] \033[0m \t\"$1\" Check Failed! Expect \"$1\" NOT FOUND, But was FOUND"
|
|
echo -e "\033[31m \"$3\" \033[0m"
|
|
else
|
|
echo -e "\033[32m [Pass] \033[0m \t\"$1\" Check OK!"
|
|
fi
|
|
}
|
|
|
|
log() {
|
|
echo $1
|
|
}
|
|
|
|
check_GO_config() {
|
|
assert_config_in_file "RGA2G" $KERNEL_PATH/drivers/video/rockchip/rga2/Kconfig
|
|
}
|
|
|
|
check_kernel_config() {
|
|
assert_config_in_file "clang version" $KERNEL_PATH/.config "Kernel MUST be compiled with clang."
|
|
assert_config_in_file "CONFIG_ANDROID_BINDERFS=y" $KERNEL_PATH/.config "Did you compile the kernel with android-13.config?"
|
|
assert_config_in_file "# CONFIG_DEBUG_FS is not set" $KERNEL_PATH/.config "Did you compile the kernel with non_debuggable.config?"
|
|
}
|
|
|
|
check_widevine() {
|
|
log "Checking widevine..."
|
|
assert_env_value BOARD_WIDEVINE_OEMCRYPTO_LEVEL 3 "GMS builds require a widevine level of at least L3."
|
|
}
|
|
|
|
check_EEA_type() {
|
|
log "Checking EEA..."
|
|
assert_env_value BUILD_WITH_EEA "" "If you do not have an EEA license, you should not enable EEA."
|
|
}
|
|
|
|
check_GMS_BUNDLE() {
|
|
log "Checking base var..."
|
|
assert_env_value BUILD_WITH_GOOGLE_MARKET true "Core var should be enabled."
|
|
assert_env_value BUILD_WITH_GOOGLE_MARKET_ALL false "WIFI-Only device should not enable this Var."
|
|
assert_env_value BUILD_WITH_GOOGLE_GMS_EXPRESS true "We recommend that you use GMS Express."
|
|
# Do not need this from now
|
|
# assert_env_value PRODUCT_HAVE_RKAPPS false "Do not enable this on user build."
|
|
assert_env_value BUILD_WITH_GOOGLE_FRP true "Frp MUST be enabled."
|
|
}
|
|
|
|
check_OPTEE() {
|
|
log "Checking Optee..."
|
|
assert_env_value PRODUCT_HAVE_OPTEE true "Optee MUST be enabled."
|
|
}
|
|
|
|
check_AB_AVB() {
|
|
log "Checking avb..."
|
|
assert_env_value BOARD_AVB_ENABLE true "AVB MUST be enabled."
|
|
assert_env_value BOARD_USES_AB_IMAGE true "Android 11+ MUST enable A/B update."
|
|
assert_env_value BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE true "Android 11+ MUST enable virtual A/B update."
|
|
}
|
|
|
|
check_Uboot() {
|
|
assert_config_in_file "CONFIG_ANDROID_AB=y" u-boot/.config "Android 11+ MUST enable A/B update."
|
|
assert_config_in_file "CONFIG_ANDROID_WRITE_KEYBOX=y" u-boot/.config "Attestation key MUST be enabled."
|
|
assert_config_in_file "CONFIG_ANDROID_KEYMASTER_CA=y" u-boot/.config "Keymaster in uboot MUST be enabled."
|
|
assert_config_in_file "CONFIG_OPTEE_CLIENT=y" u-boot/.config "Optee MUST be enabled."
|
|
assert_config_in_file "CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y" u-boot/.config "Security partition MUST be enabled."
|
|
}
|
|
|
|
check_SELINUX() {
|
|
log "Checking SELinux..."
|
|
assert_env_value BOARD_SELINUX_ENFORCING true "SELinux MUST be enabled."
|
|
TMP_CMDLINE=`get_build_var BOARD_KERNEL_CMDLINE`
|
|
assert_value_not_in_string "androidboot.selinux=permissive" "$TMP_CMDLINE" "androidboot.selinux=permissive MUST NOT in cmdline, check BOARD_KERNEL_CMDLINE."
|
|
}
|
|
|
|
check_AAPT_CONFIG() {
|
|
log "Checking aapt and dpi config..."
|
|
AAPT_PERF=`get_build_var PRODUCT_AAPT_PREF_CONFIG`
|
|
RET_AAPT_LIST=`grep -r PRODUCT_AAPT_CONFIG device/rockchip/common/device.mk`
|
|
assert_value_in_string $AAPT_PERF $RET_AAPT_LIST "$AAPT_PERF not in PRODUCT_AAPT_CONFIG list, please add $AAPT_PERF to list."
|
|
TMP_DPI="ro.sf.lcd_density=${dpi_aapt_map["$AAPT_PERF"]}"
|
|
define_api=`grep ro.sf.lcd_density $OUT/vendor/build.prop`
|
|
assert_value_in_string $TMP_DPI $define_api "ro.sf.lcd_density MUST correspond to PRODUCT_AAPT_PREF_CONFIG, please set property to $TMP_DPI or change PRODUCT_AAPT_PREF_CONFIG"
|
|
}
|
|
|
|
check_GKI_enabled() {
|
|
log "Checking GKI enabled or not..."
|
|
assert_env_value BOARD_BUILD_GKI true "GKI MUST be enabled on kernel 5.10+"
|
|
assert_env_value BOARD_BOOT_HEADER_VERSION 4 "Boot header MUST be 4 on kernel 5.10+"
|
|
assert_config_in_file "CONFIG_XBC=y" u-boot/.config "XBC MUST be enabled on GKI."
|
|
assert_env_value BOARD_ROCKCHIP_VIRTUAL_AB_COMPRESSION true "Virtual A/B compression MUST be enabled on GKI."
|
|
assert_env_value BOARD_BOOTIMAGE_PARTITION_SIZE 67108864 "Boot partition size MUST be 64M on GKI."
|
|
}
|
|
|
|
check_gralloc_version() {
|
|
log "Checking gralloc version..."
|
|
assert_env_value TARGET_RK_GRALLOC_AIDL true "Gralloc AIDL MUST be enabled on Android 13+"
|
|
}
|
|
|
|
check_userdata_format() {
|
|
log "Checking userdata format..."
|
|
FSTAB_FILE=`get_build_var PRODUCT_FSTAB_TEMPLATE`
|
|
assert_env_value BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE f2fs "f2fs MUST be enabled on Android 10+, only f2fs supports Apex updates."
|
|
}
|
|
|
|
check_Uboot
|
|
# Should not check this on GKI
|
|
# check_kernel_config
|
|
# May use L1
|
|
# check_widevine
|
|
#check_EEA_type
|
|
check_GMS_BUNDLE
|
|
check_OPTEE
|
|
check_AB_AVB
|
|
check_GKI_enabled
|
|
check_gralloc_version
|
|
check_userdata_format
|
|
check_SELINUX
|
|
check_AAPT_CONFIG
|