values/string.xml:
<resources>
<string name="app_name">my app1</string>
<integer name="num">123</integer>
</resources>
values-zh/string.xml:
<resources>
<string name="app_name">app_zh</string>
</resources>
values-fr/string.xml:
<resources>
<string name="app_name">my app_fr</string>
<integer name="num">456</integer>
</resources>
bash:
m out/host/linux-x86/bin/aapt2 ; cp /home/andy/aosp13/out/host/linux-x86/bin/aapt /home/andy/aosp13/out/host/linux-x86/bin/aapt2 /home/andy/Android/Sdk/build-tools/34.0.0/; aapt2 link -o output.ap_ --manifest /home/andy/Desktop/dongganapp2/app/src/main/AndroidManifest.xml -I ~/Android/Sdk/platforms/android-34/android.jar -R /home/andy/Desktop/dongganapp2/app/src/main/values_strings.arsc.flat /home/andy/Desktop/dongganapp2/app/src/main/values-zh_strings.arsc.flat --auto-add-overlay
TableFlattener#buffer_ (type is BigBuffer) size : 836
total size = ResTable_header(12) + StringPool(72) + Package_buffer(976) = 1060
Package_buffer = ResTable_package(288) + type_pool_(72) + key_pool(56) + type_buffer(332)(string)+type_buffer(228)(integer)= 976
string type: 332
type_buffer = ResTable_typeSpec(16) + num_entries*4(1) + FlattenConfig(104) * 3 = 332
FlattenConfig = ResTable_type(84) + values_buffer(16) + num_total_entries * 4 = 104
integer type : 228
type_buffer = ResTable_typeSpec(16) + num_entries*4(1) + FlattenConfig(104) = 124
FlattenConfig = ResTable_type(84) + values_buffer(16) + num_total_entries * 4 = 104
ResTable_header:
/**
* Header for a resource table. Its data contains a series of
* additional chunks:
* * A ResStringPool_header containing all table values. This string pool
* contains all of the string values in the entire resource table (not
* the names of entries or type identifiers however).
* * One or more ResTable_package chunks.
*
* Specific entries within a resource table can be uniquely identified
* with a single integer as defined by the ResTable_ref structure.
*/
struct ResTable_header
{
struct ResChunk_header header;
// The number of ResTable_package structures.
uint32_t packageCount;
};
inline android::ResChunk_header* Finish() {
buffer_->Align4();
header_->size = util::HostToDevice32(buffer_->size() - start_size_);
return header_;
}