zoukankan      html  css  js  c++  java
  • Android ADB

    ADB

    ADB = Android Debug Bridge 顾名思义,这个是PC机与Android设备的连接桥。简单的说,就是通过adb ,PC可以控制与之相连的Android设备。

    注意:ADB命令是在Window命令行还总输入的。。。

    1,android手机连上PC,或者虚拟机启动之后,一般PC都会检测到设备并且自动连接上。我们用以下命令可以查看当前连接的设备列表:

    >>adb devices

    2,android是个Linux系统。我们可以通过adb启动一个Linux终端,执行Android上的Linux命令。通过以下操作:

    >>adb shell

    执行之后,进入android终端,输入的命令都是在手机上执行的。例如我们输入ls,看到的文件和目录都是手机里的。

    3,重启手机。有时候手机被锁屏了,或者被无限的弹出窗口占用了屏幕,无法重启了,可以利用adb来重启手机。

    >>adb reboot

    4,有时候,手机连接PC会出现问题,用adb devices查看到的是一串问号。这个时候,可以尝试:

    >>adb kill-server

    输入这个命令之后,立即(经验,10秒以内)输入:

    >>adb devices

    这样,手机会重新连接PC。

    5,拷贝文件到手机里

    >>adb push [PC文件路径] [手机的目录]

    因为每次只能拷贝一个文件到手机上,如果需要批量拷贝,可以自己写一个shell。

    6,从手机上拷贝文件到PC里

    >>adb pull [手机文件路径] [PC的目录]

    同样,每次只能拷贝一个文件

    7,安装apk到手机上。

    >>adb install [PC上的APK路径]

    Android手机有个设置,可以设置是否允许安装非签名的应用程序。但是用adb install方式,可以绕开这个设置。也就是说,不论手机是否允许安装非签名的应用程序,用adb install总能把apk安装到手机上。

    与之相对应的,还有

    >>adb uninstall [应用程序包名]

    8,有时候,连接会变的不稳定。这个时候,需要重新挂载一下手机。用以下命令:

    >>adb remount

    9,查看Log

    >>adb logcat

    手机上的两个重要目录:

    /system/app/:基本上APK都放在这个目录。

    /data/data/:每个应用程序的私有数据,都放在这个目录里。这个目录下,按照每个应用的包名存在很多目录。在每个包名下,存放的是与之对应的应用程序的私有数据,包括数据库、私有配置等等。

    ======================

    以下转载:

    1.  启动和关闭ADB服务(adb start-server和adb kill-server)

        经作者测试, 模拟器在运行一段时间后,adb服务有可能(在Windows进程中可找到这个服务,该服务用来为模拟器或通过USB数据线连接的真机服务)会出现异常。 这时需要重新对adb服务关闭和重启。当然,重启Eclipse可能会解决问题。但那比较麻烦。如果想手工关闭adb服务,可以使用下面的命令。

    adb kill-server

    在关闭adb服务后,要使用如下的命令启动adb服务。

    adb start-server

    2 查询当前模拟器/设备的实例(adb devices)

    有时需要启动多个模拟器实例,或启动模拟器的同时通过USB数据线连接了真机。在这种情况下就需要使用如下的命令查询当前有多少模拟器或真机在线。

    adb devices

    执行上面的命令后,会输出如图1所示的信息。

    附件: android-3-a.jpg
    图1

        其中第1列的信息(emulator-5554、HT9BYL904399)表示模拟器或真机的标识。emulator-5554表示模拟器,其中 5554表示adb服务为该模拟器实例服务的端口号。每启动一个新的模拟器实例,该端口号都不同。HT9BYL904399表示通过USB数据线连接的真 机。如果在运行Android程序时有多个模拟器或真机在线,那么会出现一个选择对话框。如果选择在真机运行,ADT会直接将程序安装在手机上。输出信息的第2列都是device,表示当前设备都在线。如果该列的值是offline,表示该实例没有被连接到adb上,或实例没有响应。

    3.  安装、卸载和运行程序(adb install、adb uninstall和am)

        在Eclipse中运行Android程序必须得有Android源码工程。那如果只有apk文件(Android应用程序的发行包,相当于Windows中的exe文件)该如何安装和运行呢?答案就是adb命令。假设我们要安装一个ebook.apk文件,可以使用如下的命令。

    adb install ebook.apk

        假设ebook.apk中的package是net.blogjava.mobile.ebook,可以使用如下的命令卸载这个应用程序。

    adb uninstall net.blogjava.mobile.ebook

        关于package的概念在以后的学习中会逐渐体会到。现在只要知道package是Android应用程序的唯一标识即可。如果在安装程序之前,该程序已经在模拟器或真机上存在了,需要先使用上面的命令卸载这个应用程序,然后再安装。或使用下面的命令重新安装。

    adb install -r ebook.apk

        在卸载应用程序时可以加上-k命令行参数保留数据和缓冲目录,只卸载应用程序。命令如下所示。

    adb uninstall -k net.blogjava.mobile.ebook

        如果机器上有多个模拟器或真机实例,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。

    在emulator-5554模拟器上安装ebook.apk

    adb -s emulator-5554 install ebook.apk

    在真机上安装ebook.apk

    adb -s HT9BYL904399 install ebook.apk

    在emulator-5554模拟器上重新安装ebook.apk

    adb -s emulator-5554 install -r ebook.apk

    在真机上重新安装ebook.apk

    adb -s HT9BYL904399 install -r ebook.apk

    在emulator-5554模拟器上卸载ebook.apk(不保留数据和缓冲目录)

    adb -s emulator-5554 uninstall net.blogjava.mobile.ebook

    在真机上卸载ebook.apk(保留数据和缓冲目录)

    adb -s HT9BYL904399 uninstall -k net.blogjava.mobile.ebook

    如果在模拟器和真机上成功安装ebook.apk,将会分别输出如图2和图3所示的信息。

    附件: android-3-b.jpg
    图2

    附件: android-3-c.jpg
    图 3

        如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。

    在emulator-5554模拟器上运行ebook.apk

    adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

    在真机上运行ebook.apk

    adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

    其中Main是ebook.apk的主Activity。相当于Windows应用程序的主窗体或Web应用程序的主页面。am是shell命令。关于shell命令将在后成的部分详细介绍。

  • 相关阅读:
    分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0(使用 .NET Core 3.0 Desktop API Analyzer )
    .NET 命令行参数包含应用程序路径吗?
    WPF 多线程 UI:设计一个异步加载 UI 的容器
    .NET/C# 使用反射调用含 ref 或 out 参数的方法
    .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
    .NET/C# 使用反射注册事件
    都是用 DllImport?有没有考虑过自己写一个 extern 方法?
    好的框架需要好的 API 设计 —— API 设计的六个原则
    Netty源码学习(七)FastThreadLocal
    Netty源码学习(六)ChannelPipeline
  • 原文地址:https://www.cnblogs.com/stephen-init/p/4049637.html
Copyright © 2011-2022 走看看