• android_使用adb安装app包的详细步骤和可能遇到的问题(apk文件)


    ref

    adb连接电脑和android设备

    android设备端设置和准备

    • USB选项:
      • 选择文件传输
      • 而不是仅充电(只会导致文件传输等功能无法生效)
        • 典型错误:more than one device/emulator
    • 打开开发者选项(developerOptions)
    • 启用USB调试(USB debugging)
      • Switche to debugging mode when USB is connected
    • 允许通过USB安装应用(apps)(Install via USB)
      • 根据设备情况启用(比如MIUI)
    • (可选)关闭授权过期功能(Disalble adb authorizatoin timeout)

    电脑端准备

    • 下载adb工具包,并将所在目录用命令行打开(推荐配置到系统环境变量,以便在任何目录下可以调用adb)
    • 将需要安装的包准备在已知目录(比如桌面)或者adb命令工具所在目录
      • 前者使用绝对路径定位安装包位置:执行命令的格式为adb install xxx/xxx/appName.apk>完成安装
      • 后者只需要知道安装包的名字即可执行安装:执行adb install 完成安装即可

    android设备开发者选项设置推荐(可选)

    • 如果您经常用手机连接电脑做通行/传输,那么建议将usb连接的默认选项设置为File Transfer(文件传输)
    • 设置方法:
      • 较新android设备可以在设置搜索框中搜索默认
      • 或者直接在设置中按照打开路径:Additional settings/Developer options/Default Use configuration/File Transfer

    实例

    adb 安装app实例👺

    1. 检查设备链接情况

      • PS C:\Users\cxxu\Desktop\n11tp> adb devices
        List of devices attached
        UO7PKFNF99IR9TV4        device
        
        • 1
        • 2
        • 3
    2. 执行安装

      • PS C:\Users\cxxu\Desktop> adb install .\magisk.apk
        Performing Streamed Install
        Success
        
        • 1
        • 2
        • 3
      • 看到success,说明安装成功

      • 上述命令在2类情形下可以执行:

        • 安装包在桌面上,即C:\Users\xxxx\Desktop>
        • 或者adb所在目录被配置环境变量Path

    adb 卸载app实例

    • adb uninstall

    • 例如:卸载酷安应用市场:

      PS C:\Users\cxxu\Downloads> adb uninstall com.coolapk.market
      Success
      
      • 1
      • 2
    • 如果要降级安装某些应用,通常,就需要先卸载新版本,再安装老版本

      • 如果有root权限或其他高于一般的权限,可以直接强制降级app
      • 比如核心破解这类修改系统默认行为的工具

    FAQ@可能出现的问题👺

    错误的进入adb shell
    • xaga:/sdcard $ install magisk.apk
      install: Needs 2 arguments
      
      • 1
      • 2
      • adb install 是adb可执行文件提供,而不是adb shell 提供的(toybox)
    more than one device/emulator
    • PS C:\Users\cxxu\Desktop\n11tp> adb install .\magisk.apk
      adb.exe: more than one device/emulator
      
      • 1
      • 2
      • 初步排查:

        • 使用adb devices -l检查当前列表

          • 这里加一个参数-l会列出设备更加详细的信息,推荐加上,可看到设备型号
        • 下面是adb 将设备识别为多模拟设备

          • 这可能是根手机端选择的链接方式的选项有关!

          • 从而导致虽然只连接了一台设备,却扫描出了2台设备(包括模拟设备,应该是您的选项Use USB for 的选项更换之后导致的)

          • PS C:\Users\cxxu> adb devices
            List of devices attached
            UO7PKFNF99IR9TV4        device
            emulator-5554   offline
            
            • 1
            • 2
            • 3
            • 4
        • 如果向上面所讲的那样,发现了多台设备,那么考虑如下做法:

          • 断开所有adb链接:adb kill-server

            • 然后重新检查设备列表

            • PS C:\Users\cxxu> adb kill-server
              
              PS C:\Users\cxxu> adb devices -l
              * daemon not running; starting now at tcp:5037
              * daemon started successfully
              List of devices attached
              UO7PKFNF99IR9TV4       device product:xaga model:22041216C device:xaga transport_id:1
              
              • 1
              • 2
              • 3
              • 4
              • 5
              • 6
              • 7
            • 您也可以选择跳过adb kill-server,通过追加选项-s指定设备参数

            • 这样就不会导致设备指代不明的错误

            • 如果您链接了多个android设备(包括虚拟设备),

              • 考虑物理断开与其他设备
              • 但是最优雅的方式,是指定具体设备进行通行/控制
                • adb -s xxx
              • 这里的xxx代指的是设备序列号,例如上面的UO7PKFNF99IR9TV4
        • 开发者选项相关开关为正确开启,也可能导致相应错误

    • PS C:\Users\cxxu\Desktop\n11tp> adb install .\magisk.apk
      Performing Streamed Install
      adb: failed to install .\magisk.apk: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]
      
      
      • 1
      • 2
      • 3
      • 4

    第三方安装器

    查看应用版本

    • dumpsys package |grep versionName -i

    • 例如,查看酷安的版本:

      windows_x86_64:/$ dumpsys package com.coolapk.market|grep versionName -i
          versionName=13.1.3
      
      • 1
      • 2

    清除app数据

    • adb shell clear

    • 例如

      • PS C:\Users\cxxu\Desktop> adb shell pm clear com.android.settings
        Success
        
        • 1
        • 2
    • 例如刷入的某些模块导致系统无法正常运行,(比如卡在锁屏界面),可以尝试清除受怀疑的模块或者禁用它

    参考adb文档

    • PS C:\Users\cxxu> adb
      Android Debug Bridge version 1.0.41
      Version 33.0.2-8557947
      Installed as D:\exes\platform-tools\adb.exe
      ....省略篇幅....(跳过,直达主题:..app intallation
      
      app installation (see also `adb shell cmd package help`): 
       install [-lrtsdg] [--instant] PACKAGE
           push a single package to the device and install it
       install-multiple [-lrtsdpg] [--instant] PACKAGE...
           push multiple APKs to the device for a single package and install them
       install-multi-package [-lrtsdpg] [--instant] PACKAGE...
           push one or more packages to the device and install them atomically
           -r: replace existing application
           -t: allow test packages
           -d: allow version code downgrade (debuggable packages only)
           -p: partial application install (install-multiple only)
           -g: grant all runtime permissions
           --abi ABI: override platform's default ABI
           --instant: cause the app to be installed as an ephemeral install app
           --no-streaming: always push APK to device and invoke Package Manager as separate steps
           --streaming: force streaming APK directly into Package Manager
           --fastdeploy: use fast deploy
           --no-fastdeploy: prevent use of fast deploy
           --force-agent: force update of deployment agent when using fast deploy
           --date-check-agent: update deployment agent when local version is newer and using fast deploy
           --version-check-agent: update deployment agent when local version has different version code and using fast deploy
           (See also `adb shell pm help` for more options.)
       uninstall [-k] PACKAGE
           remove this app package from the device
           '-k': keep the data and cache directories
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
    • 根据帮助文档

      • app installation (see also adb shell cmd package help):
        • install [-lrtsdg] [–instant] PACKAGE
          push a single package to the device and install it
      • 可以发现,使用adb程序的子命令install来安装某个包到设备
        • 具体通过adb install来调用,因为install package是adb可执行文件提供的命令接口
        • 该包含了多个可选的选项和一个参数(安装包的路径)
        • 也可以不使用任何选项,默认行为就是执行app包文件安装
        • 吐槽一下原文档第一个子命令install没有换行的问题,容易漏看,可以结合grep来看文档
  • 相关阅读:
    Web3 solidity编写fillorder填充订单函数 并梳理讲述逻辑
    【汇编语言04】第3章 寄存器(内存访问)——理论知识
    IO流 Java
    论文阅读:JINA EMBEDDINGS: A Novel Set of High-Performance Sentence Embedding Models
    归并排序与计数排序
    golang中实现一个异步延时程序
    Python编程从入门到实践 第十章:文件和异常 练习答案记录
    【布局技巧】Flex 布局下居中溢出滚动截断问题
    SpringBoot之Swagger
    C#8.0本质论第七章--继承
  • 原文地址:https://blog.csdn.net/xuchaoxin1375/article/details/127853819