Skip to content

Androidの "Can not extract resource from com.android.aaptcompiler" エラーの解決方法

問題の概要

Androidアプリのビルド時に以下のエラーが発生する場合があります:

Execution failed for task ':app:mergeDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
   > Resource compilation failed (Failed to compile values resource file ...\values\values.xml. Cause: java.lang.IllegalStateException: Can not extract resource from com.android.aaptcompiler.ParsedResource@636e1e76.)

このエラーは、リソースファイル(主に values ディレクトリ内のXMLファイル)に問題があることを示しています。

エラーの原因

このエラーは、以下のような様々な理由で発生します:

  • リソースファイルのフォーマットが不正
  • XML構文の誤り
  • 値の指定方法が間違っている
  • 重複する定義
  • 特殊文字のエスケープ不足

解決方法一覧

1. 色コードに関する問題

xml
<!-- #記号の欠落 -->
<color name="primary_color">EAF5FF</color>

<!-- #記号の重複 -->
<color name="primary_color">##EAF5FF</color>

<!-- 引用符で囲んでいる -->
<color name="primary_color">"#EAF5FF"</color>

<!-- 不正な文字数 -->
<color name="primary_color">#EAF5FFC</color>
xml
<color name="primary_color">#EAF5FF</color>

2. 文字列リソースのエスケープ問題

xml
<string name="message">It's a beautiful day!</string>
<string name="exclamation">Wow! Amazing</string>
xml
<string name="message">It\'s a beautiful day!</string>
<string name="exclamation">Wow\! Amazing</string>

3. 寸法(dimen)リソースの単位問題

xml
<!-- 単位の指定ミス -->
<dimen name="padding_small">10p</dimen>
<dimen name="text_size">14s</dimen>
xml
<dimen name="padding_small">10dp</dimen>
<dimen name="text_size">14sp</dimen>

4. スタイルとテーマの定義問題

xml
<!-- スタイルのネスト(誤り) -->
<style name="AppTheme">
    <style name="NestedStyle">
        <item name="colorPrimary">@color/primary</item>
    </style>
</style>
xml
<!-- 別々に定義 -->
<style name="AppTheme">
    <!-- テーマの設定 -->
</style>

<style name="NestedStyle">
    <item name="colorPrimary">@color/primary</item>
</style>

5. IDリソースの定義問題

xml
<!-- 値の指定(誤り) -->
<item name="my_button" type="id">my_button</item>
xml
<!-- 値なしで定義 -->
<item name="my_button" type="id" />

エラーの特定方法

Android Studioでエラーを正確に特定するには:

  1. Buildタブを開く
  2. :app:mergeDebugResources の横にあるエラーをクリック
  3. 詳細なエラーメッセージ内の青色リンクをクリック
  4. 問題のあるファイルが開くので、誤りを修正

INFO

エラーメッセージに表示されるファイルパスを確認することで、問題のあるリソースファイルを特定できます。

その他の解決策

不正なファイルの削除

app/src/main/res/values ディレクトリに不要なXMLファイル(特に自動生成された ids.xml など)がないか確認し、削除します。

Jetifierの有効化

古いライブラリを使用している場合、gradle.properties ファイルに以下を追加します:

properties
android.enableJetifier=true

最近の変更の確認

エラーが発生する前に変更したファイルを確認し、元に戻してみてください。

予防策

  1. Gitの使用: 変更をコミットしてから作業し、問題が発生したら直前の状態に戻れるようにする
  2. XMLバリデーション: Android Studioの Tools > XML Actions > Validate でXMLファイルを検証
  3. コードレビュー: リソースファイルの変更はチームメンバーと確認する
  4. 定期的なクリーンビルド: Build > Clean Project で中間ファイルを定期的に削除

まとめ

"Can not extract resource from com.android.aaptcompiler" エラーは、主にリソースファイルの形式や内容に問題がある場合に発生します。色コード、文字列エスケープ、単位指定などの基本的なミスを注意深く確認することで、ほとんどの場合は解決できます。Android Studioのビルド出力を詳細に確認し、問題箇所を特定することが迅速な解決への近道です。