Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Android/development/development/vndk/tools/   (Android Betriebssystem Version 17©)  Datei vom 26.5.2026 mit Größe 6 kB image not shown  

Quelle  modify_system_img.sh

  Sprache: Shell
 

#!/bin/bash -ex
# Copyright (C) 2018 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

usage () {
    echo "Modifies the system image in a target_files.zip package so that it is"
    echo "    compatible with vendor images of older Android versions."
    echo "    This script is intended to be run on the Android build servers"
    echo "    for inter branch mixed build targets."
    echo
    echo "Usage: $0 [-v <vendor_version>]"
    echo "    <target_files_path> [<new_security_patch_level>]"
    echo
    echo "vendor_version is the version of the vendor image"
    echo "    e.g. 8.1.0 for Android version O-MR1"
    echo "new_security_patch_level is the value to replace the SPL in the"
    echo "    original system.img"
    echo "target_files_path is the path to the *-target_files-*.zip file"
}

# Print error message and exit.
# Usage: exit_badparam message
#
# message is a string to be displayed before exit.
exit_badparam () {
    echo "ERROR: $1" >&2
    usage
    exit 1
}

cleanup_and_exit () {
    readonly result="$?"
    rm -rf "$TEMP_DIR"
    exit "$result"
}

trap cleanup_and_exit EXIT

while getopts :v: opt; do
    case "$opt" in
        v)
            readonly VENDOR_VERSION="$OPTARG"
            ;;
        \?)
            exit_badparam "Invalid options: -"$OPTARG""
            ;;
        :)
            exit_badparam "Option -"$OPTARG" requires an argument."
            ;;
    esac
done
shift "$((OPTIND-1))"

if [[ $# -lt 1 || $# -gt 2 ]]; then
    exit_badparam "Unexpected number of arguments"
fi

readonly SYSTEM_TARGET_FILES="$1"
readonly NEW_SPL="$2"

if [[ ! -f "$SYSTEM_TARGET_FILES" ]]; then
    exit_badparam "Could not find system target files package, "$SYSTEM_TARGET_FILES""
fi

# SPL must have YYYY-MM-DD format
if [[ $# -eq 2 ]] && [[ ! "$NEW_SPL" =~ ^[0-9]{4}-(0[0-9]|1[012])-([012][0-9]|3[01])$ ]]; then
    exit_badparam "<new_security_patch_level> must have YYYY-MM-DD format"
fi

if [[ -z "${ANDROID_BUILD_TOP+x}" ]]; then
    build_top=""
else
    build_top="$ANDROID_BUILD_TOP"/
fi

readonly add_img_to_target_files="$build_top"build/make/tools/releasetools/add_img_to_target_files.py

# Check required script
if [[ ! -f "$add_img_to_target_files" ]]; then
    echo "Error: Cannot find script,""$add_img_to_target_files"
    echo "Please run lunch or run from root of source tree."
    exit 1
fi

readonly TEMP_DIR="$(mktemp -d /tmp/"$(basename $0)"_XXXXXXXX)"
readonly SPL_PROPERTY_NAME="ro.build.version.security_patch"
readonly RELEASE_VERSION_PROPERTY_NAME="ro.build.version.release"
readonly VNDK_VERSION_PROPERTY="ro.vndk.version"
readonly VNDK_VERSION_PROPERTY_OMR1="$VNDK_VERSION_PROPERTY"=27

readonly BUILD_PROP_PATH="SYSTEM/build.prop"
readonly PROP_DEFAULT_PATH="SYSTEM/etc/prop.default"

# Unzip build.prop and prop.default from target_files.zip
unzip "$SYSTEM_TARGET_FILES" "$BUILD_PROP_PATH" "$PROP_DEFAULT_PATH" -d "$TEMP_DIR"

readonly BUILD_PROP_FILE="$TEMP_DIR"/"$BUILD_PROP_PATH"
readonly PROP_DEFAULT_FILE="$TEMP_DIR"/"$PROP_DEFAULT_PATH"

if [[ -f "$BUILD_PROP_FILE" ]]; then
    readonly CURRENT_SPL=$(sed -n -r "s/^"$SPL_PROPERTY_NAME"=(.*)$/\1/p" "$BUILD_PROP_FILE")
    readonly CURRENT_VERSION=$(sed -n -r "s/^"$RELEASE_VERSION_PROPERTY_NAME"=(.*)$/\1/p" "$BUILD_PROP_FILE")
    echo "Reading build.prop..."
    echo "  Current security patch level: "$CURRENT_SPL""
    echo "  Current release version: "$CURRENT_VERSION""

    # Update SPL to <new_security_patch_level>
    if [[ "$NEW_SPL" != "" ]]; then
        if [[ "$CURRENT_SPL" == "" ]]; then
            echo "ERROR: Cannot find "$SPL_PROPERTY_NAME" in "$BUILD_PROP_PATH""
            exit 1
        else
            # Replace the property inplace
            sed -i "s/^"$SPL_PROPERTY_NAME"=.*$/"$SPL_PROPERTY_NAME"="$NEW_SPL"/" "$BUILD_PROP_FILE"
            echo "Replacing..."
            echo "  New security patch level: "$NEW_SPL""
        fi
    fi

    # Update release version to <vendor_version>
    if [[ "$VENDOR_VERSION" != "" ]]; then
        if [[ "$CURRENT_VERSION" == "" ]]; then
            echo "ERROR: Cannot find "$RELEASE_VERSION_PROPERTY_NAME" in "$BUILD_PROP_PATH""
            exit 1
        else
            # Replace the property inplace
            sed -i "s/^"$RELEASE_VERSION_PROPERTY_NAME"=.*$/"$RELEASE_VERSION_PROPERTY_NAME"="$VENDOR_VERSION"/" "$BUILD_PROP_FILE"
            echo "Replacing..."
            echo "  New release version for vendor.img: "$VENDOR_VERSION""
        fi

        if [[ "$VENDOR_VERSION" == "8.1.0" ]]; then
            # add ro.vndk.version for O-MR1
            if [[ -f "$PROP_DEFAULT_FILE" ]]; then
                readonly CURRENT_VNDK_VERSION=$(sed -n -r "s/^"$VNDK_VERSION_PROPERTY"=(.*)$/\1/p" "$PROP_DEFAULT_FILE")
                if [[ "$CURRENT_VNDK_VERSION" != "" ]]; then
                    echo "WARNING: "$VNDK_VERSION_PROPERTY" is already set to "$CURRENT_VNDK_VERSION" in "$PROP_DEFAULT_PATH""
                    echo "DID NOT overwrite "$VNDK_VERSION_PROPERTY""
                else
                    echo "Adding \""$VNDK_VERSION_PROPERTY_OMR1"\" to "$PROP_DEFAULT_PATH" for O-MR1 vendor image."
                    sed -i -e "\$a\#\n\# FOR O-MR1 DEVICES\n\#\n"$VNDK_VERSION_PROPERTY_OMR1"" "$PROP_DEFAULT_FILE"
                fi
            else
                echo "ERROR: Cannot find "$PROP_DEFAULT_PATH" in "$SYSTEM_TARGET_FILES""
            fi
        fi
    fi
else
    echo "ERROR: Cannot find "$BUILD_PROP_PATH" in "$SYSTEM_TARGET_FILES""
    exit 1
fi

# Re-zip build.prop and prop.default
(
    cd "$TEMP_DIR"
    zip -ur "$SYSTEM_TARGET_FILES" ./*
)

# Rebuild system.img
zip -d "$SYSTEM_TARGET_FILES" IMAGES/system\*
"$add_img_to_target_files" -a "$SYSTEM_TARGET_FILES"

echo "Done."

Messung V0.5 in Prozent
C=92 H=86 G=88

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-06-27) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.