Skip to content

NDKのsource.propertiesファイルがない問題の解決

Android開発でNDK(Native Development Kit)を使用している際に、以下のようなエラーに遭遇することがあります:

Execution failed for task ':app:stripDebugDebugSymbols'.
NDK at ~/Library/Android/sdk/ndk-bundle did not have a source.properties file

このエラーは、指定されたNDKパスにsource.propertiesファイルが存在しないか、NDKのインストールが不完全であることを示しています。

INFO

この問題はAndroid Studioのアップデート後や、新しいマシンへの環境移行時によく発生します。複数の解決方法がありますが、プロジェクトの設定状況に応じて適切な方法を選択してください。

主な原因

このエラーの主な原因は以下の通りです:

  • NDKのインストールが不完全または破損している
  • local.propertiesファイルに古いNDKパス設定が残っている
  • ビルド設定と実際にインストールされているNDKのバージョンが一致しない
  • ディスク容量不足によるNDKダウンロードの失敗

解決方法

方法1: NDKの再インストール(推奨)

最も確実な解決方法は、Android Studioを通して正しいNDKバージョンをインストールすることです。

  1. Android StudioでSDK Managerを開く

    • macOS: Android Studio > Preferences > Appearance & Behavior > System Settings > Android SDK
    • Windows/Linux: File > Settings > Appearance & Behavior > System Settings > Android SDK
  2. SDK Toolsタブを選択

    • "NDK (Side by side)"にチェックを入れる
    • 右下の"Show Package Details"をクリック
  3. 安定版のNDKを選択してインストール

    • 例: 26.1.10909125(多くのプロジェクトで安定して動作します)
    • "Apply"をクリックしてインストール

TIP

Expoを使用している場合は、NDK 27ではなく26系の使用が推奨されています。最新バージョンが必ずしも最適とは限らないので注意してください。

方法2: build.gradleへのNDKバージョン明示指定

app/build.gradleファイルに使用するNDKバージョンを明示的に指定します:

groovy
android {
    compileSdkVersion flutter.compileSdkVersion
    ndkVersion "23.1.7779620"  // インストールされているバージョンに合わせて変更
}

WARNING

指定するNDKバージョンは、実際にAndroid SDK Managerでインストールされているバージョンと一致させる必要があります。

方法3: local.propertiesファイルの修正

android/local.propertiesファイルを開き、古いまたは不正なNDKパス設定を削除または修正します:

properties
# 以下のような行を削除またはコメントアウト
# ndk.dir=~/Library/Android/sdk/ndk-bundle

# 正しいパスを設定する場合(必要な場合のみ)
ndk.dir=/Users/username/Library/Android/sdk/ndk/23.1.7779620

DANGER

ndk.dirプロパティは非推奨であり、多くの場合、この行を完全に削除することが推奨されます。代わりにbuild.gradlendkVersionを指定してください。

方法4: 不完全なNDKインストールの削除

ディスク容量不足などで不完全なNDKインストールが残っている場合、該当フォルダを削除します:

bash
# エラーメッセージに表示されたパスに移動
cd ~/Library/Android/sdk/ndk

# 問題のあるバージョンのフォルダを削除(例:25.1.8937393)
rm -rf 25.1.8937393

その後、方法1で正しいNDKを再インストールします。

方法5: Flutterプロジェクトでの追加対応

Flutterプロジェクトの場合、以下の追加手順が必要なことがあります:

  1. Androidライセンスの承認:
bash
flutter doctor --android-licenses

すべてのプロンプトに「y」で応答してライセンスを承認します。

  1. プロジェクトのクリーン:
bash
flutter clean
cd android
./gradlew clean

トラブルシューティング

正しいNDKパスの確認

インストールされているNDKの正確なパスを確認するには:

  1. Android SDKのインストールディレクトリを開く(通常は~/Library/Android/sdk/ndk/
  2. バージョン番号のフォルダを確認
  3. 各フォルダ内にsource.propertiesファイルが存在するか確認

複数NDKバージョンの管理

複数のNDKバージョンがインストールされている場合、build.gradlendkVersionで明示的にバージョンを指定することが重要です。指定しない場合、Gradleはデフォルトのバージョンを使用しようとし、エラーが発生する可能性があります。

予防策

  1. 定期的なSDK更新: Android StudioのSDK Managerを定期的に確認し、古いコンポーネントを更新する
  2. ディスク容量の確保: NDKのダウンロードや更新時に十分な空き容量を確保する
  3. バージョン管理: プロジェクトごとに使用するNDKバージョンをbuild.gradleで明示的に指定する
  4. バックアップ: 重要なプロジェクトではlocal.propertiesをバージョン管理対象外にし、開発環境ごとに適切に設定する

まとめ

NDK did not have a source.properties fileエラーは、主にNDKのインストール問題または設定の不整合によって発生します。ほとんどの場合、Android Studioで正しいNDKバージョンをインストールし、build.gradleでバージョンを明示指定することで解決できます。local.propertiesの古い設定は削除し、プロジェクトのクリーンビルドを実行することで、問題の大部分は解消されます。

参考情報
  • 最新の安定版NDK: 26.1.10909125(2024年8月時点)
  • 非推奨: ndk.dirプロパティ(代わりにndkVersionを使用)
  • 推奨: Android StudioでのNDKサイドバイサイドインストール

この記事がAndroid NDK関連の問題解決に役立つことを願っています。問題が解決しない場合は、使用しているAndroid StudioやGradleのバージョン、プロジェクトの特定の設定を確認してください。