/*
* Copyright ( C ) 2008 The Android Open Source Project
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
* * Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
* * Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in
* the documentation and / or other materials provided with the
* distribution .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT ,
* INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING ,
* BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS
* OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY ,
* OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE .
*/
#pragma once
/**
* @ defgroup apilevels API Levels
*
* Defines functions for working with Android API levels .
* @ {
*/
/**
* @ file android / api - level . h
* @ brief Functions for dealing with multiple API levels .
*
* See also
* https : //developer.android.com/ndk/guides/using-newer-apis
* for more tutorial information on dealing with multiple API levels .
*
* See also
* https : //android.googlesource.com/platform/bionic/+/main/docs/defines.md
* for when to use which ` # define ` when writing portable code .
*/
#include <sys/cdefs.h>
__BEGIN_DECLS
/**
* Magic version number for an Android OS build which has not yet turned
* into an official release , for comparison against ` _ _ ANDROID_API__ ` . See
* https : //android.googlesource.com/platform/bionic/+/main/docs/defines.md.
*/
#define __ANDROID_API_FUTURE__ 10000
/* This #ifndef should never be true except when doxygen is generating docs. */
#ifndef __ANDROID_API__
/**
* ` _ _ ANDROID_API__ ` is the [ API
* level ] ( https : //developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)
* this code is being built for . The resulting binaries are only guaranteed to
* be compatible with devices which have an API level greater than or equal to
* ` _ _ ANDROID_API__ ` .
*
* For NDK and APEX builds , this macro will always be defined . It is set
* automatically by Clang using the version suffix that is a part of the target
* name . For example , ` _ _ ANDROID_API__ ` will be 24 when Clang is given the
* argument ` - target aarch64 - linux - android24 ` .
*
* For non - APEX OS code , this defaults to _ _ ANDROID_API_FUTURE__ .
*
* The value of ` _ _ ANDROID_API__ ` can be compared to the named constants in
* ` < android / api - level . h > ` .
*
* The interpretation of ` _ _ ANDROID_API__ ` is similar to the AndroidManifest . xml
* ` minSdkVersion ` . In most cases ` _ _ ANDROID_API__ ` will be identical to
* ` minSdkVersion ` , but as it is a build time constant it is possible for
* library code to use a different value than the app it will be included in .
* When libraries and applications build for different API levels , the
* ` minSdkVersion ` of the application must be at least as high as the highest
* API level used by any of its libraries which are loaded unconditionally .
*
* Note that in some cases the resulting binaries may load successfully on
* devices with an older API level . That behavior should not be relied upon ,
* even if you are careful to avoid using new APIs , as the toolchain may make
* use of new features by default . For example , additional FORTIFY features may
* implicitly make use of new APIs , SysV hashes may be omitted in favor of GNU
* hashes to improve library load times , or relocation packing may be enabled to
* reduce binary size .
*
* See android_get_device_api_level ( ) ,
* android_get_application_target_sdk_version ( ) and
* https : //android.googlesource.com/platform/bionic/+/main/docs/defines.md.
*/
#define __ANDROID_API__ __ANDROID_API_FUTURE__
#endif
/** Deprecated name for API level 9. Prefer numeric API levels in new code. */
#define __ANDROID_API_G__ 9
/** Deprecated name for API level 14. Prefer numeric API levels in new code. */
#define __ANDROID_API_I__ 14
/** Deprecated name for API level 16. Prefer numeric API levels in new code. */
#define __ANDROID_API_J__ 16
/** Deprecated name for API level 17. Prefer numeric API levels in new code. */
#define __ANDROID_API_J_MR1__ 17
/** Deprecated name for API level 18. Prefer numeric API levels in new code. */
#define __ANDROID_API_J_MR2__ 18
/** Deprecated name for API level 19. Prefer numeric API levels in new code. */
#define __ANDROID_API_K__ 19
/** Deprecated name for API level 21. Prefer numeric API levels in new code. */
#define __ANDROID_API_L__ 21
/** Deprecated name for API level 22. Prefer numeric API levels in new code. */
#define __ANDROID_API_L_MR1__ 22
/** Deprecated name for API level 23. Prefer numeric API levels in new code. */
#define __ANDROID_API_M__ 23
/** Deprecated name for API level 24. Prefer numeric API levels in new code. */
#define __ANDROID_API_N__ 24
/** Deprecated name for API level 25. Prefer numeric API levels in new code. */
#define __ANDROID_API_N_MR1__ 25
/** Deprecated name for API level 26. Prefer numeric API levels in new code. */
#define __ANDROID_API_O__ 26
/** Deprecated name for API level 27. Prefer numeric API levels in new code. */
#define __ANDROID_API_O_MR1__ 27
/** Deprecated name for API level 28. Prefer numeric API levels in new code. */
#define __ANDROID_API_P__ 28
/** Deprecated name for API level 29. Prefer numeric API levels in new code. */
#define __ANDROID_API_Q__ 29
/** Deprecated name for API level 30. Prefer numeric API levels in new code. */
#define __ANDROID_API_R__ 30
/** Deprecated name for API level 31. Prefer numeric API levels in new code. */
#define __ANDROID_API_S__ 31
/** Deprecated name for API level 33. Prefer numeric API levels in new code. */
#define __ANDROID_API_T__ 33
/** Deprecated name for API level 34. Prefer numeric API levels in new code. */
#define __ANDROID_API_U__ 34
/** Deprecated name for API level 35. Prefer numeric API levels in new code. */
#define __ANDROID_API_V__ 35
/* This file is included in <features.h>, and might be used from .S files. */
#if !defined (__ASSEMBLER__)
#if __BIONIC_AVAILABILITY_GUARD(24 )
/**
* Returns the ` targetSdkVersion ` of the caller , or ` _ _ ANDROID_API_FUTURE__ ` if
* there is no known target SDK version ( for code not running in the context of
* an app ) .
*
* The returned value is the same as the AndroidManifest . xml ` targetSdkVersion ` .
* This is mostly useful for the OS to decide what behavior an app is expecting .
* See also android_get_device_api_level ( ) .
*
* Available since API level 24 .
*/
int android_get_application_target_sdk_version() __INTRODUCED_IN(24 );
#endif
#if __ANDROID_API__ < 29
/* android_get_device_api_level is a static inline before API level 29. */
#define __BIONIC_GET_DEVICE_API_LEVEL_INLINE static __inline
#include <bits/get_device_api_level_inlines.h>
#undef __BIONIC_GET_DEVICE_API_LEVEL_INLINE
#else
/**
* Returns the API level of the device we ' re actually running on , or - 1 on failure .
*
* The returned value is the same as the Java ` Build . VERSION . SDK_INT ` .
* This is mostly useful for an app to work out what version of the OS it ' s
* running on .
* See also android_get_application_target_sdk_version ( ) .
*
* Available since API level 29 .
*/
int android_get_device_api_level() __INTRODUCED_IN(29 );
#endif
#endif /* defined(__ASSEMBLER__) */
__END_DECLS
/** @} */
Messung V0.5 in Prozent C=93 H=98 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-28)
¤
*© Formatika GbR, Deutschland