This Magisk module contains protoc for arm64 CPUs

ASUS_I006D:/ # protoc --version
libprotoc 32.1
ASUS_I006D:/ # 


The binaries are dynamically linked but only for the standard Android libraries, e.g.:

ASUS_I006D:/ # myldd protoc                                                                                                                                                                                                 

# Executing ldd "/system/bin/protoc" 
	linux-vdso.so.1 => [vdso] (0x7be87b4000)
	liblog.so => /system/lib64/liblog.so (0x7be08ac000)
	libc.so => /apex/com.android.runtime/lib64/bionic/libc.so (0x7be08d0000)
	libm.so => /apex/com.android.runtime/lib64/bionic/libm.so (0x7bdd646000)
	libdl.so => /apex/com.android.runtime/lib64/bionic/libdl.so (0x7be0849000)
	libc++.so => /system/lib64/libc++.so (0x7bdd6b4000)
ASUS_I006D:/ # 


protoc can be used for example to decode the metadb.pb file from OS image files using this command:


unzip -p <os_image_file> META-INF/com/android/metadata.pb | protoc --decode_raw

Example:


ASUS_I006D:/sdcard/Download # unzip -p omni-16-20250915-zenfone8-MICROG.zip META-INF/com/android/metadata.pb | protoc --decode_raw 
1: 1
4 {
  1: "ota-property-files"
  2: "payload_metadata.bin:4118:102745,payload.bin:4118:1426909192,payload_properties.txt:1426913368:156,apex_info.pb:2136:1229,care_map.pb:3412:659,metadata:69:685,metadata.pb:822:1266                        "
}
4 {
  1: "ota-streaming-property-files"
  2: "payload.bin:4118:1426909192,payload_properties.txt:1426913368:156,apex_info.pb:2136:1229,care_map.pb:3412:659,metadata:69:685,metadata.pb:822:1266                          "
}
5 {
  1: "ASUS_I006D"
}
6 {
  1: "ASUS_I006D"
  2: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
  3: "eng.xtrnaw"
  4: 1757943732
  5: "36"
  6: "2025-06-05"
  7 {
    1: "boot"
    2: "ASUS_I006D"
    3: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    4: "1757943732"
  }
  7 {
    1: "odm"
    2: "ASUS_I006D"
    3: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    4: "1757943732"
  }
  7 {
    1: "product"
    2: "ASUS_I006D"
    3: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    4: "1757943732"
  }
  7 {
    1: "system"
    2: "ASUS_I006D"
    3: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    4: "1757943732"
  }
  7 {
    1: "system_ext"
    2: "ASUS_I006D"
    3: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    4: "1757943732"
  }
  7 {
    1: "vendor"
    2: "ASUS_I006D"
    3: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    4: "1757624435"
  }
}
ASUS_I006D:/sdcard/Download # 


To create the output with the fieldnames a schema file is required. The Magisk Module contains a schema file for the image files for OmniROM 16.x:

/system/usr/share/protoc/ota_metadata_omnirom16.proto

To use that file use this command:

unzip -p <os_image_file> META-INF/com/android/metadata.pb | protoc --decode=build.tools.releasetools.OtaMetadata -I /system/usr/share/protoc/ ota_metadata_omnirom16.proto

Example:

ASUS_I006D:/sdcard/Download $ unzip -p omni-16-20250915-zenfone8-MICROG.zip META-INF/com/android/metadata.pb | protoc --decode=build.tools.releasetools.OtaMetadata -I /system/usr/share/protoc/ ota_metadata_omnirom16.proto    
type: AB
property_files {
  key: "ota-property-files"
  value: "payload_metadata.bin:4118:102745,payload.bin:4118:1426909192,payload_properties.txt:1426913368:156,apex_info.pb:2136:1229,care_map.pb:3412:659,metadata:69:685,metadata.pb:822:1266                        "
}
property_files {
  key: "ota-streaming-property-files"
  value: "payload.bin:4118:1426909192,payload_properties.txt:1426913368:156,apex_info.pb:2136:1229,care_map.pb:3412:659,metadata:69:685,metadata.pb:822:1266                          "
}
precondition {
  device: "ASUS_I006D"
}
postcondition {
  device: "ASUS_I006D"
  build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
  build_incremental: "eng.xtrnaw"
  timestamp: 1757943732
  sdk_level: "36"
  security_patch_level: "2025-06-05"
  partition_state {
    partition_name: "boot"
    device: "ASUS_I006D"
    build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    version: "1757943732"
  }
  partition_state {
    partition_name: "odm"
    device: "ASUS_I006D"
    build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    version: "1757943732"
  }
  partition_state {
    partition_name: "product"
    device: "ASUS_I006D"
    build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    version: "1757943732"
  }
  partition_state {
    partition_name: "system"
    device: "ASUS_I006D"
    build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    version: "1757943732"
  }
  partition_state {
    partition_name: "system_ext"
    device: "ASUS_I006D"
    build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    version: "1757943732"
  }
  partition_state {
    partition_name: "vendor"
    device: "ASUS_I006D"
    build: "asus/WW_I006D/ASUS_I006D:13/TKQ1.220807.001/33.0210.0210.296:user/release-keys"
    version: "1757624435"
  }
}
ASUS_I006D:/sdcard/Download $ 


The schema file for the OS image can be found in the the source directories for the ROM:

./build/make/tools/releasetools/ota_metadata.proto


Note that the schema file from this Magisk Module can also be used to decode the metadata.pb file from other ROMs


History

16.09.2025 v1.0.0 /bs
  initial release

