问题一:华为设备 ADB 驱动无法识别

现象 (Symptom)

手机通过 USB 连接电脑后,在设备管理器中显示为未知设备,Android Studio 无法识别到设备。用户提供了设备的硬件 ID,如 USB\VID_12D1&PID_107E&MI_00

原因分析 (Cause Analysis)

Windows 系统需要正确的驱动程序才能与安卓设备通过 ADB (Android Debug Bridge) 协议通信。Google 官方提供的 USB 驱动文件 (android_winusb.inf) 默认不包含所有手机厂商的硬件信息,尤其是华为等特定厂商的设备。我们需要手动将设备的硬件 ID 添加到驱动的 .inf 配置文件中。

解决方案 (Solution)
  1. 定位驱动文件:找到 Google USB 驱动文件夹,其中的核心配置文件是 android_winusb.inf
  2. 编辑 .inf 文件:使用文本编辑器打开该文件。
  3. 添加硬件 ID:在 [Google.NTx86][Google.NTamd64] 两个区域下,分别添加新的硬件ID条目。这样做是为了同时兼容 32 位和 64 位系统。
    • 选择 USB\VID_12D1&PID_107E&MI_00 作为硬件 ID,因为它比包含 REV(修订号)的版本更具通用性,能适应固件更新。
    • 添加的行如下: Code snippet

      ;Huawei Mate 60
      %CompositeAdbInterface%    = USB_Install, USB\VID_12D1&PID_107E&MI_00
      
  4. 保存文件

问题二:修改后的驱动因签名问题安装失败

现象 (Symptom)

在设备管理器中手动更新驱动,并指向修改后的 .inf 文件时,安装失败。Windows 提示错误:“文件的哈希值不在指定的目录文件中。此文件可能已损坏或被篡改。”

原因分析 (Cause Analysis)

手动编辑 .inf 文件破坏了驱动包原有的数字签名。现代 Windows 系统(特别是 64 位版本)默认开启了 “驱动程序强制签名” (Driver Signature Enforcement) 安全策略,禁止安装任何没有有效签名的驱动程序,以防止恶意软件。

解决方案 (Solution)

需要临时禁用该安全策略,以便安装我们修改过的无签名驱动。

  1. 进入高级启动:通过 设置 > 更新和安全 > 恢复 > 高级启动 > 立即重新启动
  2. 导航菜单:在重启后的蓝色菜单中,依次选择 疑难解答 > 高级选项 > 启动设置,然后点击 重新启动
  3. 禁用强制签名:在第二次重启后出现的启动选项列表中,按键盘上的数字键 7F7 来选择 “禁用驱动程序强制签名”
  4. 安装驱动:在本次启动中,系统将允许安装无签名的驱动。此时再次进入设备管理器,重复更新驱动的步骤,即可成功安装。
  5. 重启恢复:驱动安装成功后,正常重启电脑,驱动强制签名策略会自动恢复,但已安装的驱动会继续正常工作。

问题三:项目无法运行,提示 "Please select Android SDK"

现象 (Symptom)

设备成功连接后,点击“运行”按钮,弹出 "Edit Configuration" 对话框,底部显示红色错误 "Error: Please select Android SDK"。

原因分析 (Cause Analysis)

此错误说明 Android Studio 项目没有配置或关联到任何一个有效的 Android SDK(软件开发工具包)。IDE 不知道该使用哪个版本的工具链来编译和打包应用。

解决方案 (Solution)
  1. 打开项目结构:进入 File > Project Structure...
  2. 设置 SDK 路径:在左侧选择 SDK Location。确保 Android SDK location 字段指向了您电脑上 SDK 的正确安装路径(如 C:\Users\YourUser\AppData\Local\Android\Sdk)。
  3. 检查 SDK 平台(如果路径正确但问题依旧):关闭项目结构,打开 Tools > SDK Manager。在 SDK Platforms 标签页下,确保至少有一个 API 版本的平台处于 "Installed" (已安装) 状态。

问题四:编译错误 compileSdkVersion to 30 or above

现象 (Symptom)

项目同步或编译时,在 Build 输出窗口看到错误:"In order to compile Java 9+ source, please set compileSdkVersion to 30 or above"。

原因分析 (Cause Analysis)

项目配置使用了较新的 Java 语言版本(如 Java 11),但 build.gradle 文件中指定的 compileSdk(编译所用的 SDK 版本)过低,无法支持这些新语言特性。此外,安卓开发有一条最佳实践:compileSdk 的版本应大于或等于 targetSdk 的版本。

解决方案 (Solution)
  1. 定位配置文件:在项目视图中,展开 Gradle Scripts,打开 build.gradle (Module :app)build.gradle.kts (Module :app) 文件。
  2. 修改版本号:在 android { ... } 代码块内,找到 compileSdk 这一行,将其值修改为一个更高的版本,推荐直接与 targetSdk 的值保持一致或使用最新的稳定版(如 3435)。 Groovy

    // 示例
    android {
        compileSdk 35 // 修改这里
        defaultConfig {
            targetSdk 35
            // ...
        }
        // ...
    }
    
  3. 同步项目:修改文件后,点击文件编辑器顶部出现的 "Sync Now" 链接,或点击工具栏上的同步图标。

问题五:运行错误 "Default Activity not found"

现象 (Symptom)

项目编译成功,但在部署到手机上尝试启动时,IDE 弹出错误 "Error running 'app': Default Activity not found"。

原因分析 (Cause Analysis)

应用成功安装,但 Android 系统不知道应该启动哪一个页面(Activity)作为程序的入口。这个配置是在 AndroidManifest.xml 文件中通过一个特殊的 意图过滤器 (Intent Filter) 来声明的。

解决方案 (Solution)
  1. 定位清单文件:打开 app > manifests > AndroidManifest.xml

  2. 修改主 Activity:找到你希望作为应用启动页的 <activity> 标签。

  3. 添加 Intent Filter:在该 <activity> 标签内部,添加以下 <intent-filter> 代码块。

  4. 设置 exported 属性:同时,必须将该 <activity>android:exported 属性设置为 true,以允许外部应用(如系统桌面)启动它。

    XML

    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
  5. 1重新运行应用。

问题六:无法找到 "Sync Now" 按钮

现象 (Symptom)

被告知要点击 "Sync Now" 按钮,但用户不确定其位置。

原因分析 (Cause Analysis)

用户不熟悉 IDE 界面,或不同版本的 Android Studio 图标有所变化,导致描述与实际不符。

解决方案 (Solution)

从左往右第5个


Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐