static uint64_t _adjustPartitionSize( const char* description, uint64_t imageBytes, uint64_t defaultBytes, int inAndroidBuild ) { char temp[64]; unsigned imageMB; unsigned defaultMB; if (imageBytes <= defaultBytes) return defaultBytes; imageMB = convertBytesToMB(imageBytes); defaultMB = convertBytesToMB(defaultBytes); if (imageMB > defaultMB) { snprintf(temp, sizeof temp, "(%d MB > %d MB)", imageMB, defaultMB); } else { snprintf(temp, sizeof temp, "(%lld bytes > %lld bytes)", imageBytes, defaultBytes); } if (inAndroidBuild) { dwarning("%s partition size adjusted to match image file %s\n", description, temp); } return convertMBToBytes(imageMB); }
int main(int argc, char **argv) { char tmp[MAX_PATH]; char* tmpend = tmp + sizeof(tmp); char* args[128]; int n; char* opt; /* The emulator always uses the first serial port for kernel messages * and the second one for qemud. So start at the third if we need one * for logcat or 'shell' */ int serial = 2; int shell_serial = 0; AndroidHwConfig* hw; AvdInfo* avd; AConfig* skinConfig; char* skinPath; int inAndroidBuild; uint64_t defaultPartitionSize = convertMBToBytes(66); AndroidOptions opts[1]; /* net.shared_net_ip boot property value. */ char boot_prop_ip[64]; boot_prop_ip[0] = '\0'; args[0] = argv[0]; if ( android_parse_options( &argc, &argv, opts ) < 0 ) { exit(1); } #ifdef _WIN32 socket_init(); #endif handle_ui_options(opts); while (argc-- > 1) { opt = (++argv)[0]; if(!strcmp(opt, "-qemu")) { argc--; argv++; break; } if (!strcmp(opt, "-help")) { emulator_help(); } if (!strncmp(opt, "-help-",6)) { STRALLOC_DEFINE(out); opt += 6; if (!strcmp(opt, "all")) { android_help_all(out); } else if (android_help_for_option(opt, out) == 0) { /* ok */ } else if (android_help_for_topic(opt, out) == 0) { /* ok */ } if (out->n > 0) { printf("\n%.*s", out->n, out->s); exit(0); } fprintf(stderr, "unknown option: -help-%s\n", opt); fprintf(stderr, "please use -help for a list of valid topics\n"); exit(1); } if (opt[0] == '-') { fprintf(stderr, "unknown option: %s\n", opt); fprintf(stderr, "please use -help for a list of valid options\n"); exit(1); } fprintf(stderr, "invalid command-line parameter: %s.\n", opt); fprintf(stderr, "Hint: use '@foo' to launch a virtual device named 'foo'.\n"); fprintf(stderr, "please use -help for more information\n"); exit(1); } if (opts->version) { printf("Android emulator version %s\n" "Copyright (C) 2006-2011 The Android Open Source Project and many others.\n" "This program is a derivative of the QEMU CPU emulator (www.qemu.org).\n\n", #if defined ANDROID_BUILD_ID VERSION_STRING " (build_id " STRINGIFY(ANDROID_BUILD_ID) ")" ); #else VERSION_STRING); #endif printf(" This software is licensed under the terms of the GNU General Public\n" " License version 2, as published by the Free Software Foundation, and\n" " may be copied, distributed, and modified under those terms.\n\n" " This program is distributed in the hope that it will be useful,\n" " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" " GNU General Public License for more details.\n\n"); exit(0); }
int main(int argc, char **argv) { char tmp[MAX_PATH]; char* tmpend = tmp + sizeof(tmp); char* args[128]; int n; char* opt; int use_sdcard_img = 0; int serial = 0; int gps_serial = 0; int radio_serial = 0; int qemud_serial = 0; int shell_serial = 0; unsigned cachePartitionSize = 0; unsigned systemPartitionSize = 0; unsigned dataPartitionSize = 0; unsigned defaultPartitionSize = convertMBToBytes(66); AndroidHwConfig* hw; AvdInfo* avd; AConfig* skinConfig; char* skinPath; //const char *appdir = get_app_dir(); char* android_build_root = NULL; char* android_build_out = NULL; AndroidOptions opts[1]; /* net.shared_net_ip boot property value. */ char boot_prop_ip[64]; boot_prop_ip[0] = '\0'; args[0] = argv[0]; if ( android_parse_options( &argc, &argv, opts ) < 0 ) { exit(1); } #ifdef _WIN32 socket_init(); #endif // Lets see if user just wants to list core process. if (opts->list_cores) { fprintf(stdout, "Enumerating running core processes.\n"); list_running_cores(opts->list_cores); exit(0); } while (argc-- > 1) { opt = (++argv)[0]; if(!strcmp(opt, "-qemu")) { argc--; argv++; break; } if (!strcmp(opt, "-help")) { emulator_help(); } if (!strncmp(opt, "-help-",6)) { STRALLOC_DEFINE(out); opt += 6; if (!strcmp(opt, "all")) { android_help_all(out); } else if (android_help_for_option(opt, out) == 0) { /* ok */ } else if (android_help_for_topic(opt, out) == 0) { /* ok */ } if (out->n > 0) { printf("\n%.*s", out->n, out->s); exit(0); } fprintf(stderr, "unknown option: -help-%s\n", opt); fprintf(stderr, "please use -help for a list of valid topics\n"); exit(1); } if (opt[0] == '-') { fprintf(stderr, "unknown option: %s\n", opt); fprintf(stderr, "please use -help for a list of valid options\n"); exit(1); } fprintf(stderr, "invalid command-line parameter: %s.\n", opt); fprintf(stderr, "Hint: use '@foo' to launch a virtual device named 'foo'.\n"); fprintf(stderr, "please use -help for more information\n"); exit(1); } if (opts->version) { printf("Android emulator version %s\n" "Copyright (C) 2006-2008 The Android Open Source Project and many others.\n" "This program is a derivative of the QEMU CPU emulator (www.qemu.org).\n\n", #if defined ANDROID_BUILD_ID VERSION_STRING " (build_id " STRINGIFY(ANDROID_BUILD_ID) ")" ); #else VERSION_STRING); #endif printf(" This software is licensed under the terms of the GNU General Public\n" " License version 2, as published by the Free Software Foundation, and\n" " may be copied, distributed, and modified under those terms.\n\n" " This program is distributed in the hope that it will be useful,\n" " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" " GNU General Public License for more details.\n\n"); exit(0); }