首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

macOS 下 adb install 報錯 Permission denied 完整排查指南

     編輯:程式設計綜合問答

錯誤現象

adb install -r ~/downloads/app-release.apk
failed to copy '/Users/mac/downloads/app-release.apk' to '/data/local/tmp/app-release.apk': Permission denied

常見原因與解決方案

1. 設備未授權 USB 調試

手機彈出「允許 USB 調試?」對話框,必須點擊「確定」。重新執行 adb devices 確認狀態為 device 而非 unauthorized。

2. 目標目錄權限不足

/data/local/tmp 需 shell 寫入權限。嘗試:

adb shell chmod 777 /data/local/tmp

若提示 Operation not permitted,說明設備未 Root,無法修改。改用 adb install -r -d 允許降級安裝,或指定安裝位置 adb install -r --external。

3. APK 簽名問題

  • Debug 簽名與 Release 簽名衝突:先 adb uninstall 包名 再安裝。
  • APK 損壞:嘗試重新構建或驗證 apksigner verify app-release.apk。

4. adb 版本不匹配

Mac 系統自帶 adb 可能過舊。使用 Android SDK 平台工具目錄下的 adb:

export PATH=$PATH:~/Library/Android/sdk/platform-tools
# 或直接使用絕對路徑
~/Library/Android/sdk/platform-tools/adb install -r app-release.apk

5. 存儲空間不足

執行 adb shell df /data 確認可用空間,清理緩存或卸載無用應用。

一鍵排查腳本

#!/bin/bash
echo "1. 設備狀態:" && adb devices -l
echo "2. 存儲空間:" && adb shell df /data
echo "3. 目標目錄權限:" && adb shell ls -ld /data/local/tmp
echo "4. 嘗試推送測試文件:" && adb push /dev/null /data/local/tmp/test_perm && echo "推送成功" || echo "推送失敗"
echo "5. 當前 adb 版本:" && adb version

最佳實踐

  • 開發階段使用 adb install -r -t(允許測試 APK 安裝)。
  • CI/CD 腳本中加入 adb wait-for-device 確保設備就緒。
  • 保持 adb、platform-tools、build-tools 三者版本一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved