// Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // [START declaration] syntax = "proto3"; package com_android_cts_releaseparser; // [END declaration] // [START java_declaration] option java_package = "com.android.cts.releaseparser"; option java_outer_classname = "ReleaseProto"; // [END java_declaration] // [START messages] message Option { string name = 1; string key = 2; string value =3; } message TestModuleConfig { string module_name = 1; string component = 2; string description = 3; repeated Option options = 4; message TargetPreparer { string test_class = 1; repeated Option options = 2; } repeated TargetPreparer target_preparers = 5; repeated string test_file_names = 6; message TestClass { string test_class = 1; string package = 2; repeated Option options = 3; } repeated TestClass test_classes = 7; repeated string test_jars = 8; } message Element { string name = 1; string value = 2; } message ApiAnnotation { int32 visibility = 1; string type = 2; repeated Element elements = 3; } message ApiField { string defining_class = 1; string name = 2; string type = 3; int32 access_flags = 4; string initial_value = 5; repeated ApiAnnotation annotations = 6; string value = 7; } message ApiMethod { string defining_class = 1; string name = 2; repeated string parameters = 3; string return_type = 4; int32 access_flags = 5; string known_failure_filter = 6; repeated ApiAnnotation annotations = 7; } message ApiClass { string name = 1; string type = 2; string super_class = 3; repeated string interfaces = 4; TestClassType test_class_type = 5; int32 access_flags = 6; repeated ApiAnnotation annotations = 7; repeated ApiMethod methods = 8; repeated ApiField fields = 9; } message ApiPackage { string name = 1; string package_file = 2; string content_id = 3; string op_codes = 4; repeated ApiClass classes = 5; string error = 6; } enum TestClassType { UNKNOWN = 0; JUNIT3 = 1; JUNIT4 = 2; PARAMETERIZED = 3; JAVAHOST = 4; } message TestSuite { string name = 1; // Version string version = 2; // Build Number string build_number = 3; // Content ID string content_id = 4; enum TestType { UNKNOWN = 0; ANDROIDJUNIT = 1; JAVAHOST = 2; GTEST = 3; LIBCORE = 4; DALVIK = 5; DEQP = 6; } message Module { string name = 1; string config_file = 2; TestType test_type = 3; string test_class = 4; repeated ApiPackage packages = 5; } repeated Module modules = 5; } message Service { string name = 1; string file = 2; repeated string arguments = 3; string clazz = 4; string user = 5; string group = 6; string writepid = 7; repeated string options = 8; } message Api { string name = 1; string version = 2; // map of Package Name & Package Message map<string, ApiPackage> packages = 3; } message UsesFeature { string name = 1; string required = 2; } message UsesLibrary { string name = 1; string required = 2; } message AppInfo { string package_name = 1; string version_code = 2; string version_name = 3; string sdk_version = 4; string target_sdk_version = 5; repeated UsesFeature uses_features = 6; repeated UsesLibrary uses_libraries = 7; repeated string native_code = 8; repeated string uses_permissions = 9; repeated string activities = 10; repeated string services = 11; repeated string providers = 12; map<string, string> properties = 13; repeated ApiPackage external_api_packages = 14; repeated ApiPackage internal_api_packages = 15; PackageFileContent package_file_content = 16; string package_signature = 17; } message ImageSection { uint32 offset = 1; uint32 size = 2; } // art/runtime/image.h message ArtInfo { bool valid = 1; // skip magic_[4] string version = 2; uint32 image_begin = 3; uint32 image_size = 4; uint32 oat_checksum = 5; uint32 oat_file_begin = 6; uint32 oat_data_begin = 7; uint32 oat_data_end = 8; uint32 oat_file_end = 9; // app image headers only uint32 boot_image_begin = 10; uint32 boot_image_size = 11; uint32 boot_oat_begin = 12; uint32 boot_oat_size = 13; int32 patch_delta = 14; uint32 image_roots = 15; uint32 pointer_size = 16; uint32 compile_pic = 17; uint32 is_pic = 18; repeated ImageSection image_sections = 19; repeated uint64 image_methods = 20; uint32 storage_mode = 21; uint32 data_size = 22; } // art/dex2oat/linker/oat_writer.cc OatDexFile message OatDexInfo { string dex_file_location_data = 1; // The checksum of the dex file. uint32 dex_file_location_checksum = 2; // Offset of the dex file in the vdex file. uint32 dex_file_offset = 3; // The lookup table offset in the oat file. Set in WriteTypeLookupTables. uint32 lookup_table_offset = 4; // Class and BSS offsets set in PrepareLayout. uint32 class_offsets_offset = 5; uint32 method_bss_mapping_offset = 6; uint32 type_bss_mapping_offset = 7; uint32 string_bss_mapping_offset = 8; // Offset of dex sections that will have different runtime madvise states. uint32 dex_sections_layout_offset = 9; } // art/runtime/oat.h message OatInfo { // skip magic_[4] string version = 1; uint32 adler32_checksum = 2; // art/libartbase/arch/instruction_set.h uint32 instruction_set = 3; uint32 instruction_set_features_bitmap = 4; uint32 dex_file_count = 5; uint32 oat_dex_files_offset = 6; uint32 executable_offset = 7; uint32 interpreter_to_interpreter_bridge_offset = 8; uint32 interpreter_to_compiled_code_bridge_offset = 9; uint32 jni_dlsym_lookup_offset = 10; uint32 quick_generic_jni_trampoline_offset = 11; uint32 quick_imt_conflict_trampoline_offset = 12; uint32 quick_resolution_trampoline_offset = 13; uint32 quick_to_interpreter_bridge_offset = 14; // for backward compatibility, removed from version 162, see aosp/e0669326c0282b5b645aba75160425eef9d57617 uint32 image_patch_delta = 15; uint32 image_file_location_oat_checksum = 16; // for backward compatibility, removed from version 162, see aosp/e0669326c0282b5b645aba75160425eef9d57617 uint32 image_file_location_oat_data_begin = 17; uint32 key_value_store_size = 18; // int8_t key_value_store_[0]; map<string, string> key_value_store = 19; repeated OatDexInfo oat_dex_info = 20; bool valid = 21; int32 bits = 22; string architecture = 23; } message DexSectionHeader { uint32 dex_size = 1; uint32 dex_shared_data_size = 2; uint32 quickening_info_size = 3; } // art/runtime/vdex_file.h message VdexInfo { bool valid = 1; // skip magic_[4] string verifier_deps_version = 2; string dex_section_version = 3; uint32 number_of_dex_files = 4; uint32 verifier_deps_size = 5; repeated uint32 checksums = 6; repeated DexSectionHeader dex_section_headers = 7; } message Permission { string name = 1; repeated Element elements = 2; } message PermissionList { string name = 1; repeated Permission permissions = 2; } message PackageFileContent { map<string, Entry> entries = 1; } // An entry in a release message Entry { // Name string name = 1; enum EntryType { FOLDER = 0; FILE = 1; TEST_MODULE_CONFIG = 2; JAR = 3; APK = 4; EXE = 5; SO = 6; OAT = 7; ODEX = 8; VDEX = 9; TEST_SUITE_TRADEFED = 10; BUILD_PROP = 11; SYMBOLIC_LINK = 12; RC = 13; ART = 14; XML = 15; IMG = 16; } // Type EntryType type = 2; // Size int64 size = 3; // Content ID string content_id = 4; // code_id string code_id = 5; // Parent folder string abi_architecture = 6; int32 abi_bits = 7; string parent_folder = 8; // Relative path string relative_path = 9; repeated string dependencies = 10; repeated string dynamic_loading_dependencies = 11; // file type specified info AppInfo app_info = 12; ArtInfo art_info = 13; OatInfo oat_info = 14; VdexInfo vdex_info = 15; // TestModule.config message TestModuleConfig test_module_config = 16; // Native services repeated Service services = 17; // Device permissions map<string, PermissionList> device_permissions = 18; // property map(key,value) map<string, string> properties = 19; } enum ReleaseType { DEVICE_BUILD = 0; TEST_SUITE = 1; APP_DISTRIBUTION_PACKAGE = 2; } message ReleaseContent { // Name string name = 1; // Version string version = 2; // Build Number string build_number = 3; // Full name string fullname = 4; // release uid e.g. Build Fingerprint string release_id = 5; // Content id string content_id = 6; // Size in byte int64 size = 7; ReleaseType release_type = 8; // property map(key,value) map<string, string> properties = 9; // File Entry map(relative_path, entry) map<string, Entry> entries = 10; // Test Suite specific string test_suite_tradefed = 11; string target_arch = 12; repeated string known_failures = 13; } // [END messages]