zoukankan      html  css  js  c++  java
  • Android 解决手机unauthorized错误

    转自:http://blog.csdn.net/quicksand201/article/details/19190821


    手机开发者选项中USB调试已经打开,在电脑命令行下输入adb devices,显示手机未认证

    D:developandroidrootadt-bundle-windows-x86-20131030sdkplatform-tools>adb devices
    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    List of devices attached
    42f7f2230e4cafe7        unauthorized

    网上搜了一圈,几经折腾,什么adb kill-server/start-server、重新开关USB调试、撤回USB除错授权,甚至坑爹的重刷手机系统都试过,也没有搞定。

    没办法,折腾adb源代码去,看这里

    https://android.googlesource.com/platform/system/core/+/d5fcafaf41f8ec90986c813f75ec78402096af2d

    源码没看到,先看到一大段英文,英文水平一般,直接搬原文:

    adb: Add public key authentification
    
    Secure adb using a public key authentication, to allow USB debugging
    only from authorized hosts.
    
    When a device is connected to an unauthorized host, the adb daemon sends
    the user public key to the device. A popup is shown to ask the user to
    allow debugging once or permanantly from the host. The public key is
    installed on the device in the later case. Other keys may be installed
    at build time.
    
    On the host, the user public/private key pair is automatically generated,
    if it does not exist, when the adb daemon starts and is stored in
    $HOME/.android/adb_key(.pub) or in $ANDROID_SDK_HOME on windows. If needed,
    the ADB_KEYS_PATH env variable may be set to a :-separated (; under
    Windows) list of private keys, e.g. company-wide or vendor keys.
    
    On the device, vendors public keys are installed at build time in
    /adb_keys. User-installed keys are stored in /data/misc/adb/adb_keys.
    
    ADB Protocol change:
    If the device needs to authenticate the host, it replies to CNXN
    packets with an AUTH packet. The AUTH packet payload is a random token.
    The host signs the token with one of its private keys and sends an AUTH(0)
    packet. If the signature verification succeeds, the device replies with
    a CNXN packet. Otherwise, it sends a new AUTH packet with a new token so
    that the host can retry with another private key. Once the host has tried
    all its keys, it can send an AUTH(1) packet with a public key as
    payload. adbd then sends the public key to the framework (if it has been
    started) for confirmation.

    在电脑的win7系统上查看ANDROID_SDK_HOME,命令行 echo %ANDRIOD_SDK_HOME%

    天啊,指向一个不存在的目录,哪个流氓软件干的

    将电脑环境变量中的ANDRIOD_SDK_HOME删除,重新运行adb devices,手机上出现授权提示,问题解决。

    D:developandroidrootadt-bundle-windows-x86-20131030sdkplatform-tools>adb devices
    List of devices attached
    42f7f2230e4cafe7        device


  • 相关阅读:
    1833: [ZJOI2010]count 数字计数——数位dp
    【模板】BZOJ 3685: 普通van Emde Boas树——Treap
    【模板】解决二分图匹配的强力算法——Hopcroft-Karp算法
    BZOJ 4516: [Sdoi2016]生成魔咒——后缀数组、并查集
    【模板】二分图匹配/一般图匹配——匈牙利算法/随机匈牙利算法
    【模板】BZOJ 1692:队列变换—后缀数组 Suffix Array
    BZOJ 4241: 历史研究——莫队 二叉堆
    【模板】BZOJ 3781: 小B的询问 莫队算法
    BZOJ 3656: 异或 (组合数取模 CRT)
    【模板】SPOJ FACT0 大数分解 miller-rabin & pollard-rho
  • 原文地址:https://www.cnblogs.com/defineconst/p/6559506.html
Copyright © 2011-2022 走看看