| 63 | |
| 64 | |
| 65 | int get_android_api_level(void) { |
| 66 | if (g_api_level > 0) { |
| 67 | return g_api_level; |
| 68 | } |
| 69 | |
| 70 | char sdk_ver[PROP_VALUE_MAX]; |
| 71 | if (__system_property_get("ro.build.version.sdk", sdk_ver) > 0) { |
| 72 | g_api_level = atoi(sdk_ver); |
| 73 | } else { |
| 74 | g_api_level = 29; |
| 75 | LOGW("Failed to detect API level, defaulting to %d", g_api_level); |
| 76 | } |
| 77 | |
| 78 | LOGI("Detected Android API level: %d", g_api_level); |
| 79 | return g_api_level; |
| 80 | } |
| 81 | |
| 82 | static void* elf_find_symbol(const char* lib_path, uintptr_t load_addr, const char* symbol_name) { |
| 83 | int fd = open(lib_path, O_RDONLY); |
no outgoing calls
no test coverage detected