static void _avdInfo_extractBuildProperties(AvdInfo* i) { i->targetArch = propertyFile_getTargetArch(i->buildProperties); if (!i->targetArch) { i->targetArch = ASTRDUP("arm"); D("Cannot find target CPU architecture, defaulting to '%s'", i->targetArch); } i->targetAbi = propertyFile_getTargetAbi(i->buildProperties); if (!i->targetAbi) { i->targetAbi = ASTRDUP("armeabi"); D("Cannot find target CPU ABI, defaulting to '%s'", i->targetAbi); } if (!i->apiLevel) { // Note: for regular AVDs, the API level is already extracted // from config.ini, besides, for older SDK platform images, // there is no build.prop file and the following function // would always return 1000, making the AVD unbootable!. i->apiLevel = propertyFile_getApiLevel(i->buildProperties); if (i->apiLevel < 3) { i->apiLevel = 3; D("Cannot find target API level, defaulting to %d", i->apiLevel); } } }
TEST(AvdUtil, propertyFile_getApiLevel) { FileData fd; const char* emptyFile = "\n"; const char* testFile19 = "ro.build.version.sdk=19\n"; const char* testFileBogus = "ro.build.version.sdk=bogus\n"; EXPECT_EQ(0,fileData_initFromMemory(&fd, emptyFile, strlen(emptyFile))); EXPECT_EQ(10000,propertyFile_getApiLevel(&fd)); EXPECT_EQ(0,fileData_initFromMemory(&fd, testFile19, strlen(testFile19))); EXPECT_EQ(19,propertyFile_getApiLevel(&fd)); EXPECT_EQ(0,fileData_initFromMemory(&fd, testFileBogus, strlen(testFileBogus))); EXPECT_EQ(3,propertyFile_getApiLevel(&fd)); }