{
  "id": "android/dexguard-obfuscation-mapping-not-found",
  "signature": "DexGuard: Mapping file not found: /path/to/mapping.txt. Obfuscation may fail.",
  "signature_zh": "DexGuard：找不到映射文件：/path/to/mapping.txt。混淆可能失败。",
  "regex": "DexGuard: Mapping file not found: .+",
  "domain": "android",
  "category": "build_error",
  "subcategory": null,
  "root_cause": "DexGuard requires a mapping file for incremental obfuscation, but the file is missing due to a clean build or misconfigured output path.",
  "root_cause_type": "generic",
  "root_cause_zh": "DexGuard 需要映射文件进行增量混淆，但由于清理构建或输出路径配置错误，该文件缺失。",
  "versions": [
    {
      "version": "DexGuard 9.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "DexGuard 10.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Android Gradle Plugin 7.4",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Android Gradle Plugin 8.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "DexGuard expects a mapping file for consistent obfuscation; without it, obfuscation may fail or produce inconsistent results.",
      "fail_rate": 0.8,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "This defeats the purpose of using DexGuard and may leave the app unprotected.",
      "fail_rate": 0.9,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Configure DexGuard to generate a new mapping file by adding '-dontobfuscate' temporarily, then re-enable obfuscation with the correct mapping path.",
      "success_rate": 0.8,
      "how": "Configure DexGuard to generate a new mapping file by adding '-dontobfuscate' temporarily, then re-enable obfuscation with the correct mapping path.",
      "condition": "",
      "sources": []
    },
    {
      "action": "Set the mapping file output path in the DexGuard configuration: '-printmapping /path/to/mapping.txt' and ensure the directory exists.",
      "success_rate": 0.85,
      "how": "Set the mapping file output path in the DexGuard configuration: '-printmapping /path/to/mapping.txt' and ensure the directory exists.",
      "condition": "",
      "sources": []
    },
    {
      "action": "Perform a clean build (./gradlew clean) and rebuild; DexGuard will create a new mapping file if the output directory is writable.",
      "success_rate": 0.75,
      "how": "Perform a clean build (./gradlew clean) and rebuild; DexGuard will create a new mapping file if the output directory is writable.",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "临时添加 '-dontobfuscate' 让 DexGuard 生成新映射文件，然后重新启用混淆并指定正确路径。",
    "在 DexGuard 配置中设置映射文件输出路径：'-printmapping /path/to/mapping.txt' 并确保目录存在。",
    "执行干净构建（./gradlew clean）并重新构建；如果输出目录可写，DexGuard 将创建新的映射文件。"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://www.guardsquare.com/manual/dexguard/configuration",
  "official_doc_section": null,
  "error_code": null,
  "verification_tier": "ai_generated",
  "confidence": 0.85,
  "fix_success_rate": 0.8,
  "resolvable": "true",
  "first_seen": "2023-06-20",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}