General Play-systemupdate 20220118

Search This thread

foobar66

Senior Member
Jan 8, 2011
2,084
2,141
Brussels
Google Pixel 6 Pro
I received yet another Play-systemupdate today (second one in January).
The date - after update - is still reading "December 1, 2021".
However, the following package was updated:
Code:
--before--
com.google.mainline.telemetry                                     |   2021-11-01S+| (311102024)
--after--
com.google.mainline.telemetry                                     |   2021-11-01S+| (311104004)
 

roirraW "edor" ehT

Forum Moderator
Staff member
Seeing this, I decided to manually check and I got another update too (597 kB), still on December.

Screenshot_20220120-150133_Google Play Store.png

 
  • Like
Reactions: DanielF50

Morgrain

Senior Member
Aug 4, 2015
893
965
This is the first time I checked for a playsystem update since my Nokia 6.1 😏 I forgot about these..
Google started Play System updates (previously: Project Mainline) with Android 10 (splitting the firmware updates - taking stuff out of the Android operating system, transforming certain functions as an app to ensure timely updates with third party manufacturers through simple updates through Google Playstore - meaning that will help Android phones get critical and essential updates a lot sooner because none of the changes will require a system update from the phone manufacturer).
 

Alekos

Senior Member
Feb 18, 2008
500
367
Apps & Games
Google Pixel 3 XL
Check this link:
I've read that. I've been disappointed actually in how integrated Play Services is getting. So many things are now part of Play Services its making Android Forks harder to use without GAPPS. Anyway that's a different issue altogether.

I was more interested in your op about the files that were changed on the system. I commented on another post that System Update has had an issue for more than 2 years (on some pixels like I have experienced) where after it updates it reverts to the same (or sometimes an older) date/month. I had a case open with Google Support since last May but they stopped responding.

You have come closest to providing specific changes after this specific update, than I've seen in the past few years. I was hoping maybe for a before and after of some sort, to verify that the Play System update actually updated, and that the date is wrong. I had the date be behind over 6 months at some points. Wiping, flashing original firmware builds etc didn't fix it. It eventually got resolved after A12 for my 2 devices (Pixel 3xl) but I also had it be behind 2 months in December on my 6 Pro.
 

foobar66

Senior Member
Jan 8, 2011
2,084
2,141
Brussels
Google Pixel 6 Pro
It is actually a (reasonably) simple linux/bash script which I run before/after upgrade. Then do a 'tkdiff' (if you know what that means) to visualize the deltas. Source code (feel free to (re)use).
Code:
#!/bin/bash

display_usage() {
    echo "usage: $0 [{system|user}] [{path|pkg}] [{disabled|enabled}] [<filter>] ($1)"
}

SCNT=0
UCNT=0
PACNT=0
PKCNT=0
DCNT=0
ECNT=0

# by default we put package in first column
PPATH=false
# FLAGS1 selects between user (-3) and system (-s)
FLAGS1=""
# FLAGS2 selects between disabled (-d) and enabled (-e)
FLAGS2=""

# by default there is no grep filter
FCNT=0
FILTER=0

while [[ $# -gt 0 ]]; do
    case $1 in
        "user")
            if [ $SCNT -eq 1 ]; then
                display_usage "'user' and 'system' cannot occur together on the command line"
                exit 1
            fi
            if [ $UCNT -eq 0 ]; then
                UCNT=$((UCNT + 1))
                FLAGS1="-3"
            else
                if [ $UCNT -eq 1 ]; then
                    display_usage "'user' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "system")
            if [ $UCNT -eq 1 ]; then
                display_usage "'user' and 'system' cannot occur together on the command line"
                exit 1
            fi
            if [ $SCNT -eq 0 ]; then
                SCNT=$((SCNT + 1))
                FLAGS1="-s"
            else
                if [ $SCNT -eq 1 ]; then
                    display_usage "'system' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "enabled")
            if [ $DCNT -eq 1 ]; then
                display_usage "'enabled' and 'disabled' cannot occur together on the command line"
                exit 1
            fi
            if [ $ECNT -eq 0 ]; then
                ECNT=$((ECNT + 1))
                FLAGS2="-e"
            else
                if [ $ECNT -eq 1 ]; then
                    display_usage "'enabled' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "disabled")
            if [ $ECNT -eq 1 ]; then
                display_usage "'enabled' and 'disabled' cannot occur together on the command line"
                exit 1
            fi
            if [ $DCNT -eq 0 ]; then
                DCNT=$((DCNT + 1))
                FLAGS2="-d"
            else
                if [ $DCNT -eq 1 ]; then
                    display_usage "'disabled' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
 
        "path")
            if [ $PKCNT -eq 1 ]; then
                display_usage "'path' and 'pkg' cannot occur together on the command line"
                exit 1
            fi
            if [ $PACNT -eq 0 ]; then
                PACNT=$((PACNT + 1))
                PPATH=true
            else
                if [ $PACNT -eq 1 ]; then
                    display_usage "'path' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "pkg")
            if [ $PACNT -eq 1 ]; then
                display_usage "'path' and 'pkg' cannot occur together on the command line"
                exit 1
            fi
            if [ $PKCNT -eq 0 ]; then
                PKCNT=$((PKCNT + 1))
                PPATH=false
            else
                if [ $PKCNT -eq 1 ]; then
                    display_usage "'ppk' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        *)
            if [ $FCNT -eq 1 ]; then
                display_usage "there can only be 1 filter argument"
                exit 1
            fi
            FCNT=$((FCNT + 1))
            FILTER="$1"
            ;;
    esac
    shift
done

if [ $FCNT -eq 0 ]; then
    pkg=$(adb shell pm list packages $FLAGS1 $FLAGS2 -f | colrm 1 8 | sort)
else
    pkg=$(adb shell pm list packages $FLAGS1 $FLAGS2 -f | colrm 1 8 | grep "$FILTER" | sort)
fi

LI=()
for P in $pkg; do
    if [ $PPATH == "true" ]; then
        # just push the entry <file>=<package>
        LI+=("$P")
    else
        # extract filename and packagename and concat them
        # so each entry looks like <package>=<filename>
        P1=`echo $P | sed 's/apk=/apk /g' | awk '{print $1}'`
        P2=`echo $P | sed 's/apk=/apk /g' | awk '{print $2}'`
        LI+=("$P2=$P1")
    fi
done
rm -rf /tmp/pkgdata
touch /tmp/pkgdata
for P in "${LI[@]:0}"; do
    echo "$P" >> /tmp/pkgdata
done

for P in `sort /tmp/pkgdata | grep -v SwiftBlack | grep -v SwiftDark`; do
    if [ $PPATH == true ]; then
        P1=`echo $P | sed 's/apk=/apk /g' | awk '{print $1}'`
        P2=`echo $P | sed 's/apk=/apk /g' | awk '{print $2}' | sed -e 's/ //g'`
    else
        P1=`echo $P | sed 's%=/% /%g' | awk '{print $2}'`
        P2=`echo $P | sed 's%=/% /%g' | awk '{print $1}' | sed -e 's/ //g'`
    fi
    VER=`adb shell dumpsys package $P2 | grep versionName | head -n 1 | sed -e 's/versionName=//g' | sed -e 's/ //g' | cut -c-15`
    VERC=`adb shell dumpsys package $P2 | grep versionCode | head -n 1 | awk '{print $1}' | sed 's/versionCode=//g' | cut -c-15`
    if [ $PPATH == true ]; then
        # argument was not supplied, it means file name is before the = sign
        printf "%-115s |%15s| %-s\n" "$P1" "$VER" "$P2"
    else
        printf "%-65s |%15s|%12s| %-10s\n" "$P2" "$VER" "($VERC)" "$P1"
    fi
done
Run it from the linux command line with:
Code:
> apackages system > before-update
Then apply Google system update, then:
Code:
> apackages system > after-update
> tkdiff before-update after-update
Iḿ not a Windows guy, but I guess it is not so complicated to turn this into a .bat script which you can run from DOS/Powershell under Windows. You must have working adb though.

The script has some command line args:
Code:
system|user: filter on system packages or user packages
enabled|disabled: filter on packages which are enabled or disabled
pkg|path: outputs the path first or package name first
<string> script will filter packages that match the string (e.g. 'com.google.android' will filter those that have com.google.android in their package name)
Sample output (package name, version name, version code, path in Android file system):
Code:
com.android.ons                                                   |             12|        (31)| /system/priv-app/ONS/ONS.apk
com.android.phone.auto_generated_rro_product__                    |            1.0|         (1)| /product/overlay/TeleService__auto_generated_rro_product.apk
com.android.phone.auto_generated_rro_vendor__                     |            1.0|         (1)| /vendor/overlay/TeleService__auto_generated_rro_vendor.apk
com.android.phone                                                 |             12|        (31)| /system/priv-app/TeleService/TeleService.apk
com.android.printspooler                                          |             12|        (31)| /system/app/PrintSpooler/PrintSpooler.apk
com.android.providers.blockednumber                               |             12|        (31)| /system/priv-app/BlockedNumberProvider/BlockedNumberProvider.apk
com.android.providers.calendar                                    |             12|        (31)| /system/priv-app/CalendarProvider/CalendarProvider.apk
com.android.providers.contacts.auto_generated_rro_product__       |            1.0|         (1)| /product/overlay/ContactsProvider__auto_generated_rro_product.apk
 
Last edited:

Alekos

Senior Member
Feb 18, 2008
500
367
Apps & Games
Google Pixel 3 XL
It is actually a (reasonably) simple linux/bash script which I run before/after upgrade. Then do a 'tkdiff' (if you know what that means) to visualize the deltas. Source code (feel free to (re)use).
Code:
#!/bin/bash

display_usage() {
    echo "usage: $0 [{system|user}] [{path|pkg}] [{disabled|enabled}] [<filter>] ($1)"
}

SCNT=0
UCNT=0
PACNT=0
PKCNT=0
DCNT=0
ECNT=0

# by default we put package in first column
PPATH=false
# FLAGS1 selects between user (-3) and system (-s)
FLAGS1=""
# FLAGS2 selects between disabled (-d) and enabled (-e)
FLAGS2=""

# by default there is no grep filter
FCNT=0
FILTER=0

while [[ $# -gt 0 ]]; do
    case $1 in
        "user")
            if [ $SCNT -eq 1 ]; then
                display_usage "'user' and 'system' cannot occur together on the command line"
                exit 1
            fi
            if [ $UCNT -eq 0 ]; then
                UCNT=$((UCNT + 1))
                FLAGS1="-3"
            else
                if [ $UCNT -eq 1 ]; then
                    display_usage "'user' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "system")
            if [ $UCNT -eq 1 ]; then
                display_usage "'user' and 'system' cannot occur together on the command line"
                exit 1
            fi
            if [ $SCNT -eq 0 ]; then
                SCNT=$((SCNT + 1))
                FLAGS1="-s"
            else
                if [ $SCNT -eq 1 ]; then
                    display_usage "'system' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "enabled")
            if [ $DCNT -eq 1 ]; then
                display_usage "'enabled' and 'disabled' cannot occur together on the command line"
                exit 1
            fi
            if [ $ECNT -eq 0 ]; then
                ECNT=$((ECNT + 1))
                FLAGS2="-e"
            else
                if [ $ECNT -eq 1 ]; then
                    display_usage "'enabled' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "disabled")
            if [ $ECNT -eq 1 ]; then
                display_usage "'enabled' and 'disabled' cannot occur together on the command line"
                exit 1
            fi
            if [ $DCNT -eq 0 ]; then
                DCNT=$((DCNT + 1))
                FLAGS2="-d"
            else
                if [ $DCNT -eq 1 ]; then
                    display_usage "'disabled' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
 
        "path")
            if [ $PKCNT -eq 1 ]; then
                display_usage "'path' and 'pkg' cannot occur together on the command line"
                exit 1
            fi
            if [ $PACNT -eq 0 ]; then
                PACNT=$((PACNT + 1))
                PPATH=true
            else
                if [ $PACNT -eq 1 ]; then
                    display_usage "'path' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        "pkg")
            if [ $PACNT -eq 1 ]; then
                display_usage "'path' and 'pkg' cannot occur together on the command line"
                exit 1
            fi
            if [ $PKCNT -eq 0 ]; then
                PKCNT=$((PKCNT + 1))
                PPATH=false
            else
                if [ $PKCNT -eq 1 ]; then
                    display_usage "'ppk' can only occur once on the command line"
                    exit 1
                fi
            fi
            ;;
        *)
            if [ $FCNT -eq 1 ]; then
                display_usage "there can only be 1 filter argument"
                exit 1
            fi
            FCNT=$((FCNT + 1))
            FILTER="$1"
            ;;
    esac
    shift
done

if [ $FCNT -eq 0 ]; then
    pkg=$(adb shell pm list packages $FLAGS1 $FLAGS2 -f | colrm 1 8 | sort)
else
    pkg=$(adb shell pm list packages $FLAGS1 $FLAGS2 -f | colrm 1 8 | grep "$FILTER" | sort)
fi

LI=()
for P in $pkg; do
    if [ $PPATH == "true" ]; then
        # just push the entry <file>=<package>
        LI+=("$P")
    else
        # extract filename and packagename and concat them
        # so each entry looks like <package>=<filename>
        P1=`echo $P | sed 's/apk=/apk /g' | awk '{print $1}'`
        P2=`echo $P | sed 's/apk=/apk /g' | awk '{print $2}'`
        LI+=("$P2=$P1")
    fi
done
rm -rf /tmp/pkgdata
touch /tmp/pkgdata
for P in "${LI[@]:0}"; do
    echo "$P" >> /tmp/pkgdata
done

for P in `sort /tmp/pkgdata | grep -v SwiftBlack | grep -v SwiftDark`; do
    if [ $PPATH == true ]; then
        P1=`echo $P | sed 's/apk=/apk /g' | awk '{print $1}'`
        P2=`echo $P | sed 's/apk=/apk /g' | awk '{print $2}' | sed -e 's/ //g'`
    else
        P1=`echo $P | sed 's%=/% /%g' | awk '{print $2}'`
        P2=`echo $P | sed 's%=/% /%g' | awk '{print $1}' | sed -e 's/ //g'`
    fi
    VER=`adb shell dumpsys package $P2 | grep versionName | head -n 1 | sed -e 's/versionName=//g' | sed -e 's/ //g' | cut -c-15`
    VERC=`adb shell dumpsys package $P2 | grep versionCode | head -n 1 | awk '{print $1}' | sed 's/versionCode=//g' | cut -c-15`
    if [ $PPATH == true ]; then
        # argument was not supplied, it means file name is before the = sign
        printf "%-115s |%15s| %-s\n" "$P1" "$VER" "$P2"
    else
        printf "%-65s |%15s|%12s| %-10s\n" "$P2" "$VER" "($VERC)" "$P1"
    fi
done
Run it from the linux command line with:
Code:
> apackages system > before-update
Then apply Google system update, then:
Code:
> apackages system > after-update
> tkdiff before-update after-update
Iḿ not a Windows guy, but I guess it is not so complicated to turn this into a .bat script which you can run from DOS/Powershell under Windows. You must have working adb though.

The script has some command line args:
Code:
system|user: filter on system packages or user packages
enabled|disabled: filter on packages which are enabled or disabled
pkg|path: outputs the path first or package name first
Sample output (package name, short version, long version, path in Android file system):
Code:
com.android.ons                                                   |             12|        (31)| /system/priv-app/ONS/ONS.apk
com.android.phone.auto_generated_rro_product__                    |            1.0|         (1)| /product/overlay/TeleService__auto_generated_rro_product.apk
com.android.phone.auto_generated_rro_vendor__                     |            1.0|         (1)| /vendor/overlay/TeleService__auto_generated_rro_vendor.apk
com.android.phone                                                 |             12|        (31)| /system/priv-app/TeleService/TeleService.apk
com.android.printspooler                                          |             12|        (31)| /system/app/PrintSpooler/PrintSpooler.apk
com.android.providers.blockednumber                               |             12|        (31)| /system/priv-app/BlockedNumberProvider/BlockedNumberProvider.apk
com.android.providers.calendar                                    |             12|        (31)| /system/priv-app/CalendarProvider/CalendarProvider.apk
com.android.providers.contacts.auto_generated_rro_product__       |            1.0|         (1)| /product/overlay/ContactsProvider__auto_generated_rro_product.apk
This is amazing. Love seeing this stuff. I'm not really a script type of guy like you (guy/girl you know what I mean)... but its great to see and totally intrests me.

so can you see a bunch of files that were changed? or I guess you would have to run the script before and after?
this command
tkdiff before-update after-update
for example - how does it find the exact files that were changed?
 
  • Like
Reactions: roirraW "edor" ehT

foobar66

Senior Member
Jan 8, 2011
2,084
2,141
Brussels
Google Pixel 6 Pro
This is amazing. Love seeing this stuff. I'm not really a script type of guy like you (guy/girl you know what I mean)... but its great to see and totally intrests me.

so can you see a bunch of files that were changed? or I guess you would have to run the script before and after?
this command
tkdiff before-update after-update
for example - how does it find the exact files that were changed?
See previous post. Indeed run the script before/after, pipe the output into a text file, then do a 'diff' on the before/after text file ... but maybe that sounds like chinese if you're not familiar with Linux ...

The script actually uses adb to shell into the Android device and use the package manager (pm shell command) on the device to 'dump' the package data. Then the script picks up the package name, version name, version code and file path.
 

Alekos

Senior Member
Feb 18, 2008
500
367
Apps & Games
Google Pixel 3 XL
See previous post. Indeed run the script before/after, pipe the output into a text file, then do a 'diff' on the before/after text file ... but maybe that sounds like chinese if you're not familiar with Linux ...

The script actually uses adb to shell into the Android device and use the package manager (pm shell command) on the device to 'dump' the package data. Then the script picks up the package name, version name, version code and file path.
yeah it is chinese to me lol. but its all good.
so how many times was the file com.google.mainline.telemetry" changed in December/January? 3 times for 3 updates but no date change?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 4
    I received yet another Play-systemupdate today (second one in January).
    The date - after update - is still reading "December 1, 2021".
    However, the following package was updated:
    Code:
    --before--
    com.google.mainline.telemetry                                     |   2021-11-01S+| (311102024)
    --after--
    com.google.mainline.telemetry                                     |   2021-11-01S+| (311104004)
    3
    I'm still in December even though I've updated
    Let you know? Just post it why do we have to let you know?
    3
    It is actually a (reasonably) simple linux/bash script which I run before/after upgrade. Then do a 'tkdiff' (if you know what that means) to visualize the deltas. Source code (feel free to (re)use).
    Code:
    #!/bin/bash
    
    display_usage() {
        echo "usage: $0 [{system|user}] [{path|pkg}] [{disabled|enabled}] [<filter>] ($1)"
    }
    
    SCNT=0
    UCNT=0
    PACNT=0
    PKCNT=0
    DCNT=0
    ECNT=0
    
    # by default we put package in first column
    PPATH=false
    # FLAGS1 selects between user (-3) and system (-s)
    FLAGS1=""
    # FLAGS2 selects between disabled (-d) and enabled (-e)
    FLAGS2=""
    
    # by default there is no grep filter
    FCNT=0
    FILTER=0
    
    while [[ $# -gt 0 ]]; do
        case $1 in
            "user")
                if [ $SCNT -eq 1 ]; then
                    display_usage "'user' and 'system' cannot occur together on the command line"
                    exit 1
                fi
                if [ $UCNT -eq 0 ]; then
                    UCNT=$((UCNT + 1))
                    FLAGS1="-3"
                else
                    if [ $UCNT -eq 1 ]; then
                        display_usage "'user' can only occur once on the command line"
                        exit 1
                    fi
                fi
                ;;
            "system")
                if [ $UCNT -eq 1 ]; then
                    display_usage "'user' and 'system' cannot occur together on the command line"
                    exit 1
                fi
                if [ $SCNT -eq 0 ]; then
                    SCNT=$((SCNT + 1))
                    FLAGS1="-s"
                else
                    if [ $SCNT -eq 1 ]; then
                        display_usage "'system' can only occur once on the command line"
                        exit 1
                    fi
                fi
                ;;
            "enabled")
                if [ $DCNT -eq 1 ]; then
                    display_usage "'enabled' and 'disabled' cannot occur together on the command line"
                    exit 1
                fi
                if [ $ECNT -eq 0 ]; then
                    ECNT=$((ECNT + 1))
                    FLAGS2="-e"
                else
                    if [ $ECNT -eq 1 ]; then
                        display_usage "'enabled' can only occur once on the command line"
                        exit 1
                    fi
                fi
                ;;
            "disabled")
                if [ $ECNT -eq 1 ]; then
                    display_usage "'enabled' and 'disabled' cannot occur together on the command line"
                    exit 1
                fi
                if [ $DCNT -eq 0 ]; then
                    DCNT=$((DCNT + 1))
                    FLAGS2="-d"
                else
                    if [ $DCNT -eq 1 ]; then
                        display_usage "'disabled' can only occur once on the command line"
                        exit 1
                    fi
                fi
                ;;
     
            "path")
                if [ $PKCNT -eq 1 ]; then
                    display_usage "'path' and 'pkg' cannot occur together on the command line"
                    exit 1
                fi
                if [ $PACNT -eq 0 ]; then
                    PACNT=$((PACNT + 1))
                    PPATH=true
                else
                    if [ $PACNT -eq 1 ]; then
                        display_usage "'path' can only occur once on the command line"
                        exit 1
                    fi
                fi
                ;;
            "pkg")
                if [ $PACNT -eq 1 ]; then
                    display_usage "'path' and 'pkg' cannot occur together on the command line"
                    exit 1
                fi
                if [ $PKCNT -eq 0 ]; then
                    PKCNT=$((PKCNT + 1))
                    PPATH=false
                else
                    if [ $PKCNT -eq 1 ]; then
                        display_usage "'ppk' can only occur once on the command line"
                        exit 1
                    fi
                fi
                ;;
            *)
                if [ $FCNT -eq 1 ]; then
                    display_usage "there can only be 1 filter argument"
                    exit 1
                fi
                FCNT=$((FCNT + 1))
                FILTER="$1"
                ;;
        esac
        shift
    done
    
    if [ $FCNT -eq 0 ]; then
        pkg=$(adb shell pm list packages $FLAGS1 $FLAGS2 -f | colrm 1 8 | sort)
    else
        pkg=$(adb shell pm list packages $FLAGS1 $FLAGS2 -f | colrm 1 8 | grep "$FILTER" | sort)
    fi
    
    LI=()
    for P in $pkg; do
        if [ $PPATH == "true" ]; then
            # just push the entry <file>=<package>
            LI+=("$P")
        else
            # extract filename and packagename and concat them
            # so each entry looks like <package>=<filename>
            P1=`echo $P | sed 's/apk=/apk /g' | awk '{print $1}'`
            P2=`echo $P | sed 's/apk=/apk /g' | awk '{print $2}'`
            LI+=("$P2=$P1")
        fi
    done
    rm -rf /tmp/pkgdata
    touch /tmp/pkgdata
    for P in "${LI[@]:0}"; do
        echo "$P" >> /tmp/pkgdata
    done
    
    for P in `sort /tmp/pkgdata | grep -v SwiftBlack | grep -v SwiftDark`; do
        if [ $PPATH == true ]; then
            P1=`echo $P | sed 's/apk=/apk /g' | awk '{print $1}'`
            P2=`echo $P | sed 's/apk=/apk /g' | awk '{print $2}' | sed -e 's/ //g'`
        else
            P1=`echo $P | sed 's%=/% /%g' | awk '{print $2}'`
            P2=`echo $P | sed 's%=/% /%g' | awk '{print $1}' | sed -e 's/ //g'`
        fi
        VER=`adb shell dumpsys package $P2 | grep versionName | head -n 1 | sed -e 's/versionName=//g' | sed -e 's/ //g' | cut -c-15`
        VERC=`adb shell dumpsys package $P2 | grep versionCode | head -n 1 | awk '{print $1}' | sed 's/versionCode=//g' | cut -c-15`
        if [ $PPATH == true ]; then
            # argument was not supplied, it means file name is before the = sign
            printf "%-115s |%15s| %-s\n" "$P1" "$VER" "$P2"
        else
            printf "%-65s |%15s|%12s| %-10s\n" "$P2" "$VER" "($VERC)" "$P1"
        fi
    done
    Run it from the linux command line with:
    Code:
    > apackages system > before-update
    Then apply Google system update, then:
    Code:
    > apackages system > after-update
    > tkdiff before-update after-update
    Iḿ not a Windows guy, but I guess it is not so complicated to turn this into a .bat script which you can run from DOS/Powershell under Windows. You must have working adb though.

    The script has some command line args:
    Code:
    system|user: filter on system packages or user packages
    enabled|disabled: filter on packages which are enabled or disabled
    pkg|path: outputs the path first or package name first
    <string> script will filter packages that match the string (e.g. 'com.google.android' will filter those that have com.google.android in their package name)
    Sample output (package name, version name, version code, path in Android file system):
    Code:
    com.android.ons                                                   |             12|        (31)| /system/priv-app/ONS/ONS.apk
    com.android.phone.auto_generated_rro_product__                    |            1.0|         (1)| /product/overlay/TeleService__auto_generated_rro_product.apk
    com.android.phone.auto_generated_rro_vendor__                     |            1.0|         (1)| /vendor/overlay/TeleService__auto_generated_rro_vendor.apk
    com.android.phone                                                 |             12|        (31)| /system/priv-app/TeleService/TeleService.apk
    com.android.printspooler                                          |             12|        (31)| /system/app/PrintSpooler/PrintSpooler.apk
    com.android.providers.blockednumber                               |             12|        (31)| /system/priv-app/BlockedNumberProvider/BlockedNumberProvider.apk
    com.android.providers.calendar                                    |             12|        (31)| /system/priv-app/CalendarProvider/CalendarProvider.apk
    com.android.providers.contacts.auto_generated_rro_product__       |            1.0|         (1)| /product/overlay/ContactsProvider__auto_generated_rro_product.apk
    3
    This is the first time I checked for a playsystem update since my Nokia 6.1 😏 I forgot about these..
    Google started Play System updates (previously: Project Mainline) with Android 10 (splitting the firmware updates - taking stuff out of the Android operating system, transforming certain functions as an app to ensure timely updates with third party manufacturers through simple updates through Google Playstore - meaning that will help Android phones get critical and essential updates a lot sooner because none of the changes will require a system update from the phone manufacturer).
    2
    Check this link:
    I've read that. I've been disappointed actually in how integrated Play Services is getting. So many things are now part of Play Services its making Android Forks harder to use without GAPPS. Anyway that's a different issue altogether.

    I was more interested in your op about the files that were changed on the system. I commented on another post that System Update has had an issue for more than 2 years (on some pixels like I have experienced) where after it updates it reverts to the same (or sometimes an older) date/month. I had a case open with Google Support since last May but they stopped responding.

    You have come closest to providing specific changes after this specific update, than I've seen in the past few years. I was hoping maybe for a before and after of some sort, to verify that the Play System update actually updated, and that the date is wrong. I had the date be behind over 6 months at some points. Wiping, flashing original firmware builds etc didn't fix it. It eventually got resolved after A12 for my 2 devices (Pixel 3xl) but I also had it be behind 2 months in December on my 6 Pro.