- Imported from https://github.com/supermegamestre/Project-Real-Resurrection-3 - APKTool decompilation (Smali bytecode) for modding and rebuilding APK - Supports both 32-bit (armeabi-v7a) and 64-bit (arm64-v8a) architectures - Includes full Smali source, resources, and native libraries - Ready to rebuild APK after modifications with apktool b command - Added comprehensive README-apktool.md with modding guide This branch complements the JADX branches: - Use JADX (main/discord-community) to UNDERSTAND code (readable Java) - Use APKTool (this branch) to MODIFY and REBUILD APK (editable Smali) Total: 44,417 files, 538.51 MB Smali source code
443 lines
16 KiB
Protocol Buffer
443 lines
16 KiB
Protocol Buffer
// Copyright 2020 Google LLC
|
|
//
|
|
// 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.
|
|
|
|
// Protos for logging firebase performance monitoring metrics collected by the
|
|
// Firebase performance sdk and transmitted to the backend using Firebase data transport.
|
|
//
|
|
// PRD: go/fireperf-prd
|
|
// SDK Data Model: go/fireperf-data-model
|
|
syntax = "proto2";
|
|
|
|
package firebase.perf.v1;
|
|
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "FirebasePerfMetricProto";
|
|
option java_package = "com.google.firebase.perf.v1";
|
|
|
|
// Firebase Perf Reporting Message
|
|
option objc_class_prefix = "FPRMSG";
|
|
|
|
// Single unit of performance data collected from firebase integrated 3P apps by the firebase
|
|
// performance sdk. This will be an an extension to GWSLogEntryProto and will correspond to one
|
|
// record in the RecordIO logs generated by firebase data transport. Every firebase performance
|
|
// related event logged to firebase data transport by the sdk will encapsulate one instance of this
|
|
// object.
|
|
//
|
|
// Next tag: 6
|
|
message PerfMetric {
|
|
|
|
// Additional metadata about an application and its state (including state of
|
|
// the device at runtime) that is not provided by firebase data transport.
|
|
optional ApplicationInfo application_info = 1;
|
|
|
|
// A metric which represents the performance statistics collected within an
|
|
// instrumented trace.
|
|
optional TraceMetric trace_metric = 2;
|
|
|
|
// A metric which represents the network latency, bandwidth and network
|
|
// connection info about a network request captured by the firebase sdk.
|
|
optional NetworkRequestMetric network_request_metric = 3;
|
|
|
|
// A metric which represents session gauges, such as cpu, memory, battery,
|
|
// within a session.
|
|
optional GaugeMetric gauge_metric = 4;
|
|
|
|
// A metric which represents the transport related information.
|
|
// When transport_info field is empty, it means the message is from Cct.
|
|
optional TransportInfo transport_info = 5;
|
|
}
|
|
|
|
// Metric which represents everything collected in the span of a trace. A trace
|
|
// may be further divided into subtraces.
|
|
// The trace can either be a default out of the box trace which is a
|
|
// part of the default instrumentation provided by the firebase performance sdk
|
|
// or a custom trace instrumented by the app developer using the sdk apis.
|
|
//
|
|
// Next tag: 10
|
|
message TraceMetric {
|
|
// The name of the trace. This could either be a user defined name for the
|
|
// developer instrumented custom traces or a default for traces automatically
|
|
// instrumented by the Firebase Performance SDK. The max length of 64
|
|
// characters will be enforced by the sdk.
|
|
optional string name = 1; // required.
|
|
|
|
// If true, then this is considered to be a trace automatically instrumented
|
|
// by the performance sdk. Otherwise, it is considered to be a custom trace
|
|
// instrumented by the developer using firebase perf sdk apis.
|
|
optional bool is_auto = 2;
|
|
|
|
// The timestamp in microseconds since epoch when the trace was started. This
|
|
// time is recorded using the device clock.
|
|
optional int64 client_start_time_us = 4; // required.
|
|
|
|
// The duration of the trace in microseconds.
|
|
optional int64 duration_us = 5; // required.
|
|
|
|
// A map of custom or default counter names to values.
|
|
map<string, int64> counters = 6;
|
|
|
|
// The metrics for subtraces within the trace.
|
|
|
|
// The following restrictions are currently enforced by the sdk on subtraces:
|
|
// Subtraces should only have 1 level of nesting.
|
|
// Subtraces should be non overlapping.
|
|
// Subtraces should be continuous, i.e no gaps between consecutive subtraces.
|
|
repeated TraceMetric subtraces = 7;
|
|
|
|
// A map of trace-level custom attribute names to values.
|
|
map<string, string> custom_attributes = 8;
|
|
|
|
// Sessions across which the trace spanned. A session lasts from one
|
|
// change in the app state (foreground/background) to the next. Basically
|
|
// every foreground and background session gets it's own session id. A trace
|
|
// may span across multiple such sessions. So we need a list to identify which
|
|
// sessions it spanned across.
|
|
repeated PerfSession perf_sessions = 9;
|
|
}
|
|
|
|
// Metric which represents the latency, bandwidth consumption and other details
|
|
// about a network request captured by the firebase sdk.
|
|
//
|
|
// Next tag: 14
|
|
message NetworkRequestMetric {
|
|
// The parameterless url to which the network request was made. The sdk will
|
|
// redact the unnecessary components of the URL and only log the components
|
|
// which are useful. For a url of the form
|
|
// scheme://host[:port]/path[?params][#fragment], the sdk should only log
|
|
// scheme://host[:port]/path
|
|
// Example:
|
|
// Captured Url: https://wwww.google.com/maps/cities#seattle?id=123
|
|
// Logged Url: https://wwww.google.com/maps/cities
|
|
optional string url = 1; // required.
|
|
|
|
// Supported HTTP methods for aggregating network requests. All network
|
|
// requests that can not be classified into the 9 methods below should be set
|
|
// to HTTP_METHOD_UNKNOWN.
|
|
enum HttpMethod {
|
|
HTTP_METHOD_UNKNOWN = 0;
|
|
GET = 1;
|
|
PUT = 2;
|
|
POST = 3;
|
|
DELETE = 4;
|
|
HEAD = 5;
|
|
PATCH = 6;
|
|
OPTIONS = 7;
|
|
TRACE = 8;
|
|
CONNECT = 9;
|
|
}
|
|
|
|
// The HTTP verb for the network request. Common values include GET,
|
|
// PUT, POST and DELETE
|
|
optional HttpMethod http_method = 2; // required.
|
|
|
|
// The size of the payload in the request.
|
|
optional int64 request_payload_bytes = 3;
|
|
|
|
// The size of the payload in the response.
|
|
optional int64 response_payload_bytes = 4;
|
|
|
|
// Info about the type of client error during network call.
|
|
enum NetworkClientErrorReason {
|
|
// Unspecified Network Client Error Reason.
|
|
NETWORK_CLIENT_ERROR_REASON_UNKNOWN = 0;
|
|
// No attempt made to classify the error.
|
|
GENERIC_CLIENT_ERROR = 1;
|
|
// Add the specific client error types below.
|
|
}
|
|
|
|
// The client error received from the networking library.
|
|
// Do not record a client error if we have HTTP response code available.
|
|
optional NetworkClientErrorReason network_client_error_reason = 11;
|
|
|
|
// The Http response code received from the server.
|
|
optional int32 http_response_code = 5; // required.
|
|
|
|
// The value of the content type header in the response.
|
|
optional string response_content_type = 6;
|
|
|
|
// The timestamp in microseconds since epoch when the network request was
|
|
// initiated. This time is recorded using the device clock.
|
|
optional int64 client_start_time_us = 7; // required.
|
|
|
|
// The time in microseconds since the start of the network request and the
|
|
// upload of the last request byte.
|
|
optional int64 time_to_request_completed_us = 8;
|
|
|
|
// The time in microseconds between the start of the network request and the
|
|
// receipt of the first byte of the response headers.
|
|
optional int64 time_to_response_initiated_us = 9;
|
|
|
|
// The time in microseconds between the start of the network request and the
|
|
// receipt of the last response byte.
|
|
optional int64 time_to_response_completed_us = 10; // required.
|
|
|
|
// A map of network-level custom attribute names to values.
|
|
map<string, string> custom_attributes = 12;
|
|
|
|
// Sessions across which the network request spanned. A session lasts
|
|
// from one change in the app state (foreground/background) to the next.
|
|
// Basically every foreground and background session gets it's own session id.
|
|
// A network request may span across multiple such sessions. So we need a list
|
|
// to identify which sessions it spanned across.
|
|
repeated PerfSession perf_sessions = 13;
|
|
}
|
|
|
|
// Metadata about a session and the amount of detail information it contains.
|
|
// See go/what-is-a-perf-session
|
|
message PerfSession {
|
|
// The id of a session.
|
|
optional string session_id = 1;
|
|
|
|
// The level of amount of detailed information that this session captures.
|
|
repeated SessionVerbosity session_verbosity = 2;
|
|
}
|
|
|
|
// Metric which represents gauges collected during the span of a session,
|
|
// including cpu, memory, battery, etc.
|
|
// The gauges will be collected by our own sdk and be purely numeric readings,
|
|
// user cannot pass any information here, so cannot contain PIIs.
|
|
//
|
|
// Next tag: 6
|
|
message GaugeMetric {
|
|
// Identifier of the session in which this gauge reading takes place.
|
|
// A session_id is specific to a device instance, and is used to tie gauge
|
|
// metrics to other peer traces and network requests that occurs during
|
|
// the session.
|
|
optional string session_id = 1;
|
|
|
|
// Metadata of gauge metrics whose value stay constant throughout the session.
|
|
optional GaugeMetadata gauge_metadata = 3;
|
|
|
|
// List of cpu gauge readings recorded in the session.
|
|
repeated CpuMetricReading cpu_metric_readings = 2;
|
|
|
|
// List of Android memory readings recorded, absent for iOS apps.
|
|
repeated AndroidMemoryReading android_memory_readings = 4;
|
|
}
|
|
|
|
// One reading of cpu gauge metric.
|
|
// See go/fireperf-cpu-gauge-metric.
|
|
//
|
|
// Next tag: 4
|
|
message CpuMetricReading {
|
|
// The timestamp in microseconds since epoch when this snapshot took place.
|
|
// This time is recorded using the device clock.
|
|
optional int64 client_time_us = 1;
|
|
// The total user cpu time since process started in microseconds.
|
|
optional int64 user_time_us = 2;
|
|
// The total system cpu time since process started in microseconds.
|
|
optional int64 system_time_us = 3;
|
|
}
|
|
|
|
// One reading of Android memory gauge metric.
|
|
// Note that this is cheap-to-capture memory reading, which is different from
|
|
// application's summary of memory usage (expensive to capture). Summary of
|
|
// memory usage will be captured at a much lower frequency in a different proto.
|
|
// See go/fireperf-sessions-memory.
|
|
//
|
|
// Next tag: 3
|
|
message AndroidMemoryReading {
|
|
// The timestamp in microseconds since epoch when this snapshot took place.
|
|
// This time is recorded using the device clock.
|
|
optional int64 client_time_us = 1;
|
|
|
|
// The amount of java heap memory that the app is using, in kilobytes.
|
|
optional int32 used_app_java_heap_memory_kb = 2;
|
|
}
|
|
|
|
// Metadata about gauges of a session.
|
|
// These are the gauge values that stay constant throughout the entire session.
|
|
// Examples include maxAppJavaHeapMemory (max memory allowed for the app) and
|
|
// cpuFrequency (frequency of cpu of the device that the app is running on).
|
|
// As long as one GaugeMetadata is sent for a session, these metadata will be
|
|
// available for all elements of the session. If multiple GaugeMetadata are sent
|
|
// for the same session, they are expected to be identical.
|
|
//
|
|
// Next tag: 7
|
|
message GaugeMetadata {
|
|
// Deprecated on 09/2022.
|
|
optional string process_name = 1 [deprecated = true];
|
|
|
|
// Clock rate of the cpu of the device, in kHz.
|
|
optional int32 cpu_clock_rate_khz = 2;
|
|
|
|
// The number of cpu cores that the device has.
|
|
optional int32 cpu_processor_count = 6;
|
|
|
|
// Size of RAM of the device, in kilobytes.
|
|
optional int32 device_ram_size_kb = 3;
|
|
|
|
// Maximum amount of memory the app can use before an OutOfMemoryException
|
|
// is triggered, in kilobytes.
|
|
// Only present for Android apps.
|
|
optional int32 max_app_java_heap_memory_kb = 4;
|
|
|
|
// The maximum amount of memory the app is encouraged to use to be properly
|
|
// respectful of the limits of the client device.
|
|
// Only present for Android apps.
|
|
optional int32 max_encouraged_app_java_heap_memory_kb = 5;
|
|
}
|
|
|
|
// Additional metadata about an application and its state (including state of
|
|
// the device at runtime) that is not provided by firebase data transport.
|
|
//
|
|
// Next tag: 8
|
|
message ApplicationInfo {
|
|
// Identifier for the application that has been registered with firebase.
|
|
// Contains pantheon project number, platform and the hash of the (package
|
|
// name or bundle id) fields in hex.
|
|
// [Version]:[Project Number]:[Platform]:[Hash(package_name/bundle_id)]
|
|
// The app id contains Pantheon project number which is a GAIA ID that
|
|
// identifies a particular organization or a customer.
|
|
optional string google_app_id = 1; // required.
|
|
|
|
// The App Instance Id which is used to compute the distinct users for which
|
|
// the metrics are recorded.
|
|
// Look at go/iid-features for more details about the instance id.
|
|
optional string app_instance_id = 2; // required.
|
|
|
|
// One of android_app_info, ios_app_info, and web_app_info is required.
|
|
// Additional information specific to an android app.
|
|
optional AndroidApplicationInfo android_app_info = 3;
|
|
|
|
// State of the application process during metric collection.
|
|
optional ApplicationProcessState application_process_state = 5; // required.
|
|
|
|
// A map of global-level custom attribute names to values.
|
|
map<string, string> custom_attributes = 6;
|
|
}
|
|
|
|
// Additional metadata about an android application that is not provided by
|
|
// firebase data transport.
|
|
//
|
|
// Next tag: 4
|
|
message AndroidApplicationInfo {
|
|
// The package name of the android application.
|
|
// e.g com.google.android.apps.maps
|
|
optional string package_name = 1; // required.
|
|
|
|
// The sdk version of the firebase perf android sdk.
|
|
optional string sdk_version = 2; // required.
|
|
|
|
// The versionName of the android application as shown on the play store.
|
|
// Firebase data transport logs the versionCode in the GWSLogEntryProto field:
|
|
// PlayExtension.client_info.android_client_info.application_build
|
|
// This field is necessary till the data transport supports logging version_name by
|
|
// default: b/32584283
|
|
optional string version_name = 3;
|
|
}
|
|
|
|
// To describe the network connectivity of the client.
|
|
// Copied from go/clientanalytics.proto
|
|
// Next tag: 3
|
|
message NetworkConnectionInfo {
|
|
enum NetworkType {
|
|
NONE = -1;
|
|
MOBILE = 0;
|
|
WIFI = 1;
|
|
MOBILE_MMS = 2;
|
|
MOBILE_SUPL = 3;
|
|
MOBILE_DUN = 4;
|
|
MOBILE_HIPRI = 5;
|
|
WIMAX = 6;
|
|
BLUETOOTH = 7;
|
|
DUMMY = 8;
|
|
ETHERNET = 9;
|
|
MOBILE_FOTA = 10;
|
|
MOBILE_IMS = 11;
|
|
MOBILE_CBS = 12;
|
|
WIFI_P2P = 13;
|
|
MOBILE_IA = 14;
|
|
MOBILE_EMERGENCY = 15;
|
|
PROXY = 16;
|
|
VPN = 17;
|
|
}
|
|
|
|
enum MobileSubtype {
|
|
UNKNOWN_MOBILE_SUBTYPE = 0;
|
|
GPRS = 1;
|
|
EDGE = 2;
|
|
UMTS = 3;
|
|
CDMA = 4;
|
|
EVDO_0 = 5;
|
|
EVDO_A = 6;
|
|
RTT = 7;
|
|
HSDPA = 8;
|
|
HSUPA = 9;
|
|
HSPA = 10;
|
|
IDEN = 11;
|
|
EVDO_B = 12;
|
|
LTE = 13;
|
|
EHRPD = 14;
|
|
HSPAP = 15;
|
|
GSM = 16;
|
|
TD_SCDMA = 17;
|
|
IWLAN = 18;
|
|
LTE_CA = 19;
|
|
|
|
// COMBINED has value -1 in NetworkIdentity.java, but is given the value
|
|
// 100 here to save (disk) space. The value -1 takes up the full 10 bytes in
|
|
// a varint for enums, but the value 100 only takes up 1 byte.
|
|
COMBINED = 100;
|
|
}
|
|
|
|
// The current network connectivity type when the event was logged in the
|
|
// client
|
|
optional NetworkType network_type = 1 [default = NONE];
|
|
|
|
// The current mobile connectivity subtype when the event was logged in the
|
|
// client
|
|
optional MobileSubtype mobile_subtype = 2 [default = UNKNOWN_MOBILE_SUBTYPE];
|
|
}
|
|
|
|
// Transport related metadata info.
|
|
// Next tag: 2
|
|
message TransportInfo {
|
|
// Dispatch destination for the event.
|
|
enum DispatchDestination {
|
|
SOURCE_UNKNOWN = 0; // Reserved
|
|
FL_LEGACY_V1 = 1; // Flg legacy endpoint
|
|
}
|
|
|
|
// Destination to which the events are sent.
|
|
optional DispatchDestination dispatch_destination = 1;
|
|
}
|
|
|
|
// Metadata about the state of application process during metrics collection.
|
|
//
|
|
enum ApplicationProcessState {
|
|
// Unspecified application process state.
|
|
APPLICATION_PROCESS_STATE_UNKNOWN = 0;
|
|
// Application process was in foreground
|
|
FOREGROUND = 1;
|
|
// Application process was in background
|
|
BACKGROUND = 2;
|
|
// Application process was both in foreground and background for the duration
|
|
// of metrics collection.
|
|
FOREGROUND_BACKGROUND = 3;
|
|
}
|
|
|
|
// The level of detailed information that is captured in a Perf Session, known
|
|
// as a session's verbosity. For different session we collect different levels
|
|
// of detailed information (or none at all) to avoid penalizing the same device
|
|
// constantly.
|
|
enum SessionVerbosity {
|
|
// Session doesn't have detailed information.
|
|
SESSION_VERBOSITY_NONE = 0;
|
|
// Session has gauges and system events information.
|
|
// See go/fireperf-samples-metrics-all for the list of gauges and
|
|
// system events that are captured within a session.
|
|
GAUGES_AND_SYSTEM_EVENTS = 1;
|
|
}
|