Skip to content

Instantly share code, notes, and snippets.

@simlevesque
Last active June 30, 2022 17:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simlevesque/a4a01a04de340ac29c19e0b7062133b1 to your computer and use it in GitHub Desktop.
Save simlevesque/a4a01a04de340ac29c19e0b7062133b1 to your computer and use it in GitHub Desktop.
Android ACRA report typescript definition
export interface AcraReport<T = unknown> {
REPORT_ID: string;
APP_VERSION_CODE: number;
APP_VERSION_NAME: string;
PACKAGE_NAME: string;
FILE_PATH: string;
PHONE_MODEL: string;
BRAND: string;
PRODUCT: string;
ANDROID_VERSION: string;
BUILD: Build;
TOTAL_MEM_SIZE: number;
AVAILABLE_MEM_SIZE: number;
BUILD_CONFIG: BuildConfig;
CUSTOM_DATA: CustomData<T>;
IS_SILENT: boolean;
STACK_TRACE: string;
INITIAL_CONFIGURATION: InitialConfiguration;
CRASH_CONFIGURATION: CrashConfiguration;
DISPLAY: Display;
USER_COMMENT: any;
USER_EMAIL: string;
USER_APP_START_DATE: string;
USER_CRASH_DATE: string;
DUMPSYS_MEMINFO: string;
LOGCAT: string;
INSTALLATION_ID: string;
DEVICE_FEATURES: DeviceFeatures;
ENVIRONMENT: Environment;
SHARED_PREFERENCES: SharedPreferences;
}
export interface Build {
BOARD: string;
BOOTLOADER: string;
BRAND: string;
CPU_ABI: string;
CPU_ABI2: string;
DEVICE: string;
DISPLAY: string;
FINGERPRINT: string;
HARDWARE: string;
HOST: string;
ID: string;
IS_DEBUGGABLE: boolean;
IS_EMULATOR: boolean;
MANUFACTURER: string;
MODEL: string;
PERMISSIONS_REVIEW_REQUIRED: boolean;
PRODUCT: string;
RADIO: string;
SUPPORTED_32_BIT_ABIS: string[];
SUPPORTED_64_BIT_ABIS: string[];
SUPPORTED_ABIS: string[];
TAGS: string;
TIME: number;
TYPE: string;
UNKNOWN: string;
USER: string;
VERSION: Version;
}
export interface Version {
ACTIVE_CODENAMES: any[];
BASE_OS: string;
CODENAME: string;
INCREMENTAL: string;
PREVIEW_SDK_INT: number;
RELEASE: string;
RESOURCES_SDK_INT: number;
SDK: string;
SDK_INT: number;
SECURITY_PATCH: string;
}
export interface BuildConfig {
APPLICATION_ID: string;
BUILD_TYPE: string;
DEBUG: boolean;
VERSION_CODE: number;
VERSION_NAME: string;
}
export interface CustomData<T = unknown> {
[key: string | number | symbol]: T;
}
export interface InitialConfiguration {
compatScreenHeightDp: number;
compatScreenWidthDp: number;
compatSmallestScreenWidthDp: number;
densityDpi: number;
dualscreenflag: number;
fontScale: number;
hardKeyboardHidden: string;
keyboard: string;
keyboardHidden: string;
locale: string;
mcc: number;
mnc: number;
navigation: string;
navigationHidden: string;
orientation: string;
screenHeightDp: number;
screenLayout: string;
screenWidthDp: number;
seq: number;
smallestScreenWidthDp: number;
touchscreen: string;
uiMode: string;
userSetLocale: boolean;
}
export interface CrashConfiguration {
compatScreenHeightDp: number;
compatScreenWidthDp: number;
compatSmallestScreenWidthDp: number;
densityDpi: number;
dualscreenflag: number;
fontScale: number;
hardKeyboardHidden: string;
keyboard: string;
keyboardHidden: string;
locale: string;
mcc: number;
mnc: number;
navigation: string;
navigationHidden: string;
orientation: string;
screenHeightDp: number;
screenLayout: string;
screenWidthDp: number;
seq: number;
smallestScreenWidthDp: number;
touchscreen: string;
uiMode: string;
userSetLocale: boolean;
}
export interface Display {
[key: `${number}`]: DisplayInfo;
}
export interface DisplayInfo {
currentSizeRange: CurrentSizeRange;
flags: string;
metrics: Metrics;
realMetrics: RealMetrics;
name: string;
realSize: [number, number];
rectSize: [number, number];
size: [number, number];
rotation: string;
isValid: boolean;
orientation: number;
refreshRate: number;
height: number;
width: number;
pixelFormat: number;
}
export interface CurrentSizeRange {
smallest: [number, number];
largest: [number, number];
}
export interface Metrics {
density: number;
densityDpi: number;
scaledDensity: string;
widthPixels: number;
heightPixels: number;
xdpi: number;
ydpi: number;
}
export interface RealMetrics {
density: number;
densityDpi: number;
scaledDensity: string;
widthPixels: number;
heightPixels: number;
xdpi: number;
ydpi: number;
}
export interface DeviceFeatures {
'android.hardware.sensor.accelerometer': boolean;
'android.hardware.faketouch': boolean;
'android.hardware.usb.accessory': boolean;
'android.software.backup': boolean;
'android.hardware.touchscreen': boolean;
'android.hardware.touchscreen.multitouch': boolean;
'android.software.print': boolean;
'android.hardware.ethernet': boolean;
'android.software.voice_recognizers': boolean;
'android.hardware.sensor.gyroscope': boolean;
'android.hardware.audio.low_latency': boolean;
'android.hardware.opengles.aep': boolean;
'android.hardware.bluetooth': boolean;
'android.hardware.camera.autofocus': boolean;
'android.hardware.usb.host': boolean;
'android.hardware.audio.output': boolean;
'android.hardware.camera.flash': boolean;
'android.hardware.camera.front': boolean;
'android.hardware.screen.portrait': boolean;
'android.software.home_screen': boolean;
'android.hardware.microphone': boolean;
'android.hardware.bluetooth_le': boolean;
'android.hardware.sensor.compass': boolean;
'android.hardware.touchscreen.multitouch.jazzhand': boolean;
'android.software.app_widgets': boolean;
'android.software.input_methods': boolean;
'android.hardware.sensor.light': boolean;
'android.software.device_admin': boolean;
'android.hardware.camera': boolean;
'android.hardware.screen.landscape': boolean;
'android.software.managed_users': boolean;
'android.software.webview': boolean;
'android.hardware.camera.any': boolean;
'android.hardware.touchscreen.multitouch.distinct': boolean;
'android.hardware.location.network': boolean;
'android.hardware.wifi.direct': boolean;
'android.software.live_wallpaper': boolean;
'android.hardware.location.gps': boolean;
'android.hardware.wifi': boolean;
'android.hardware.location': boolean;
glEsVersion: string;
}
export interface Environment {
getDataDirectory: string;
getDataMiscDirectory: string;
getDataPreloadsAppsDirectory: string;
getDataPreloadsDemoDirectory: string;
getDataPreloadsDirectory: string;
getDataPreloadsMediaDirectory: string;
getDataSystemCeDirectory: string;
getDataSystemDeDirectory: string;
getDataSystemDirectory: string;
getDownloadCacheDirectory: string;
getExpandDirectory: string;
getExternalStorageDirectory: string;
getExternalStorageState: string;
getLegacyExternalStorageDirectory: string;
getLegacyExternalStorageObbDirectory: string;
getOdmDirectory: string;
getOemDirectory: string;
getPrebundledUninstallBackDirectory: string;
getPrebundledUninstallGoneDirectory: string;
getRootDirectory: string;
getStorageDirectory: string;
getVendorDirectory: string;
isExternalStorageEmulated: boolean;
isExternalStorageRemovable: boolean;
}
export interface SharedPreferences {
default: string;
}
@simlevesque
Copy link
Author

Made from report of the latest version as of june 30 2022, 5.9.3. I have a only a small device sample, if I missed something let me know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment