Skip to content

NDK source.properties 缺失错误解决方案

问题描述

在更新 Android Studio 到 4.1 版本后,许多开发者遇到了以下构建错误:

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

这个错误表明 Android NDK(Native Development Kit)安装存在问题,特别是缺少 source.properties 文件,该文件用于标识 NDK 的版本信息。

解决方案概览

INFO

根据问题根源,解决方案主要分为以下几类:

  1. 安装或重新安装正确的 NDK 版本
  2. 清理无效的 NDK 目录和配置
  3. 正确配置 NDK 版本和路径

解决方案

方法一:通过 Android Studio 安装正确 NDK 版本

逐步安装指南
  1. 打开 Android Studio
  2. 进入 FileSettings (Windows/Linux) 或 Preferences (Mac)
  3. 导航到 Appearance & BehaviorSystem SettingsAndroid SDK
  4. 选择 SDK Tools 标签页
  5. 勾选 NDK (Side by side) 并点击右下角的 Show Package Details
  6. 选择一个稳定的 NDK 版本(推荐 26.1.10909125)
  7. 点击 ApplyOK 开始安装

WARNING

请注意,Expo 和某些 React Native 项目可能与 NDK 27+ 版本存在兼容性问题,建议使用较稳定的 NDK 26 版本。

方法二:清理无效的 NDK 目录

如果 NDK 安装过程中因磁盘空间不足或其他原因中断,可能会导致 NDK 目录不完整:

bash
# 删除有问题的 NDK 版本目录
cd $ANDROID_HOME/ndk
rm -rf 25.1.8937393  # 替换为错误中显示的版本号

或者删除整个 ndk-bundle 目录(如果存在):

bash
rm -rf $ANDROID_HOME/ndk-bundle

方法三:配置正确的 NDK 版本

app/build.gradle 文件中指定正确的 NDK 版本:

groovy
android {
    compileSdkVersion 30
    ndkVersion "22.1.7171670"  // 使用实际安装的版本
}

方法四:更新 local.properties 文件

android/local.properties 文件中移除已弃用的 ndk.dir 配置行:

# 删除或注释掉这行
# ndk.dir=~/Library/Android/sdk/ndk-bundle

或者如果确实需要指定 NDK 路径,确保路径正确:

ndk.dir=/Users/username/Library/Android/sdk/ndk/26.1.10909125/android-ndk-r26b

TIP

较新的 NDK 版本(如 26.1.10909125)在版本目录内还有一个 android-ndk-r26b 子目录,确保路径指向实际包含 source.properties 文件的目录。

方法五:接受 Android 许可证

对于 Flutter 项目,有时需要接受 Android 许可证:

bash
flutter doctor --android-licenses

y 键接受所有许可证协议。

方法六:清理和重建项目

bash
# 对于 Flutter 项目
flutter clean

# 对于普通 Android 项目
cd android
./gradlew clean

推荐配置

当前推荐的稳定 NDK 版本配置:

groovy
android {
    compileSdkVersion 33
    ndkVersion "26.1.10909125"  // 稳定版本,兼容性好
}

故障排除流程图

总结

NDK source.properties 文件缺失错误通常由以下原因引起:

  • NDK 安装不完整或中断
  • NDK 版本配置不正确
  • 使用了已弃用的配置方式

通过安装正确的 NDK 版本、清理无效目录和更新项目配置,可以解决此问题。建议始终通过 Android Studio 的 SDK 管理器安装 NDK,并在 build.gradle 中明确指定 NDK 版本,而不是在 local.properties 中设置路径。

重要提示

避免手动复制 source.properties 文件到其他目录,这可能导致更复杂的版本冲突问题。始终使用官方安装和配置方法。