Loading init/property_service.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -1104,7 +1104,8 @@ static void property_initialize_ro_vendor_api_level() { product_first_api_level = GetIntProperty("ro.build.version.sdk", __ANDROID_API_FUTURE__); } vendor_api_level = std::min(vendor_api_level_of(product_first_api_level), vendor_api_level); vendor_api_level = std::min(AVendorSupport_getVendorApiLevelOf(product_first_api_level), vendor_api_level); if (vendor_api_level < 0) { LOG(ERROR) << "Unexpected vendor api level for " << VENDOR_API_LEVEL_PROP << ". Check " Loading libvendorsupport/include/vendorsupport/api_level.h +9 −13 Original line number Diff line number Diff line Loading @@ -14,38 +14,34 @@ #pragma once #include <android/api-level.h> #include <sys/cdefs.h> __BEGIN_DECLS #define __ANDROID_VENDOR_API_MAX__ 1000000 #define __INVALID_API_LEVEL -1 #ifdef __cplusplus extern "C" { #endif /** * @brief Find corresponding vendor API level from an SDK API version. * * @details * SDK API versions and vendor API levels are not compatible and not * convertible. However, this function can be used to compare the two versions * exchangeable. However, this function can be used to compare the two versions * to know which one is newer than the other. * * @param sdk_api_level The SDK version int. This must be less than 10000. * @param sdkApiLevel The SDK version int. This must be less than 10000. * @return The corresponding vendor API level of the SDK version. -1 if the SDK * version is invalid or 10000. */ int vendor_api_level_of(int sdk_api_level); int AVendorSupport_getVendorApiLevelOf(int sdkApiLevel); /** * @brief Find corresponding SDK API version from a vendor API level. * * @param vendor_api_level The vendor API level int. * @param vendorApiLevel The vendor API level int. * @return The corresponding SDK API version of the vendor API level. -1 if the * vendor API level is invalid. */ int sdk_api_level_of(int vendor_api_level); int AVendorSupport_getSdkApiLevelOf(int vendorApiLevel); #ifdef __cplusplus } #endif __END_DECLS libvendorsupport/libvendorsupport.map.txt +2 −2 Original line number Diff line number Diff line LIBVENDORSUPPORT { global: vendor_api_level_of; # llndk systemapi sdk_api_level_of; # llndk systemapi AVendorSupport_getVendorApiLevelOf; # llndk systemapi AVendorSupport_getSdkApiLevelOf; # llndk systemapi local: *; }; libvendorsupport/tests/version_props_test.cpp +9 −9 Original line number Diff line number Diff line Loading @@ -21,17 +21,17 @@ using namespace std; namespace { TEST(vendorsupport, get_corresponding_vendor_api_level) { ASSERT_EQ(__ANDROID_API_U__, vendor_api_level_of(__ANDROID_API_U__)); ASSERT_EQ(202404, vendor_api_level_of(__ANDROID_API_V__)); ASSERT_EQ(__INVALID_API_LEVEL, vendor_api_level_of(__ANDROID_API_FUTURE__)); TEST(VendorSupport, GetCorrespondingVendorApiLevel) { ASSERT_EQ(__ANDROID_API_U__, AVendorSupport_getVendorApiLevelOf(__ANDROID_API_U__)); ASSERT_EQ(202404, AVendorSupport_getVendorApiLevelOf(__ANDROID_API_V__)); ASSERT_EQ(__INVALID_API_LEVEL, AVendorSupport_getVendorApiLevelOf(__ANDROID_API_FUTURE__)); } TEST(vendorsupport, get_corresponding_sdk_api_level) { ASSERT_EQ(__ANDROID_API_U__, sdk_api_level_of(__ANDROID_API_U__)); ASSERT_EQ(__ANDROID_API_V__, sdk_api_level_of(202404)); ASSERT_EQ(__INVALID_API_LEVEL, sdk_api_level_of(__ANDROID_VENDOR_API_MAX__)); ASSERT_EQ(__INVALID_API_LEVEL, sdk_api_level_of(35)); TEST(VendorSupport, GetCorrespondingSdkApiLevel) { ASSERT_EQ(__ANDROID_API_U__, AVendorSupport_getSdkApiLevelOf(__ANDROID_API_U__)); ASSERT_EQ(__ANDROID_API_V__, AVendorSupport_getSdkApiLevelOf(202404)); ASSERT_EQ(__INVALID_API_LEVEL, AVendorSupport_getSdkApiLevelOf(__ANDROID_VENDOR_API_MAX__)); ASSERT_EQ(__INVALID_API_LEVEL, AVendorSupport_getSdkApiLevelOf(35)); } } // namespace No newline at end of file libvendorsupport/version_props.c +12 −12 Original line number Diff line number Diff line Loading @@ -16,26 +16,26 @@ #include <log/log.h> int vendor_api_level_of(int sdk_api_level) { if (sdk_api_level < __ANDROID_API_V__) { return sdk_api_level; int AVendorSupport_getVendorApiLevelOf(int sdkApiLevel) { if (sdkApiLevel < __ANDROID_API_V__) { return sdkApiLevel; } // In Android V, vendor API level started with version 202404. // The calculation assumes that the SDK api level bumps once a year. if (sdk_api_level < __ANDROID_API_FUTURE__) { return 202404 + ((sdk_api_level - __ANDROID_API_V__) * 100); if (sdkApiLevel < __ANDROID_API_FUTURE__) { return 202404 + ((sdkApiLevel - __ANDROID_API_V__) * 100); } ALOGE("The SDK version must be less than 10000: %d", sdk_api_level); ALOGE("The SDK version must be less than 10000: %d", sdkApiLevel); return __INVALID_API_LEVEL; } int sdk_api_level_of(int vendor_api_level) { if (vendor_api_level < __ANDROID_API_V__) { return vendor_api_level; int AVendorSupport_getSdkApiLevelOf(int vendorApiLevel) { if (vendorApiLevel < __ANDROID_API_V__) { return vendorApiLevel; } if (vendor_api_level >= 202404 && vendor_api_level < __ANDROID_VENDOR_API_MAX__) { return (vendor_api_level - 202404) / 100 + __ANDROID_API_V__; if (vendorApiLevel >= 202404 && vendorApiLevel < __ANDROID_VENDOR_API_MAX__) { return (vendorApiLevel - 202404) / 100 + __ANDROID_API_V__; } ALOGE("Unexpected vendor api level: %d", vendor_api_level); ALOGE("Unexpected vendor api level: %d", vendorApiLevel); return __INVALID_API_LEVEL; } Loading
init/property_service.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -1104,7 +1104,8 @@ static void property_initialize_ro_vendor_api_level() { product_first_api_level = GetIntProperty("ro.build.version.sdk", __ANDROID_API_FUTURE__); } vendor_api_level = std::min(vendor_api_level_of(product_first_api_level), vendor_api_level); vendor_api_level = std::min(AVendorSupport_getVendorApiLevelOf(product_first_api_level), vendor_api_level); if (vendor_api_level < 0) { LOG(ERROR) << "Unexpected vendor api level for " << VENDOR_API_LEVEL_PROP << ". Check " Loading
libvendorsupport/include/vendorsupport/api_level.h +9 −13 Original line number Diff line number Diff line Loading @@ -14,38 +14,34 @@ #pragma once #include <android/api-level.h> #include <sys/cdefs.h> __BEGIN_DECLS #define __ANDROID_VENDOR_API_MAX__ 1000000 #define __INVALID_API_LEVEL -1 #ifdef __cplusplus extern "C" { #endif /** * @brief Find corresponding vendor API level from an SDK API version. * * @details * SDK API versions and vendor API levels are not compatible and not * convertible. However, this function can be used to compare the two versions * exchangeable. However, this function can be used to compare the two versions * to know which one is newer than the other. * * @param sdk_api_level The SDK version int. This must be less than 10000. * @param sdkApiLevel The SDK version int. This must be less than 10000. * @return The corresponding vendor API level of the SDK version. -1 if the SDK * version is invalid or 10000. */ int vendor_api_level_of(int sdk_api_level); int AVendorSupport_getVendorApiLevelOf(int sdkApiLevel); /** * @brief Find corresponding SDK API version from a vendor API level. * * @param vendor_api_level The vendor API level int. * @param vendorApiLevel The vendor API level int. * @return The corresponding SDK API version of the vendor API level. -1 if the * vendor API level is invalid. */ int sdk_api_level_of(int vendor_api_level); int AVendorSupport_getSdkApiLevelOf(int vendorApiLevel); #ifdef __cplusplus } #endif __END_DECLS
libvendorsupport/libvendorsupport.map.txt +2 −2 Original line number Diff line number Diff line LIBVENDORSUPPORT { global: vendor_api_level_of; # llndk systemapi sdk_api_level_of; # llndk systemapi AVendorSupport_getVendorApiLevelOf; # llndk systemapi AVendorSupport_getSdkApiLevelOf; # llndk systemapi local: *; };
libvendorsupport/tests/version_props_test.cpp +9 −9 Original line number Diff line number Diff line Loading @@ -21,17 +21,17 @@ using namespace std; namespace { TEST(vendorsupport, get_corresponding_vendor_api_level) { ASSERT_EQ(__ANDROID_API_U__, vendor_api_level_of(__ANDROID_API_U__)); ASSERT_EQ(202404, vendor_api_level_of(__ANDROID_API_V__)); ASSERT_EQ(__INVALID_API_LEVEL, vendor_api_level_of(__ANDROID_API_FUTURE__)); TEST(VendorSupport, GetCorrespondingVendorApiLevel) { ASSERT_EQ(__ANDROID_API_U__, AVendorSupport_getVendorApiLevelOf(__ANDROID_API_U__)); ASSERT_EQ(202404, AVendorSupport_getVendorApiLevelOf(__ANDROID_API_V__)); ASSERT_EQ(__INVALID_API_LEVEL, AVendorSupport_getVendorApiLevelOf(__ANDROID_API_FUTURE__)); } TEST(vendorsupport, get_corresponding_sdk_api_level) { ASSERT_EQ(__ANDROID_API_U__, sdk_api_level_of(__ANDROID_API_U__)); ASSERT_EQ(__ANDROID_API_V__, sdk_api_level_of(202404)); ASSERT_EQ(__INVALID_API_LEVEL, sdk_api_level_of(__ANDROID_VENDOR_API_MAX__)); ASSERT_EQ(__INVALID_API_LEVEL, sdk_api_level_of(35)); TEST(VendorSupport, GetCorrespondingSdkApiLevel) { ASSERT_EQ(__ANDROID_API_U__, AVendorSupport_getSdkApiLevelOf(__ANDROID_API_U__)); ASSERT_EQ(__ANDROID_API_V__, AVendorSupport_getSdkApiLevelOf(202404)); ASSERT_EQ(__INVALID_API_LEVEL, AVendorSupport_getSdkApiLevelOf(__ANDROID_VENDOR_API_MAX__)); ASSERT_EQ(__INVALID_API_LEVEL, AVendorSupport_getSdkApiLevelOf(35)); } } // namespace No newline at end of file
libvendorsupport/version_props.c +12 −12 Original line number Diff line number Diff line Loading @@ -16,26 +16,26 @@ #include <log/log.h> int vendor_api_level_of(int sdk_api_level) { if (sdk_api_level < __ANDROID_API_V__) { return sdk_api_level; int AVendorSupport_getVendorApiLevelOf(int sdkApiLevel) { if (sdkApiLevel < __ANDROID_API_V__) { return sdkApiLevel; } // In Android V, vendor API level started with version 202404. // The calculation assumes that the SDK api level bumps once a year. if (sdk_api_level < __ANDROID_API_FUTURE__) { return 202404 + ((sdk_api_level - __ANDROID_API_V__) * 100); if (sdkApiLevel < __ANDROID_API_FUTURE__) { return 202404 + ((sdkApiLevel - __ANDROID_API_V__) * 100); } ALOGE("The SDK version must be less than 10000: %d", sdk_api_level); ALOGE("The SDK version must be less than 10000: %d", sdkApiLevel); return __INVALID_API_LEVEL; } int sdk_api_level_of(int vendor_api_level) { if (vendor_api_level < __ANDROID_API_V__) { return vendor_api_level; int AVendorSupport_getSdkApiLevelOf(int vendorApiLevel) { if (vendorApiLevel < __ANDROID_API_V__) { return vendorApiLevel; } if (vendor_api_level >= 202404 && vendor_api_level < __ANDROID_VENDOR_API_MAX__) { return (vendor_api_level - 202404) / 100 + __ANDROID_API_V__; if (vendorApiLevel >= 202404 && vendorApiLevel < __ANDROID_VENDOR_API_MAX__) { return (vendorApiLevel - 202404) / 100 + __ANDROID_API_V__; } ALOGE("Unexpected vendor api level: %d", vendor_api_level); ALOGE("Unexpected vendor api level: %d", vendorApiLevel); return __INVALID_API_LEVEL; }