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バージョンをインストールすることです。
Android StudioでSDK Managerを開く
- macOS:
Android Studio > Preferences > Appearance & Behavior > System Settings > Android SDK
- Windows/Linux:
File > Settings > Appearance & Behavior > System Settings > Android SDK
- macOS:
SDK Toolsタブを選択
- "NDK (Side by side)"にチェックを入れる
- 右下の"Show Package Details"をクリック
安定版のNDKを選択してインストール
- 例:
26.1.10909125
(多くのプロジェクトで安定して動作します) - "Apply"をクリックしてインストール
- 例:
TIP
Expoを使用している場合は、NDK 27ではなく26系の使用が推奨されています。最新バージョンが必ずしも最適とは限らないので注意してください。
方法2: build.gradleへのNDKバージョン明示指定
app/build.gradle
ファイルに使用するNDKバージョンを明示的に指定します:
android {
compileSdkVersion flutter.compileSdkVersion
ndkVersion "23.1.7779620" // インストールされているバージョンに合わせて変更
}
WARNING
指定するNDKバージョンは、実際にAndroid SDK Managerでインストールされているバージョンと一致させる必要があります。
方法3: local.propertiesファイルの修正
android/local.properties
ファイルを開き、古いまたは不正なNDKパス設定を削除または修正します:
# 以下のような行を削除またはコメントアウト
# ndk.dir=~/Library/Android/sdk/ndk-bundle
# 正しいパスを設定する場合(必要な場合のみ)
ndk.dir=/Users/username/Library/Android/sdk/ndk/23.1.7779620
DANGER
ndk.dir
プロパティは非推奨であり、多くの場合、この行を完全に削除することが推奨されます。代わりにbuild.gradle
でndkVersion
を指定してください。
方法4: 不完全なNDKインストールの削除
ディスク容量不足などで不完全なNDKインストールが残っている場合、該当フォルダを削除します:
# エラーメッセージに表示されたパスに移動
cd ~/Library/Android/sdk/ndk
# 問題のあるバージョンのフォルダを削除(例:25.1.8937393)
rm -rf 25.1.8937393
その後、方法1で正しいNDKを再インストールします。
方法5: Flutterプロジェクトでの追加対応
Flutterプロジェクトの場合、以下の追加手順が必要なことがあります:
- Androidライセンスの承認:
flutter doctor --android-licenses
すべてのプロンプトに「y」で応答してライセンスを承認します。
- プロジェクトのクリーン:
flutter clean
cd android
./gradlew clean
トラブルシューティング
正しいNDKパスの確認
インストールされているNDKの正確なパスを確認するには:
- Android SDKのインストールディレクトリを開く(通常は
~/Library/Android/sdk/ndk/
) - バージョン番号のフォルダを確認
- 各フォルダ内に
source.properties
ファイルが存在するか確認
複数NDKバージョンの管理
複数のNDKバージョンがインストールされている場合、build.gradle
のndkVersion
で明示的にバージョンを指定することが重要です。指定しない場合、Gradleはデフォルトのバージョンを使用しようとし、エラーが発生する可能性があります。
予防策
- 定期的なSDK更新: Android StudioのSDK Managerを定期的に確認し、古いコンポーネントを更新する
- ディスク容量の確保: NDKのダウンロードや更新時に十分な空き容量を確保する
- バージョン管理: プロジェクトごとに使用するNDKバージョンを
build.gradle
で明示的に指定する - バックアップ: 重要なプロジェクトでは
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のバージョン、プロジェクトの特定の設定を確認してください。