MASTG-TECH-0005: 安装应用
基本 APK 安装¶
使用 adb install
命令在模拟器或连接的设备上安装 APK。给定的路径是主机上 APK 的路径。
adb install ./myApp.apk
如果连接了多个设备,您可以指定安装到连接的设备 (-d
),模拟器或 TCP/IP 设备 (-e
) 或特定的序列号 (-s
)。
# Install to connected physical device
adb -d install ./myApp.apk
# Install to emulator
adb -e install ./myApp.apk
# List all devices
adb devices
List of devices attached
37081JEHN05882 device
emulator-5554 device
# Connect to a specific device
adb -s 37081JEHN05882 install ./myApp.apk
安装应用程序时,也可以使用 -g
自动授予所有运行时权限
adb install -g ./myApp.apk
安装重新打包的应用¶
如果已经安装了具有相同包名的应用程序,Android 将比较签名。如果签名匹配,更新将成功。如果签名不同(例如,在重新打包 APK 后),安装将失败。
adb install ./myRepackagedApp.apk
adb: failed to install myRepackagedApp.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Existing package org.owasp.mastestapp signatures do not match newer version; ignoring!]
要解决此问题,请首先使用 adb uninstall
删除原始应用程序
# Uninstall based on package name
adb uninstall org.owasp.mastestapp
# Normal install via adb
adb install ./myRepackagedApp.apk
安装到特定用户配置¶
要将 APK 安装到特定的用户配置,首先必须将 APK 推送到设备,因为不能使用 adb install
直接执行此操作。 请注意,推送到 /sdcard/
可能会导致权限问题,因此请使用 /data/local/tmp
以确保万无一失。 将 APK 推送到设备后,可以使用带有 --user XX
选项的 pm install
安装它
# Get an overview of available profiles
adb shell pm list users
Users:
UserInfo{0:Owner:c13} running
UserInfo{11:Sample Managed Profile:1030} running
# Push to /data/local/tmp/
adb push ./myApp.apk /data/local/tmp/
# Install with pm install and the --user option
adb shell pm install --user 11 /data/local/tmp/myRepackagedApp.apk
安装分离的 APK¶
如果需要安装分离的 APK,可以使用 install-multiple
命令。确保不同的分离 APK 与您的设备配置匹配
# Youtube is a split APK
adb shell pm path com.google.android.youtube
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/base.apk
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.arm64_v8a.apk
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.en.apk
package:/data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.xxhdpi.apk
# Obtain the different parts
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/base.apk
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.arm64_v8a.apk
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.en.apk
adb pull /data/app/~~ZLX3UNTF7R2oebU_viP7mw==/com.google.android.youtube-Rhm4GURIQ4twNvR6wxqc6w==/split_config.xxhdpi.apk
# Uninstall Youtube as a test
adb uninstall com.google.android.youtube
# Install the split APK files
adb install-multiple base.apk split_config.arm64_v8a.apk split_config.en.apk split_config.xxhdpi.apk