热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

androidadb将内置apk删除,如何使用adb从多个连接的设备卸载APK?

这是一个简单的脚本,用于在我的所有设备上执行adb命令,应该在Linux和MacOsX下运行。您可能需要使其适应您的开发环境。#!binbash#Scr

这是一个简单的脚本,用于在我的所有设备上执行adb命令,应该在Linux和MacOsX下运行。

您可能需要使其适应您的开发环境。

#!/bin/bash # Script adb+ # Usage # You can run any command adb provide on all your current devices # ./adb+ is the equivalent of ./adb -s # # Examples # ./adb+ version # ./adb+ install apidemo.apk # ./adb+ uninstall com.example.android.apis adb devices | while read line do if [ ! "$line" = "" ] && [ `echo $line | awk '{print $2}'` = "device" ] then device=`echo $line | awk '{print $1}'` echo "$device $@ ..." adb -s $device $@ fi done

要在连接多个设备时卸载软件包,可以使用以下命令。

adb devices这将输出已连接项目的列表。

List of devices attached 1234c112fsasfl device 53fsks22323233 device 192.168.56.101:5555 device

adb -s your_device_key uninstall your_package_name 。

$ adb -s 1234c112fsasfl uninstall com.test.sample success - (if the device contains the apk with the specified package name) failure - (if the device did not contain the apk with the specified package name)

您必须编写一个多次调用adb的脚本,并在每次运行时使用-s开关指定每个连接设备的序列号。

另一种方法是使用Android Maven插件 ,它可以遍历所有连接的设备(或仅限模拟器或设备)。 请参阅Maven:我编写的完整参考书中的设备与iteteraction相关章节 。

此外,Android Maven插件的多设备交互也不适用于推送,拉取,安装和运行测试。

在JAVA中:

public class main { private final static String packageName = "com.mypackage.xxx"; public static void main(String[] args) throws IOException, InterruptedException { new main().doStuff(); } private void doStuff() throws IOException, InterruptedException { Runtime rt = Runtime.getRuntime(); String command = "adb devices -l"; Process pr = rt.exec(command); ArrayList> devices = new ArrayList>(); BufferedReader bf = new BufferedReader(new InputStreamReader(pr.getInputStream())); String l = ""; while ((l = bf.readLine()) != null) { String[] res = l.split("\\s{2,}"); if (res.length == 2) { HashMapdevice = new HashMap(); device.put("serial", res[0]); device.put("name", res[1]); devices.add(device); } } String commandUninstall = "adb -s %s uninstall %s"; for (HashMapmap : devices) { String serial = map.get("serial"); String finalCommanUnisntall = String.format(commandUninstall, serial, packageName); System.out.println(finalCommanUnisntall); Process pr2 = rt.exec(finalCommanUnisntall); BufferedReader bf2 = new BufferedReader(new InputStreamReader(pr2.getInputStream())); String l2 = ""; while ((l2 = bf2.readLine()) != null) { System.out.println(l2); } } } }

我意识到这个问题已经有了一个公认的答案,但是:

for d in $(adb devices -l | sed '1d' | sed '$d' | awk '{print $1}'); do adb -s $d uninstall your.pkg.id.here; done

子命令首先:

枚举所有连接的设备

剥离第一行

剥去最后一行

打印第一列(设备标识符)

然后外部for循环:

对于每个设备标识符

从指定的设备卸载your.pkg.id.here



推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有