jint JNICALL Java_crixec_app_imagefactory_utils_NativeUtils_unpackcpb (JNIEnv *env, jclass clazz, jobjectArray arr){ jint length = (*env)->GetArrayLength(env, arr); int i = 0; char *argv[length]; for (; i < length; i++) { jstring string = (jstring)((*env)->GetObjectArrayElement(env, arr, i)); if (string != NULL) { char *c = (*env)->GetStringUTFChars(env, string, 0); argv[i] = c; } } i = 0; return unpackcpb_main(length, argv); }
int main(int argc, char *argv[]){ char *arg; if(argv[1]){ arg = argv[1]; } argc--; int code = 0; // 退出状态 //没有参数 if (argc < 1){ usage(); return 1; } //app else if ( strcmp(argv[1],"unpack-app") == 0) { argc--; if (argc < 1){ lessarg("unpack-app",1); return 1; } unpackapp_main(argv[2]); } //cpb else if ( strcmp(argv[1],"unpack-cpb") == 0) { argc--; if (argc < 1){ lessarg("unpack-cpb",1); return 1; } unpackcpb_main(argv[2]); } // exbootimg else if ( strcmp(argv[1], "exbootimg") == 0 ) { argv++; if ( argc < 1 ){ lessarg("exbootimg",1); return 1; } argv[1] = "split"; splitboot_main(argc, argv); } //mkbootimg else if ( strcmp(argv[1], "mkbootimg") == 0 ) { argv++; argv[1] = "pack"; splitboot_main(argc, argv); } // revise else if ( strcmp(argv[1], "revise") == 0 ) { argc--; if ( argc < 2 ){ lessarg("revise",2); return 1; } revise_main(argv[2], argv[3]); } // simg2img else if ( strcmp(argv[1], "simg2img") == 0 ) { argv++; simg2img_main(argc, argv); } // 帮助 else if (strcmp(argv[1],"help") == 0) { argc--; usage(); code = 0; } //未知 else { printf("%s: 不支持的参数\n", argv[1]); printf("尝试使用: %s help 查看帮助\n", argv[0]); code = 2; } return code; }