#ifndef BASE_ANDROID_BUILD_INFO_H_
#define BASE_ANDROID_BUILD_INFO_H_
#include "build/build_config.h"
#if !BUILDFLAG(IS_OHOS)
#include <jni.h>
#endif
#include <string>
#include <vector>
#include "base/base_export.h"
#include "base/memory/singleton.h"
namespace base {
namespace android {
enum SdkVersion {
SDK_VERSION_JELLY_BEAN = 16,
SDK_VERSION_JELLY_BEAN_MR1 = 17,
SDK_VERSION_JELLY_BEAN_MR2 = 18,
SDK_VERSION_KITKAT = 19,
SDK_VERSION_KITKAT_WEAR = 20,
SDK_VERSION_LOLLIPOP = 21,
SDK_VERSION_LOLLIPOP_MR1 = 22,
SDK_VERSION_MARSHMALLOW = 23,
SDK_VERSION_NOUGAT = 24,
SDK_VERSION_NOUGAT_MR1 = 25,
SDK_VERSION_OREO = 26,
SDK_VERSION_O_MR1 = 27,
SDK_VERSION_P = 28,
SDK_VERSION_Q = 29,
SDK_VERSION_R = 30,
SDK_VERSION_S = 31,
SDK_VERSION_Sv2 = 32,
SDK_VERSION_T = 33,
};
class BASE_EXPORT BuildInfo {
public:
BuildInfo(const BuildInfo&) = delete;
BuildInfo& operator=(const BuildInfo&) = delete;
~BuildInfo() {}
static BuildInfo* GetInstance();
const char* device() const {
return device_;
}
const char* manufacturer() const {
return manufacturer_;
}
const char* model() const {
return model_;
}
const char* brand() const {
return brand_;
}
const char* android_build_id() const {
return android_build_id_;
}
const char* android_build_fp() const {
return android_build_fp_;
}
const char* gms_version_code() const {
return gms_version_code_;
}
const char* host_package_name() const { return host_package_name_; }
const char* host_version_code() const { return host_version_code_; }
const char* host_package_label() const { return host_package_label_; }
const char* package_version_code() const {
return package_version_code_;
}
const char* package_version_name() const {
return package_version_name_;
}
const char* package_name() const {
return package_name_;
}
const char* firebase_app_id() const { return firebase_app_id_; }
const char* custom_themes() const { return custom_themes_; }
const char* resources_version() const { return resources_version_; }
const char* build_type() const {
return build_type_;
}
const char* board() const { return board_; }
const char* installer_package_name() const { return installer_package_name_; }
const char* abi_name() const { return abi_name_; }
int sdk_int() const {
return sdk_int_;
}
int target_sdk_version() const { return target_sdk_version_; }
bool is_debug_android() const { return is_debug_android_; }
bool is_tv() const { return is_tv_; }
const char* version_incremental() const { return version_incremental_; }
const char* hardware() const { return hardware_; }
bool is_at_least_t() const { return is_at_least_t_; }
bool is_automotive() const { return is_automotive_; }
bool is_at_least_u() const { return is_at_least_u_; }
bool targets_at_least_u() const { return targets_at_least_u_; }
const char* codename() const { return codename_; }
private:
friend struct BuildInfoSingletonTraits;
explicit BuildInfo(const std::vector<std::string>& params);
const char* const brand_;
const char* const device_;
const char* const android_build_id_;
const char* const manufacturer_;
const char* const model_;
const int sdk_int_;
const char* const build_type_;
const char* const board_;
const char* const host_package_name_;
const char* const host_version_code_;
const char* const host_package_label_;
const char* const package_name_;
const char* const package_version_code_;
const char* const package_version_name_;
const char* const android_build_fp_;
const char* const gms_version_code_;
const char* const installer_package_name_;
const char* const abi_name_;
const char* const firebase_app_id_;
const char* const custom_themes_;
const char* const resources_version_;
const int target_sdk_version_;
const bool is_debug_android_;
const bool is_tv_;
const char* const version_incremental_;
const char* const hardware_;
const bool is_at_least_t_;
const bool is_automotive_;
const bool is_at_least_u_;
const bool targets_at_least_u_;
const char* const codename_;
};
}
}
#endif