Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c77913f authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "libvendorsupport provides an API to replace vndk version" into main am: e4518372

parents 9920c4be e4518372
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ cc_library {
    llndk: {
        symbol_file: "libvendorsupport.map.txt",
    },
    srcs: ["version_props.c"],
    srcs: ["version_props.cpp"],
    cflags: [
        "-Wall",
        "-Werror",
@@ -32,6 +32,7 @@ cc_library {
    export_include_dirs: ["include"],
    shared_libs: [
        "liblog",
        "libbase",
    ],
}

+18 −0
Original line number Diff line number Diff line
@@ -44,4 +44,22 @@ int AVendorSupport_getVendorApiLevelOf(int sdkApiLevel);
 */
int AVendorSupport_getSdkApiLevelOf(int vendorApiLevel);

#if !defined(__ANDROID_VENDOR__)
/**
 * @brief Provide vendor API level to system modules.
 *
 * @details
 * Before deprecating VNDK, system modules read ro.vndk.version to find the
 * API level that vendor image had implemented. With the VNDK deprecation, this
 * must be replaced with ro.board.api_level. However, there still are devices
 * keeping old vendor partitions with the new system upgraded. In this case, the
 * VNDK version can be used as before.
 * This API is for platform only.
 *
 * @return ro.vndk.version if exist. Otherwise fallback to ro.board.api_level.
 * 0 if none of these properties are found. This is unexpected, though.
 */
int AVendorSupport_getVendorApiLevel();
#endif  // __ANDROID_VENDOR__

__END_DECLS
+14 −0
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

#include <log/log.h>

#if !defined(__ANDROID_VENDOR__)
#include <android-base/properties.h>
#endif

int AVendorSupport_getVendorApiLevelOf(int sdkApiLevel) {
    if (sdkApiLevel < __ANDROID_API_V__) {
        return sdkApiLevel;
@@ -39,3 +43,13 @@ int AVendorSupport_getSdkApiLevelOf(int vendorApiLevel) {
    ALOGE("Unexpected vendor api level: %d", vendorApiLevel);
    return __INVALID_API_LEVEL;
}

#if !defined(__ANDROID_VENDOR__)
int AVendorSupport_getVendorApiLevel() {
    int vendorApiLevel = android::base::GetIntProperty("ro.vndk.version", 0);
    if (vendorApiLevel) {
        return vendorApiLevel;
    }
    return android::base::GetIntProperty("ro.board.api_level", 0);
}
#endif  // __ANDROID_VENDOR__