使用C中的NDK获取操作系统版本

史蒂芬

我正在编写一个C程序,该程序要在运行Linux的桌面以及Android设备上执行。
我必须做一些特定于桌面的事情和一些特定于Android的事情。
我的问题是,是否有办法获得C语言中的OS版本,以便我可以处理该程序是在台式机上还是在Android设备上执行?

MVP

在您的本机代码中,您可以使用property_get(),如下所示:

#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);
    // ...   
}

在桌面上,property_get()应返回空字符串。

请注意,从Android 6开始<cutils/properties.h>,SDK中不提供该功能,请__system_property_get按以下方式使用

#include <sys/system_properties.h>

// ...

int myfunction() {
    char sdk_ver_str[PROPERTY_VALUE_MAX];
    if (__system_property_get("ro.build.version.sdk", sdk_ver_str)) {
        sdk_ver = atoi(sdk_ver_str);
    } else {
        // Not running on Android or SDK version is not available
        // ...
    }
    // ...   
}

您可以adb shell getprop用来查看所有可能的Android属性。但是请注意,并非所有设备都支持所有这些功能。


更新:如果您不需要操作系统版本,而只是想知道您的C / C ++代码是否正在Android上运行,那么非常简单的判断方法就是检查环境变量是否ANDROID_PROPERTY_WORKSPACE存在,例如:

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

此方法仅需要getenv()由提供stdlib.h

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Linx操作系统发行文件中获取操作系统名称和版本

来自分类Dev

如何在 UWP 中获取操作系统版本

来自分类Dev

使用 grep 和 sed 获取操作系统版本

来自分类Dev

如何在C#中获取已安装的操作系统版本号

来自分类Dev

如何在C#中获取已安装的操作系统版本号

来自分类Dev

使用C ++获取当前用户的会话名称,IP地址,已安装操作系统的名称以及此操作系统的版本

来自分类Dev

使用C ++获取当前用户的会话名称,IP地址,已安装操作系统的名称以及此操作系统的版本

来自分类Dev

如何在目标C中获取操作系统名称

来自分类Dev

如何在 C++ 中获取操作系统名称?

来自分类Dev

使用Java或C#正确获取操作系统信息

来自分类Dev

在 JSP 中获取操作系统语言

来自分类Dev

在 Sikuli 中查找 Windows 操作系统版本/版本

来自分类Dev

在Windows Universal应用中获取设备/操作系统版本和国家/语言代码

来自分类Dev

如何获取Mac操作系统的实际名称而不是版本?

来自分类Dev

获取主机的版本和操作系统类型

来自分类Dev

检查操作系统版本

来自分类Dev

操作系统版本IF语句

来自分类Dev

不同版本的操作系统?

来自分类Dev

使用兑换时操作系统或操作系统版本错误

来自分类Dev

不同操作系统中的c clock()

来自分类Dev

是否需要在不同的操作系统版本中测试 c# winform?

来自分类Dev

如何在Go中检测操作系统版本?

来自分类Dev

如何使用Linux命令检查操作系统和版本

来自分类Dev

如何在所有Postgres版本中获取服务器操作系统的本地时间

来自分类Dev

获取java.lang.NoSuchMethodError:4.2.2及更高版本操作系统中的android.os.FileUtils.getFatVolumeId

来自分类Dev

如何在所有Postgres版本中获取服务器操作系统的本地时间

来自分类Dev

如何使用功能在Windows Powershell中获取操作系统名称

来自分类Dev

在不同的操作系统中获取相同的/ etc

来自分类Dev

C#获取操作系统名称Windows 8.1

Related 相关文章

  1. 1

    从Linx操作系统发行文件中获取操作系统名称和版本

  2. 2

    如何在 UWP 中获取操作系统版本

  3. 3

    使用 grep 和 sed 获取操作系统版本

  4. 4

    如何在C#中获取已安装的操作系统版本号

  5. 5

    如何在C#中获取已安装的操作系统版本号

  6. 6

    使用C ++获取当前用户的会话名称,IP地址,已安装操作系统的名称以及此操作系统的版本

  7. 7

    使用C ++获取当前用户的会话名称,IP地址,已安装操作系统的名称以及此操作系统的版本

  8. 8

    如何在目标C中获取操作系统名称

  9. 9

    如何在 C++ 中获取操作系统名称?

  10. 10

    使用Java或C#正确获取操作系统信息

  11. 11

    在 JSP 中获取操作系统语言

  12. 12

    在 Sikuli 中查找 Windows 操作系统版本/版本

  13. 13

    在Windows Universal应用中获取设备/操作系统版本和国家/语言代码

  14. 14

    如何获取Mac操作系统的实际名称而不是版本?

  15. 15

    获取主机的版本和操作系统类型

  16. 16

    检查操作系统版本

  17. 17

    操作系统版本IF语句

  18. 18

    不同版本的操作系统?

  19. 19

    使用兑换时操作系统或操作系统版本错误

  20. 20

    不同操作系统中的c clock()

  21. 21

    是否需要在不同的操作系统版本中测试 c# winform?

  22. 22

    如何在Go中检测操作系统版本?

  23. 23

    如何使用Linux命令检查操作系统和版本

  24. 24

    如何在所有Postgres版本中获取服务器操作系统的本地时间

  25. 25

    获取java.lang.NoSuchMethodError:4.2.2及更高版本操作系统中的android.os.FileUtils.getFatVolumeId

  26. 26

    如何在所有Postgres版本中获取服务器操作系统的本地时间

  27. 27

    如何使用功能在Windows Powershell中获取操作系统名称

  28. 28

    在不同的操作系统中获取相同的/ etc

  29. 29

    C#获取操作系统名称Windows 8.1

热门标签

归档