Android – Obtención de la versión del sistema operativo con NDK en C

Estoy escribiendo un programa en C que quiero ejecutar en mi escritorio con Linux y también en un dispositivo Android.
Tengo que hacer algunas cosas específicas de escritorio y algunas cosas específicas de Android.
Mi pregunta es, ¿hay alguna manera de obtener la versión del sistema operativo en C para poder manejar si el programa se ejecuta en el escritorio o en el dispositivo Android?
Mejor respuesta
En tu código nativo, puedes usar property_get (), algo como esto:

#include <cutils/properties.h>

// ...

int myfunction() {
    char sdk_ver_str[PROPERTY_VALUE_MAX] = "0";
    property_get("ro.build.version.sdk", sdk_ver_str, "0");
    sdk_ver = atoi(sdk_ver_str);
    // ...   
}

En el escritorio, property_get () debería devolver una cadena vacía.

Puede usar adb shell getprop para ver todas las propiedades posibles de Android. Pero tenga en cuenta que no todos son compatibles con todos los dispositivos.

ACTUALIZACIÓN: si no necesita la versión del sistema operativo, pero simplemente quiere saber si su código C/C++ se está ejecutando en Android, una forma muy sencilla de saber es verificar si existe la variable de entorno ANDROID_PROPERTY_WORKSPACE,

if (getenv("ANDROID_PROPERTY_WORKSPACE")) {
    // running under Android
} else {
    // running on desktop
}

Este método solo necesita getenv (), que es proporcionado por stdlib.h.

Por favor indique la dirección original:Android – Obtención de la versión del sistema operativo con NDK en C - Código de registro