commit | adc7b732cae5ade65d7200833d33d70bd6500642 | [log] [tgz] |
---|---|---|
author | Dennis Shen <dzshen@google.com> | Mon Dec 11 18:59:13 2023 +0000 |
committer | Dennis Shen <dzshen@google.com> | Tue Dec 19 17:20:27 2023 +0000 |
tree | de13a9c441df5dbd988d14a76ab0e1b638446c73 | |
parent | 2538c865629d76bfaf8dc7b70f4d9eb7b1765dbe [diff] |
aconfig: package.map file serialization For each container, there will be three storage files: package.map, flag.map and flags.val. This change adds package.map creation. package.map is a hash table in file that maps a package name to its package id and package value offset. This file will be used by flag storage client lib to locate the fixed offset of a flag in flag value file. package.map provides the file byte offset to the start of all flag values for this package. Together with flag value offset within its package which will be provided by flag.map, we can locate a flag's value in the value file. The top level struct for this file is called "PackageTable". The struct consists of three parts: (1) table header which includes the file version and other metadata such as number of packages and etc. (2) table buckets which is an array of u32, each bucket stores the package.map file offset to the package table node. (3) package table node array. each node stores package name, package id, package value offset and offset to the next package table node. The table uses fixed format serialization. All u32 are encoded using little endian format as that is the Android format. All strings are UTF8 encoded. This is to ensure cross platform compatibility. Bug: b/312243587 Test: atest aconfig.test Change-Id: I1041405db42862573ec320c0e557948732c28eb8
This is the Makefile-based portion of the Android Build System.
For documentation on how to run a build, see Usage.txt
For a list of behavioral changes useful for Android.mk writers see Changes.md
For an outdated reference on Android.mk files, see build-system.html. Our Android.mk files look similar, but are entirely different from the Android.mk files used by the NDK build system. When searching for documentation elsewhere, ensure that it is for the platform build system -- most are not.
This Makefile-based system is in the process of being replaced with Soong, a new build system written in Go. During the transition, all of these makefiles are read by Kati, and generate a ninja file instead of being executed directly. That's combined with a ninja file read by Soong so that the build graph of the two systems can be combined and run as one.