{"record":{"id":"d7e6be1922402cde","repo":"shwenzhang/AndResGuard","slug":"unsupported-option-optionoriginalform-see-help-for-supported","errorCode":null,"errorMessage":"Unsupported option: <optionOriginalForm>. See --help for supported options.","messagePattern":"Unsupported option: <optionOriginalForm>\\. See --help for supported options\\.","errorType":"validation","errorClass":"ParameterException","httpStatus":null,"severity":"error","filePath":"AndResGuard-core/src/main/java/apksigner/ApkSignerTool.java","lineNumber":178,"sourceCode":"        signerParams.keyPasswordSpec = optionsParser.getRequiredValue(\"Key password\");\n      } else if (\"v1-signer-name\".equals(optionName)) {\n        signerParams.v1SigFileBasename = optionsParser.getRequiredValue(\"JAR signature file basename\");\n      } else if (\"ks-type\".equals(optionName)) {\n        signerParams.keystoreType = optionsParser.getRequiredValue(\"KeyStore type\");\n      } else if (\"ks-provider-name\".equals(optionName)) {\n        signerParams.keystoreProviderName = optionsParser.getRequiredValue(\"JCA KeyStore Provider name\");\n      } else if (\"ks-provider-class\".equals(optionName)) {\n        signerParams.keystoreProviderClass = optionsParser.getRequiredValue(\"JCA KeyStore Provider class name\");\n      } else if (\"ks-provider-arg\".equals(optionName)) {\n        signerParams.keystoreProviderArg = optionsParser.getRequiredValue(\"JCA KeyStore Provider constructor argument\");\n      } else if (\"key\".equals(optionName)) {\n        signerParams.keyFile = optionsParser.getRequiredValue(\"Private key file\");\n      } else if (\"cert\".equals(optionName)) {\n        signerParams.certFile = optionsParser.getRequiredValue(\"Certificate file\");\n      } else if ((\"v\".equals(optionName)) || (\"verbose\".equals(optionName))) {\n        verbose = optionsParser.getOptionalBooleanValue(true);\n      } else {\n        throw new ParameterException(\"Unsupported option: \"\n                                     + optionOriginalForm\n                                     + \". See --help for supported\"\n                                     + \" options.\");\n      }\n    }\n    if (!signerParams.isEmpty()) {\n      signers.add(signerParams);\n    }\n    signerParams = null;\n\n    if (signers.isEmpty()) {\n      throw new ParameterException(\"At least one signer must be specified\");\n    }\n\n    params = optionsParser.getRemainingParams();\n    if (inputApk != null) {\n      // Input APK has been specified via preceding parameters. We don't expect any more\n      // parameters.","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/shwenzhang/AndResGuard/blob/e4df245d82f27d9a2d0dd108260a3510cbaba849/AndResGuard-core/src/main/java/apksigner/ApkSignerTool.java#L160-L196","documentation":"During `apksigner sign`, each command-line option must be one of the known sign options (in, out, ks, key, cert, etc.). An option name that matches none of them triggers this ParameterException immediately while parsing options.","triggerScenarios":"Passing an option not in sign's accepted set, e.g. `--kskey-alias` or `--ks-alias` instead of `--ks-key-alias`, or an option only valid for `verify` (like `--print-certs`) used with `sign`.","commonSituations":"Typos in long option names; mixing up sign and verify option sets; using options from a different apksigner version that added/renamed flags.","solutions":["Check `apksigner sign --help` for the exact supported option names","Correct the misspelled option (e.g. --ks-key-alias)","Remove options not supported by the sign subcommand"],"exampleFix":"// before\napksigner sign --ks-keyalias myalias --ks release.jks app.apk\n// after\napksigner sign --ks-key-alias myalias --ks release.jks app.apk","handlingStrategy":"validation","validationCode":"Set<String> ALLOWED = Set.of(\"out\",\"in\",\"min-sdk-version\",\"max-sdk-version\",\"v1-signing-enabled\",\"v2-signing-enabled\",\"v3-signing-enabled\",\"next-signer\",\"ks\",\"ks-key-alias\",\"ks-pass\",\"key-pass\",\"v1-signer-name\",\"ks-type\",\"ks-provider-name\",\"ks-provider-class\",\"ks-provider-arg\",\"key\",\"cert\",\"v\",\"verbose\");\nfor (String a : args) if (a.startsWith(\"--\") && !ALLOWED.contains(a.substring(2))) throw new IllegalArgumentException(\"unsupported option: \" + a);","typeGuard":"boolean isSignOption(String arg) {\n    return arg != null && arg.startsWith(\"--\") && ALLOWED_SIGN_OPTIONS.contains(arg.substring(2));\n}","tryCatchPattern":"try { runSign(args); } catch (ParameterException e) { System.err.println(e.getMessage()); printUsage(); }","preventionTips":["Consult `apksigner sign --help` when unsure of a flag","Don't mix verify-only options into sign commands","Pin the apksigner version and match its documented flags"],"tags":["cli","argument-parsing"],"backgroundTag":"invalid-cli-argument","analyzedSha":"e4df245d82f27d9a2d0dd108260a3510cbaba849","analyzedAt":"2026-09-12T17:49:07.798Z","contentChangedAt":"2026-09-12T17:49:07.798Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}