WEBVTT

00:00.000 --> 00:12.280
Yes, so let me just reiterate what I just said for those people, listen to the recording

00:12.280 --> 00:13.280
later on.

00:13.280 --> 00:20.240
So a quick look at released names, tags and build numbers, and I'll try and describe how

00:20.240 --> 00:24.600
they all knit together.

00:24.600 --> 00:29.600
So we're going to be looking at the major versions, the code names, the API levels, the

00:29.600 --> 00:35.720
quarterly platform releases, build IDs, and I'll have a quick look at, get branches

00:35.720 --> 00:39.520
and tags.

00:39.520 --> 00:42.800
So the first bunch are relatively straightforward.

00:42.800 --> 00:49.800
So starting with the major version, by this, I'm talking about things like Android.

00:49.800 --> 00:53.480
5.0 or 16.0, which is the latest of whatever.

00:53.480 --> 00:59.560
So this is the official name of Android, and this is the name or the number used by

00:59.560 --> 01:01.280
the marketing department.

01:01.280 --> 01:04.280
So we all know that.

01:04.280 --> 01:07.160
Next there is the code name.

01:07.160 --> 01:17.360
So ever since Android 1.5, which was called Cupcake, every Android release has had a code name,

01:17.360 --> 01:22.480
do not throw you a current member of the exact sequence, slightly pop was one of them, and

01:22.480 --> 01:26.840
they're being alphabetically incrementing more or less.

01:26.840 --> 01:41.720
So the code name is important because this is the name used by the Android developers.

01:41.720 --> 01:48.020
So they will refer to Android U, Android T, or whatever, being the first letter of the code

01:48.020 --> 01:50.520
name.

01:50.520 --> 01:52.600
And then there's the API level.

01:52.600 --> 01:59.120
So the API level is a number which describes the version of the Android API used by

01:59.120 --> 02:02.360
application programmers.

02:02.360 --> 02:09.160
It started with one, and we're currently up to 36.

02:09.160 --> 02:15.320
So whenever there was a change of the Android API, they have to increment the API number.

02:15.320 --> 02:20.200
Usually by one, but not always, as we'll see in a minute or two.

02:20.200 --> 02:24.640
And this is the identifier used by app developers.

02:24.640 --> 02:27.960
So already you can see the three different ways that three different groups of people are

02:27.960 --> 02:32.200
referring to Android.

02:32.200 --> 02:37.640
Next I want to talk about the quarterly platform release or QPR.

02:37.640 --> 02:44.640
This came about year with Android 12, and the idea is that there are four quarterly platform

02:44.640 --> 02:49.960
releases per year called, well, so we have the major release.

02:49.960 --> 02:53.480
And then that's followed by actually three quarterly platform releases to give you four

02:53.480 --> 02:59.000
or together, and these are QPR one, two, and three.

02:59.000 --> 03:01.720
And originally they were sequence like this.

03:01.720 --> 03:08.240
So the major release would be in quarter three, typically September.

03:08.240 --> 03:12.400
And then the QPR's would be in quarter four, and then quarter one and quarter two over

03:12.400 --> 03:15.280
the next year.

03:15.280 --> 03:22.320
For reasons, Google decided with Android 16 to change that, so everything jumped forward

03:22.320 --> 03:24.160
one quarter.

03:24.160 --> 03:30.280
So with Android 16, the major release was in quarter two, which was may, I think.

03:30.280 --> 03:39.080
And then the QPR's are in quarter three, four, and then quarter one the next year.

03:39.080 --> 03:43.680
And then looking at the API level, so the API level, remember, has to be bumped every

03:43.680 --> 03:48.720
time they change or extend the Android API.

03:48.720 --> 03:54.800
So it used to be that the API level was only bumped on the major release.

03:54.800 --> 03:57.520
But once again, with Android 16, that changed.

03:57.520 --> 04:04.520
So now there's an API bump on both the major release and the QPR-2 release.

04:04.520 --> 04:10.360
So roughly six months apart.

04:10.680 --> 04:14.840
No, down to the bottom here, there were some minor releases.

04:14.840 --> 04:18.640
So there was a 5.1 and 8.1 and the 12.1.

04:18.640 --> 04:23.040
And in each case, there was an API bump with each one of those.

04:23.040 --> 04:24.360
But they don't happen every year.

04:30.360 --> 04:31.840
And then we have the build ID.

04:31.840 --> 04:38.880
So the build ID is an alpha numeric string, which uniquely identifies this build from

04:38.880 --> 04:44.480
the Android development teams build service.

04:44.480 --> 04:53.760
So a build ID looks like that number up there, VP4, a dot, something, dot something.

04:53.760 --> 04:57.760
And there's a description here, which I got actually from the build numbers page, which

04:57.760 --> 05:04.280
says, what those various bits mean.

05:04.280 --> 05:10.880
So now we can put that all together in this wonderful table, which is matching the

05:10.880 --> 05:18.240
version number, the code name, the QPR, the year, the quarter, the API and the build ID.

05:18.240 --> 05:21.120
So a couple of things to note here.

05:21.120 --> 05:27.040
First of all, then, looking at the build ID, it used to be that the first letter of

05:27.040 --> 05:31.080
the build ID matched the Android code.

05:31.080 --> 05:37.400
So T for T are a messu, U for upside down cake.

05:37.400 --> 05:43.560
Then things fell apart a little bit when we got to Android 15.

05:43.560 --> 05:55.000
So notice here then that things changed, things changed in the first quarter of 24.

05:55.000 --> 05:59.480
So we went from U something to A something.

05:59.480 --> 06:06.680
So at this point they decided to reset the build ID, and as this says down here, from

06:06.680 --> 06:12.560
this point onwards, the first letter of the build ID actually isn't the code name of

06:12.560 --> 06:16.640
the Android, it is in fact the year number.

06:16.640 --> 06:21.400
So A is 24, B is 25, et cetera.

06:21.400 --> 06:27.360
And then the digit following that, so we have some of that AP something, the digit is the

06:27.360 --> 06:28.360
quarter number.

06:28.360 --> 06:34.000
I'm actually going to just hold this, really don't work too well.

06:34.000 --> 06:45.360
So now we have AP1, AP2, AP3, AP4, so 1, 2, 3 and 4 are the quarters in the year, remember

06:45.360 --> 06:53.720
A is 24, so those are quarters in 24 in that particular case.

06:53.720 --> 07:05.440
Then things kind of synchronize up a little bit, so we go from AP4 to BP1, which is the

07:05.440 --> 07:09.680
first quarter of 25.

07:09.680 --> 07:18.160
And then when we got to Android 16, they decided to synchronize the code names with the

07:18.160 --> 07:19.680
build numbers.

07:19.680 --> 07:26.360
So that's why Android 16 is something being with B, the clover in fact, A got completely

07:26.360 --> 07:30.000
missed out, poor all day.

07:30.000 --> 07:35.120
So I assume that Android 17, which will come out quite soon, will have a name beginning

07:35.120 --> 07:36.120
with C.

07:36.120 --> 07:45.680
What else, oh yeah, the other way I think to notice here is that the APR level has always

07:45.680 --> 07:49.640
been essentially an integer, but now it's actually a float.

07:49.640 --> 08:04.760
It's actually 16, sorry, 36.1, okay, fair enough, why not, okay, what next?

08:04.760 --> 08:11.760
Now I want to relate this to the, to the Git repositories and how you use this information

08:11.760 --> 08:15.800
to get the version of the code that you actually want.

08:15.800 --> 08:25.240
So quick reminder, this is how you get Android, you do a repo in it, minus U and the URL

08:25.240 --> 08:31.880
to the manifest, minus B, the branch, or actually more likely a tag from the Git repositories

08:31.880 --> 08:42.080
that you want.

08:42.080 --> 08:47.120
So in order to get anywhere with this, then you need to do a mapping between the build

08:47.120 --> 08:48.400
ID that you want.

08:48.400 --> 08:52.800
So if from my previous chart you decided which build ID you want, you need to map that

08:52.800 --> 09:03.760
on to a Git tag, and that is done by this page here called build numbers.

09:03.760 --> 09:11.160
So this is at source.android.com, and you can see the build IDs, hmm, excuse me, and the

09:11.160 --> 09:13.520
corresponding Git tags.

09:13.520 --> 09:18.160
So these are the tags relating to Android 16.

09:18.160 --> 09:36.960
Okay, and you can see, so B is 2025, 2 is quarter 2, and then up there we have a BP3 and a BP4,

09:36.960 --> 09:44.280
which is in quarter 4, 2025.

09:44.280 --> 09:51.920
So to turn this into a suitable example, supposing I want to get the code for Android 16

09:51.920 --> 09:56.440
QPR2, how do you do this?

09:56.440 --> 10:05.640
So you need to work out what the build ID should be, so going back to here,

10:05.640 --> 10:16.480
to the QPR2, so I'm looking for this one here, so that is a BP4A something.

10:16.480 --> 10:19.120
So we need to find something that matches that.

10:19.120 --> 10:26.440
So looking in this, we see that the top there is a BP4A dot something, and that has the tag

10:26.440 --> 10:36.440
Android 16R4, so that is the code for QPR2.

10:36.440 --> 10:46.920
And so to get the code, you do this repo in here, blah, blah, blah, blah, minus B, Android 16R4.

10:46.920 --> 10:55.760
I was going to, well, yeah, there's been some issues with the regularity of releasing

10:55.760 --> 11:05.460
the code, the QPR, the Android 16 QPR1 code was not released for a long time, but the

11:05.460 --> 11:14.000
QPR2, I think, was released more or less on schedule, there we go.

11:14.000 --> 11:18.520
Find a thing I want to mention then, have a quick look at the security releases.

11:18.560 --> 11:25.520
If you look through the get tags, you'll see things like Android, that's security, that's

11:25.520 --> 11:29.160
something, for example, 16R1.

11:29.160 --> 11:37.200
So these security releases are based on the original major release of, in this case, Android

11:37.200 --> 11:41.840
16, and they have only the security bug fixes on top.

11:41.840 --> 11:45.520
They have no code changes apart from security fixes.

11:45.520 --> 11:50.320
So if you don't want to change functionality, but you just want to fix the CVEs, these

11:50.320 --> 11:54.760
would be the ones you go for.

11:54.760 --> 12:04.160
And if we look back to the build numbers slide here, we can see that there are actually

12:04.160 --> 12:12.880
three security releases, R1, R2, R3.

12:12.880 --> 12:19.360
And they have weird build IDs as well, instead of following the BP, whatever convention.

12:19.360 --> 12:31.160
They have some number, which I don't fully understand what the meaning of that number is.

12:31.160 --> 12:38.400
And, oh yeah, final thing.

12:38.400 --> 12:45.800
There has been changes over the last 12 months as to how often Google actually release

12:45.800 --> 12:49.440
code to their public get servers.

12:49.440 --> 12:56.280
So they use two push things on a regular basis to get, and you would see release numbers,

12:56.280 --> 13:02.800
so underscore R and some number, incrementing up to into the 50s and 60s and 70s.

13:02.800 --> 13:05.520
So there are a lot of releases.

13:05.520 --> 13:07.800
They don't really do that anymore.

13:07.800 --> 13:13.600
And in particular since the start of this year, there was a statement at source.android.com

13:13.600 --> 13:26.440
that says that we will publish the source code to in QT and Q4, in other words, the major

13:26.440 --> 13:28.960
release and the QPR2 release.

13:28.960 --> 13:30.320
That's all you get these days.

13:30.320 --> 13:32.440
Two code drops a year, nothing else.

13:32.440 --> 13:34.200
Well, it's not quite true.

13:34.200 --> 13:39.320
You still get the security updates every quarter, but remember, they don't contain functionality

13:39.320 --> 13:43.720
changes, they are just CV fixes.

13:43.720 --> 13:45.000
So this is where we are at.

13:45.000 --> 13:47.240
I'm nearly finished.

13:47.240 --> 13:51.920
The last slide, maybe I want to take a quick picture of this because it's only going

13:51.920 --> 13:57.080
to be on the screen for a moment or two, some links.

13:57.080 --> 14:03.800
The most important thing probably is feel free to meet us at Brudog this evening.

14:03.800 --> 14:08.280
In the middle of the clock, you'll have to buy your own beer, I'm afraid, but we have

14:08.280 --> 14:12.360
to get together and discuss all this further.

14:12.360 --> 14:13.360
Okay, that's me, Don.

14:13.360 --> 14:14.360
Thank you all very much.

