AvdInfo* avdInfo_newForAndroidBuild( const char* androidBuildRoot, const char* androidOut, AvdInfoParams* params ) { AvdInfo* i; ANEW0(i); i->inAndroidBuild = 1; i->androidBuildRoot = ASTRDUP(androidBuildRoot); i->androidOut = ASTRDUP(androidOut); i->contentPath = ASTRDUP(androidOut); i->targetArch = path_getBuildTargetArch(i->androidOut); i->apiLevel = path_getBuildTargetApiLevel(i->androidOut); /* TODO: find a way to provide better information from the build files */ i->deviceName = ASTRDUP("<build>"); /* There is no config.ini in the build */ i->configIni = NULL; if (_avdInfo_getCoreHwIniPath(i, i->androidOut) < 0 ) goto FAIL; /* Read the build skin's hardware.ini, if any */ _avdInfo_getBuildSkinHardwareIni(i); return i; FAIL: avdInfo_free(i); return NULL; }
AvdInfo* avdInfo_newForAndroidBuild( const char* androidBuildRoot, const char* androidOut, AvdInfoParams* params ) { AvdInfo* i; ANEW0(i); i->inAndroidBuild = 1; i->androidBuildRoot = ASTRDUP(androidBuildRoot); i->androidOut = ASTRDUP(androidOut); i->contentPath = ASTRDUP(androidOut); // Find the build.prop file and read it. char* buildPropPath = path_getBuildBuildProp(i->androidOut); if (buildPropPath) { _avdInfo_readPropertyFile(i, buildPropPath, i->buildProperties); free(buildPropPath); } // FInd the boot.prop file and read it. char* bootPropPath = path_getBuildBootProp(i->androidOut); if (bootPropPath) { _avdInfo_readPropertyFile(i, bootPropPath, i->bootProperties); free(bootPropPath); } _avdInfo_extractBuildProperties(i); i->deviceName = ASTRDUP("<build>"); /* out/target/product/<name>/config.ini, if exists, provide configuration * from build files. */ if (_avdInfo_getConfigIni(i) < 0 || _avdInfo_getCoreHwIniPath(i, i->androidOut) < 0) goto FAIL; /* Read the build skin's hardware.ini, if any */ _avdInfo_getBuildSkinHardwareIni(i); return i; FAIL: avdInfo_free(i); return NULL; }