折腾:
【未解决】Mac中用adb install安装安卓apk卡死
期间,去看看和确认Mac此处的adb是否是最新版本
如果不是,则去升级到最新版本
此处Mac中adb版本是
~ adb --version Android Debug Bridge version 1.0.41 Version 29.0.5-5949299 Installed as /usr/local/bin/adb
去网上找找是否有最新版adb
android latest adb
“29.0.5(2019 年 10 月)
* adb
* 使用许多同步连接时,在 Linux 上的性能略有提升。
* 向 adb install 添加了 –fastdeploy 选项,可在开发过程中对 APK 进行增量更新。”
此处29.0.5,是之前的,2019年10月份的版本
估计是有bug
最新的是:
“30.0.5(2020 年 11 月)
* 提升了 adb push/pull 在 Windows 上的性能。
* 修复了处理多个输入时 adb push –sync 的问题。
* 提升了增量 APK 安装的性能。
* 改进了针对增量 APK 安装的错误处理。
30.0.4(2020 年 7 月)
* adb
* 修复了在搭载 Android 11 之前版本的设备上回退到非增量 APK 安装的问题。
* 修复了 adb install-multi-package。
* 修复了更多与 adb 无线配对相关的崩溃问题。
* 改进了一些错误消息。
* fastboot
* 改进了 fastboot oem 命令的控制台输出。
* 修复了旧款设备(如 Nexus 7)上的 fastboot flashall 问题。
30.0.3(2020 年 6 月)
* adb
* 修复了在搭载 Android 11 之前版本的设备上安装使用 v4 签名方案签名的 APK 的问题。
* 修复了在不使用 ADB_VENDOR_KEYS 的情况下进行身份验证时发生崩溃的问题。
* 修复了使用 adb -H 时发生崩溃的问题。
30.0.2(2020 年 6 月)
* adb
* 改进了 adb 无线配对。
* 修复了在连接设备前运行时 adb logcat 挂起的问题。
* 添加了 adb transport-id,以允许脚本在运行 root/unroot/reboot 后安全地等待设备断开连接。
30.0.1(2020 年 5 月)
* adb
* 默认会停用 adb mdns 自动连接。此设置可通过 ADB_MDNS_AUTO_CONNECT 环境变量重新启用。
* 改进了 adb install-multi 在搭载 Android 10 或更高版本的设备上的性能。
* 修复了在通过 TCP 连接的设备上使用 adb root/unroot 时超时的问题。
* 更新了对无线配对的支持。
30.0.0(2020 年 4 月)
* adb
* 添加了对无线配对的初步支持。
* 添加了对增量 APK 安装的支持。
* 实现了对 adb {push, pull, sync} 压缩的客户端支持(在搭载 Android 11 的设备上使用时)。
* 提升了连接延迟时间较长时 adb push 的性能。
* 提升了 Windows 上的 push/pull 性能。
29.0.6(2020 年 2 月)
* adb
* 对 adb ls 提供 64 位大小/时间支持(在搭载 Android 11 的设备上使用时)。
* 支持在 POSIX 上监听 ::1。
* 在发布 WinUSB 描述符的 WinUSB 设备上,应该不需要再安装 U 盘,即可实现客户端支持(这对 Android 11 是必需的)。
* 修复了在实际上并非文件的项中使用 adb install 时挂起的问题。”
-》其中有很多adb install方面的更新
或许就是:已经解决了install卡死的问题。
其中最相关的一个是
“* 修复了在实际上并非文件的项中使用 adb install 时挂起的问题。”
不确定是否是,但是还是很有必要去升级此处adb到最新版本
-》
-》
去下载:
解压后文件:
去看看版本
~/dev/tools/android/adb/platform-tools ll total 28592 -rw-rw----@ 1 xxx CORP\Domain Users 321K 10 1 18:37 NOTICE.txt -rwxrwxr-x@ 1 xxx CORP\Domain Users 6.2M 10 21 15:27 adb drwxrwx---@ 4 xxx CORP\Domain Users 128B 10 1 18:37 api -rwxrwxr-x@ 1 xxx CORP\Domain Users 78K 10 21 15:27 dmtracedump -rwxrwxr-x@ 1 xxx CORP\Domain Users 1.4M 10 21 15:27 e2fsdroid -rwxrwxr-x@ 1 xxx CORP\Domain Users 304K 10 21 15:27 etc1tool -rwxrwxr-x@ 1 xxx CORP\Domain Users 1.6M 10 21 15:27 fastboot -rwxrwxr-x@ 1 xxx CORP\Domain Users 35K 10 21 15:27 hprof-conv drwxrwx---@ 3 xxx CORP\Domain Users 96B 10 21 15:27 lib64 -rwxrwxr-x@ 1 xxx CORP\Domain Users 256K 10 21 15:27 make_f2fs -rwxrwxr-x@ 1 xxx CORP\Domain Users 252K 10 21 15:27 make_f2fs_casefold -rwxrwxr-x@ 1 xxx CORP\Domain Users 762K 10 21 15:27 mke2fs -rwxrwxr-x@ 1 xxx CORP\Domain Users 1.1K 10 1 18:36 mke2fs.conf -rwxrwxr-x@ 1 xxx CORP\Domain Users 1.4M 10 21 15:27 sload_f2fs -rw-rw-r--@ 1 xxx CORP\Domain Users 38B 10 1 18:36 source.properties -rwxrwxr-x@ 1 xxx CORP\Domain Users 1.3M 10 21 15:27 sqlite3 drwxrwx---@ 6 xxx CORP\Domain Users 192B 10 1 18:36 systrace xxx@xxx ~/dev/tools/android/adb/platform-tools ./adb --version Android Debug Bridge version 1.0.41 Version 30.0.5-6877874 Installed as /Users/xxx/dev/tools/android/adb/platform-tools/./adb
最新版本是:30.0.5
那去把此处adb加到环境变量中,此时,可以考虑把此处路径,加到PATH的最前方,则可以保证用上最新的adb
去试试
注意到之前的路径是:
cat ~/.zshrc ... #PATH=$PATH:/Users/xxx/Library/Android/sdk/build-tools/29.0.2 export ANDROID_SDK_ROOT=/Users/xxx/Library/Android/sdk ANDROID_HOME=$ANDROID_SDK_ROOT PATH=$PATH:$ANDROID_SDK_ROOT/build-tools/29.0.2 PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools
去看看
xxx@xx ~ cd /Users/xxx/Library/Android/sdk/platform-tools xxx@xx ~/Library/Android/sdk/platform-tools ll total 28064 -rw-r--r-- 1 xxx CORP\Domain Users 308K 8 5 15:18 NOTICE.txt -rwxr-xr-x 1 xxx CORP\Domain Users 6.2M 8 5 15:18 adb drwxr-xr-x 4 xxx CORP\Domain Users 128B 8 5 15:18 api -rwxr-xr-x 1 xxx CORP\Domain Users 78K 8 5 15:18 dmtracedump -rwxr-xr-x 1 xxx CORP\Domain Users 1.4M 8 5 15:18 e2fsdroid -rwxr-xr-x 1 xxx CORP\Domain Users 304K 8 5 15:18 etc1tool -rwxr-xr-x 1 xxx CORP\Domain Users 1.6M 8 5 15:18 fastboot -rwxr-xr-x 1 xxx CORP\Domain Users 35K 8 5 15:18 hprof-conv drwxr-xr-x 3 xxx CORP\Domain Users 96B 8 5 15:18 lib64 -rwxr-xr-x 1 xxx CORP\Domain Users 251K 8 5 15:18 make_f2fs -rwxr-xr-x 1 xxx CORP\Domain Users 762K 8 5 15:18 mke2fs -rwxr-xr-x 1 xxx CORP\Domain Users 1.1K 8 5 15:18 mke2fs.conf -rw-r--r-- 1 xxx CORP\Domain Users 17K 8 5 15:18 package.xml -rwxr-xr-x 1 xxx CORP\Domain Users 1.4M 8 5 15:18 sload_f2fs -rw-r--r-- 1 xxx CORP\Domain Users 38B 8 5 15:18 source.properties -rwxr-xr-x 1 xxx CORP\Domain Users 1.3M 8 5 15:18 sqlite3 drwxr-xr-x 6 xxx CORP\Domain Users 192B 8 5 15:18 systrace xxx@xxx ~/Library/Android/sdk/platform-tools ./adb --version Android Debug Bridge version 1.0.41 Version 30.0.4-6686687 Installed as /Users/xxx/Library/Android/sdk/platform-tools/./adb xxx@xx ~/Library/Android/sdk/platform-tools
-》其实
/Users/xxx/Library/Android/sdk/platform-tools
下面的adb也是很新的版本:30.0.4
而此处的adb是:
xxx@xxx ~ which adb /usr/local/bin/adb xxx@xxx ~ adb --version Android Debug Bridge version 1.0.41 Version 29.0.5-5949299 Installed as /usr/local/bin/adb
好像是之前:
重新安装了android的SDK?(内置adb)
导致了adb是旧版本。
去看了看
/Users/xxx/Library/Android/sdk/platform-tools/29.0.2
里面有:
aapt
想起来了:
之前是升级aapt,导致路径用别的,导致adb是旧版本
xxx@x ~ which aapt /Users/xxx/Library/Android/sdk/build-tools/29.0.2/aapt xxx@x ~ aapt --version ERROR: Unknown command '--version' Android Asset Packaging Tool Usage: aapt l[ist] [-v] [-a] file.{zip,jar,apk} List contents of Zip-compatible archive. 。。。
看来aapt导致新的
去找找 之前aapt升级的前后过程
为何adb是旧版本
发现:
xxx@xxx ~ ll /usr/local/bin/adb lrwxr-xr-x 1 xxx admin 68B 11 7 2019 /usr/local/bin/adb -> /usr/local/Caskroom/android-platform-tools/29.0.5/platform-tools/adb
adb指向的是Caskroom
-》说明是brew安装的。
找到之前的:
【已解决】macOS中安装安卓开发工具adb
的
brew cask install android-platform-tools
和:
【已解决】Mac中安装获取安卓apk信息的工具aapt
的:
brew tap caskroom/cask brew cask install android-sdk
总之是,从brew安装的adb
所以才能看到adb是指向Caskroom下面的adb
此处的adb应该是之前的android-platform-tools或android-sdk安装得到的。
另外
也再去看看
/usr/local/Caskroom/android-platform-tools/29.0.5/platform-tools/adb
然后发现了:
/usr/local/Caskroom/android-platform-tools/29.0.5/platform-tools/
下面有adb
以及:
/usr/local/Caskroom/android-sdk
下面有:
很少用到。
-》说明前面的adb,的确是之前的:
brew cask install android-platform-tools
安装得到的:
/usr/local/Caskroom/android-platform-tools/29.0.5/platform-tools/adb
也觉得需要:删除掉之前的adb
或许是:
brew cast uninstall android-platform-tools
希望用之前在PATH中加的:
#PATH=$PATH:/Users/xxx/Library/Android/sdk/build-tools/29.0.2 export ANDROID_SDK_ROOT=/Users/xxx/Library/Android/sdk ANDROID_HOME=$ANDROID_SDK_ROOT PATH=$PATH:$ANDROID_SDK_ROOT/build-tools/29.0.2 PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools
就可以用,此处相对很新的,30.0.4(离最新的30.0.5)已经很接近了。
去试试
xxx@xx ~ brew cast uninstall android-platform-tools Error: Unknown command: cast ✘ xxx@xx ~ brew uninstall android-platform-tools ==> Uninstalling Cask android-platform-tools ==> Unlinking Binary '/usr/local/bin/adb'. ==> Unlinking Binary '/usr/local/bin/dmtracedump'. ==> Unlinking Binary '/usr/local/bin/etc1tool'. ==> Unlinking Binary '/usr/local/bin/fastboot'. ==> Unlinking Binary '/usr/local/bin/hprof-conv'. ==> Unlinking Binary '/usr/local/bin/mke2fs'. ==> Purging files for version 29.0.5 of Cask android-platform-tools
卸载后,立刻发现:
xxx@xxx ~ which adb /Users/xxx/Library/Android/sdk/platform-tools/adb xxx@xxx ~ adb --version Android Debug Bridge version 1.0.41 Version 30.0.4-6686687 Installed as /Users/xxx/Library/Android/sdk/platform-tools/adb
当然,还可以加上额外的变量定义,把最新的30.0.5的adb的路径:
/Users/xxx/dev/tools/android/adb/platform-tools
放到PATH最前面:
#PATH=$PATH:/Users/xxx/Library/Android/sdk/build-tools/29.0.2 PATH=/Users/xxx/dev/tools/android/adb/platform-tools:$PATH export ANDROID_SDK_ROOT=/Users/xxx/Library/Android/sdk ANDROID_HOME=$ANDROID_SDK_ROOT PATH=$PATH:$ANDROID_SDK_ROOT/build-tools/29.0.2 PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools
生效,看看:
xxx@xxx ~/dev/tools/android/adb/platform-tools source ~/.zshrc xxx@xxx ~/dev/tools/android/adb/platform-tools which adb /Users/xxx/dev/tools/android/adb/platform-tools/adb xxx@xx ~/dev/tools/android/adb/platform-tools adb --version Android Debug Bridge version 1.0.41 Version 30.0.5-6877874 Installed as /Users/xxx/dev/tools/android/adb/platform-tools/adb
就是我们希望的了。
【总结】
此处之前的adb版本是:
~ adb --version Android Debug Bridge version 1.0.41 Version 29.0.5-5949299 Installed as /usr/local/bin/adb
发现是2019 年 10 月发布的29.0.5,版本太老了
此处想要换最新版本的:截止20201203,是 30.0.5
而之前的旧版本,经过查证,是之前用brew安装的:
brew cask install android-platform-tools
所以先去卸载
brew uninstall android-platform-tools
然后去下载最新版本的adb:
来源1:
安卓官网
->
- * 下载适用于 Windows 的 SDK Platform-Tools
- * 下载适用于 Mac 的 SDK Platform-Tools
- * 下载适用于 Linux 的 SDK Platform-Tools
来源2:
-》
始终是最新地址:
- windows
- Mac
- Linux
然后下载后解压,得到platform-tools目录,把其放到合适位置
此处是:
/Users/xxx/dev/tools/android/adb/platform-tools
再去把对应路径加到PATH环境变量中
vi ~/.zshrc
编辑成:
PATH=/Users/xxx/dev/tools/android/adb/platform-tools:$PATH
注:
相关完整配置:
#PATH=$PATH:/Users/xxx/Library/Android/sdk/build-tools/29.0.2 PATH=/Users/xxx/dev/tools/android/adb/platform-tools:$PATH export ANDROID_SDK_ROOT=/Users/xxx/Library/Android/sdk ANDROID_HOME=$ANDROID_SDK_ROOT PATH=$PATH:$ANDROID_SDK_ROOT/build-tools/29.0.2 PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/platform-tools
即可确保是最新版:
xxx@xxx ~/dev/tools/android/adb/platform-tools which adb /Users/xxx/dev/tools/android/adb/platform-tools/adb xxx@xxx ~/dev/tools/android/adb/platform-tools adb --version Android Debug Bridge version 1.0.41 Version 30.0.5-6877874 Installed as /Users/xxx/dev/tools/android/adb/platform-tools/adb
附录:
- adb官网文档
- Android 调试桥 (adb) | Android 开发者 | Android Developers
转载请注明:在路上 » 【已解决】Mac中升级adb到最新版本