-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhow-to-make-the-truly-universal-adb-and-fastboot-drivers-for-windows.html
More file actions
438 lines (295 loc) · 28.3 KB
/
how-to-make-the-truly-universal-adb-and-fastboot-drivers-for-windows.html
File metadata and controls
438 lines (295 loc) · 28.3 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
<!DOCTYPE html>
<html lang="zh-Hans,default">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 4.2.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
<script id="hexo-configurations">
var NexT = window.NexT || {};
var CONFIG = {"hostname":"www.mak-blog.com","root":"/","scheme":"Muse","version":"7.7.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12,"onmobile":false},"copycode":{"enable":false,"show_result":false,"style":null},"back2top":{"enable":true,"sidebar":false,"scrollpercent":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"algolia":{"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"localsearch":{"enable":false,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}}};
</script>
<meta name="description" content="转载,英文原文链接 网上很多人宣称可以给windows系统提供一个通用adb驱动,但他们通常只是重新打包一下Google提供给亲儿子Nexus设备的USB驱动包,通过修改android_winusb_inf文件,添加大量USB的Vendor ID和Product ID进去。为什么这样还做不到真正的通用呢?因为如果你设备的ID信息没有添加进去,这样的驱动并不能驱动你的设备。然而微软的系统提供一种实现">
<meta property="og:type" content="article">
<meta property="og:title" content="如何制作一个windows下真正通用的adb驱动">
<meta property="og:url" content="http://www.mak-blog.com/how-to-make-the-truly-universal-adb-and-fastboot-drivers-for-windows.html">
<meta property="og:site_name" content="Songtao Mai">
<meta property="og:description" content="转载,英文原文链接 网上很多人宣称可以给windows系统提供一个通用adb驱动,但他们通常只是重新打包一下Google提供给亲儿子Nexus设备的USB驱动包,通过修改android_winusb_inf文件,添加大量USB的Vendor ID和Product ID进去。为什么这样还做不到真正的通用呢?因为如果你设备的ID信息没有添加进去,这样的驱动并不能驱动你的设备。然而微软的系统提供一种实现">
<meta property="article:published_time" content="2015-06-17T13:54:46.000Z">
<meta property="article:modified_time" content="2020-02-21T09:10:05.986Z">
<meta property="article:author" content="Songtao Mai">
<meta property="article:tag" content="android">
<meta property="article:tag" content="USB驱动">
<meta property="article:tag" content="通用">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="http://www.mak-blog.com/how-to-make-the-truly-universal-adb-and-fastboot-drivers-for-windows.html">
<script id="page-configurations">
// https://hexo.io/docs/variables.html
CONFIG.page = {
sidebar: "",
isHome: false,
isPost: true
};
</script>
<title>如何制作一个windows下真正通用的adb驱动 | Songtao Mai</title>
<noscript>
<style>
.use-motion .brand,
.use-motion .menu-item,
.sidebar-inner,
.use-motion .post-block,
.use-motion .pagination,
.use-motion .comments,
.use-motion .post-header,
.use-motion .post-body,
.use-motion .collection-header { opacity: initial; }
.use-motion .site-title,
.use-motion .site-subtitle {
opacity: initial;
top: initial;
}
.use-motion .logo-line-before i { left: initial; }
.use-motion .logo-line-after i { right: initial; }
</style>
</noscript>
</head>
<body itemscope itemtype="http://schema.org/WebPage">
<div class="container use-motion">
<div class="headband"></div>
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="Toggle navigation bar">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
</div>
<div class="site-meta">
<div>
<a href="/" class="brand" rel="start">
<span class="logo-line-before"><i></i></span>
<span class="site-title">Songtao Mai</span>
<span class="logo-line-after"><i></i></span>
</a>
</div>
</div>
<div class="site-nav-right"></div>
</div>
<nav class="site-nav">
<ul id="menu" class="menu">
<li class="menu-item menu-item-home">
<a href="/" rel="section"><i class="fa fa-fw fa-home"></i>Home</a>
</li>
<li class="menu-item menu-item-archives">
<a href="/archives/" rel="section"><i class="fa fa-fw fa-archive"></i>Archives</a>
</li>
<li class="menu-item menu-item-tags">
<a href="/tags/" rel="section"><i class="fa fa-fw fa-tags"></i>Tags</a>
</li>
<li class="menu-item menu-item-about">
<a href="/about/" rel="section"><i class="fa fa-fw fa-user"></i>About</a>
</li>
</ul>
</nav>
</div>
</header>
<div class="back-to-top">
<i class="fa fa-arrow-up"></i>
<span>0%</span>
</div>
<main class="main">
<div class="main-inner">
<div class="content-wrap">
<div class="content">
<div class="posts-expand">
<article itemscope itemtype="http://schema.org/Article" class="post-block " lang="zh-Hans">
<link itemprop="mainEntityOfPage" href="http://www.mak-blog.com/how-to-make-the-truly-universal-adb-and-fastboot-drivers-for-windows.html">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="Songtao Mai">
<meta itemprop="description" content="记录,分享,交流的空间">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="Songtao Mai">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
如何制作一个windows下真正通用的adb驱动
</h1>
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-o"></i>
</span>
<span class="post-meta-item-text">Posted on</span>
<time title="Created: 2015-06-17 21:54:46" itemprop="dateCreated datePublished" datetime="2015-06-17T21:54:46+08:00">2015-06-17</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">Edited on</span>
<time title="Modified: 2020-02-21 17:10:05" itemprop="dateModified" datetime="2020-02-21T17:10:05+08:00">2020-02-21</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-folder-o"></i>
</span>
<span class="post-meta-item-text">In</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/android/" itemprop="url" rel="index">
<span itemprop="name">android</span>
</a>
</span>
</span>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<p>转载,英文原文<a href="http://ktnr74.blogspot.com/2014/11/how-to-make-truly-universal-adb-and.html" target="_blank" rel="noopener" title="How to make the truly universal adb and fastboot drivers for Windows">链接</a> 网上很多人宣称可以给windows系统提供一个通用adb驱动,但他们通常只是重新打包一下Google提供给亲儿子Nexus设备的USB驱动包,通过修改<code>android_winusb_inf</code>文件,添加大量USB的<code>Vendor ID</code>和<code>Product ID</code>进去。为什么这样还做不到真正的通用呢?因为如果你设备的ID信息没有添加进去,这样的驱动并不能驱动你的设备。<br>然而微软的系统提供一种实现通用的驱动的方法。给一个设备寻找相应驱动的时候,windows系统可以通过硬件ID(例如:USB的<code>Vendor ID</code>和<code>Product ID</code>),也可以通过兼容ID(例如:<code>InterfaceClassClassID</code>,<code>InterfaceSubClassID和InterfaceProtocolID</code>)。幸运的是,所有安卓adb驱动的接口ID都是一样的。<br>在几年前,我曾经做了一个这样的adb驱动,并已经在很多不同的安卓设备上试验成功。</p>
<a id="more"></a>
<p>如下面步骤所述,你也可以自己制作一个安卓的adb驱动:</p>
<ol>
<li>通过官网下载最新的<a href="https://dl-ssl.google.com/android/repository/latest_usb_driver_windows.zip" target="_blank" rel="noopener">Google USB driver</a>。</li>
<li>解压到<code>usb_driver</code>文件夹</li>
<li>使用文档编辑器(例如Notepad++)打开<code>usb_driver\\android_winusb.inf</code>文件</li>
<li>把<code>[Google.Ntx86]</code>和<code>[Google.NTamd64]</code>的内容修改成如下所示:<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">[Google.NTx86]</span><br><span class="line">%SingleAdbInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_01</span><br><span class="line">%SingleBootLoaderInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_03</span><br><span class="line"></span><br><span class="line">[Google.NTamd64]</span><br><span class="line">%SingleAdbInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_01</span><br><span class="line">%SingleBootLoaderInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_03</span><br></pre></td></tr></table></figure></li>
<li>保存文件,这样你就有了一个真正的通用adb驱动。 如果需要的话,不要忘了更新文件<code>.android\\adb_usb.ini</code>。 在安装完这个驱动的时候,可以通过一下命令测试驱动是否在运行,可以顺便测试一下是否加载到之前的驱动。<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">powershell "gwmi Win32_USBControllerDevice | %{[wmi]($_.Dependent)} | </span><br><span class="line">?{$_.CompatibleID -like \"USB\Class_ff^&SubClass_42^&Prot_0?\"} | fl Name,DeviceID,Service"</span><br></pre></td></tr></table></figure>
修改后的inf文件如下所示:<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br></pre></td><td class="code"><pre><span class="line">;</span><br><span class="line">; Android WinUsb driver installation.</span><br><span class="line">;</span><br><span class="line">[Version]</span><br><span class="line">Signature = "$Windows NT$"</span><br><span class="line">Class = AndroidUsbDeviceClass</span><br><span class="line">ClassGuid = {3F966BD9-FA04-4ec5-991C-D326973B5128}</span><br><span class="line">Provider = %ProviderName%</span><br><span class="line">DriverVer = 08/28/2014,11.0.0000.00000</span><br><span class="line">CatalogFile.NTx86 = androidwinusb86.cat</span><br><span class="line">CatalogFile.NTamd64 = androidwinusba64.cat</span><br><span class="line"></span><br><span class="line">[ClassInstall32]</span><br><span class="line">Addreg = AndroidWinUsbClassReg</span><br><span class="line"></span><br><span class="line">[AndroidWinUsbClassReg]</span><br><span class="line">HKR,,,0,%ClassName%</span><br><span class="line">HKR,,Icon,,-1</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[Manufacturer]</span><br><span class="line">%ProviderName% = Google, NTx86, NTamd64</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[Google.NTx86]</span><br><span class="line">%SingleAdbInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_01</span><br><span class="line">%SingleBootLoaderInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_03</span><br><span class="line"></span><br><span class="line">[Google.NTamd64]</span><br><span class="line">%SingleAdbInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_01</span><br><span class="line">%SingleBootLoaderInterface% = USB_Install, USB\Class_ff&SubClass_42&Prot_03</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">[USB_Install]</span><br><span class="line">Include = winusb.inf</span><br><span class="line">Needs = WINUSB.NT</span><br><span class="line"></span><br><span class="line">[USB_Install.Services]</span><br><span class="line">Include = winusb.inf</span><br><span class="line">AddService = WinUSB,0x00000002,WinUSB_ServiceInstall</span><br><span class="line"></span><br><span class="line">[WinUSB_ServiceInstall]</span><br><span class="line">DisplayName = %WinUSB_SvcDesc%</span><br><span class="line">ServiceType = 1</span><br><span class="line">StartType = 3</span><br><span class="line">ErrorControl = 1</span><br><span class="line">ServiceBinary = %12%\WinUSB.sys</span><br><span class="line"></span><br><span class="line">[USB_Install.Wdf]</span><br><span class="line">KmdfService = WINUSB, WinUSB_Install</span><br><span class="line"></span><br><span class="line">[WinUSB_Install]</span><br><span class="line">KmdfLibraryVersion = 1.9</span><br><span class="line"></span><br><span class="line">[USB_Install.HW]</span><br><span class="line">AddReg = Dev_AddReg</span><br><span class="line"></span><br><span class="line">[Dev_AddReg]</span><br><span class="line">HKR,,DeviceInterfaceGUIDs,0x10000,"{F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}"</span><br><span class="line"></span><br><span class="line">[USB_Install.CoInstallers]</span><br><span class="line">AddReg = CoInstallers_AddReg</span><br><span class="line">CopyFiles = CoInstallers_CopyFiles</span><br><span class="line"></span><br><span class="line">[CoInstallers_AddReg]</span><br><span class="line">HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01009.dll,WdfCoInstaller","WinUSBCoInstaller2.dll"</span><br><span class="line"></span><br><span class="line">[CoInstallers_CopyFiles]</span><br><span class="line">WinUSBCoInstaller2.dll</span><br><span class="line">WdfCoInstaller01009.dll</span><br><span class="line"></span><br><span class="line">[DestinationDirs]</span><br><span class="line">CoInstallers_CopyFiles=11</span><br><span class="line"></span><br><span class="line">[SourceDisksNames]</span><br><span class="line">1 = %DISK_NAME%,,,\i386</span><br><span class="line">2 = %DISK_NAME%,,,\amd64</span><br><span class="line"></span><br><span class="line">[SourceDisksFiles.x86]</span><br><span class="line">WinUSBCoInstaller2.dll = 1</span><br><span class="line">WdfCoInstaller01009.dll = 1</span><br><span class="line"></span><br><span class="line">[SourceDisksFiles.amd64]</span><br><span class="line">WinUSBCoInstaller2.dll = 2</span><br><span class="line">WdfCoInstaller01009.dll = 2</span><br><span class="line"></span><br><span class="line">[Strings]</span><br><span class="line">ProviderName = "Google, Inc."</span><br><span class="line">SingleAdbInterface = "Android ADB Interface"</span><br><span class="line">CompositeAdbInterface = "Android Composite ADB Interface"</span><br><span class="line">SingleBootLoaderInterface = "Android Bootloader Interface"</span><br><span class="line">WinUSB_SvcDesc = "Android USB Driver"</span><br><span class="line">DISK_NAME = "Android WinUsb installation disk"</span><br><span class="line">ClassName = "Android Device"</span><br></pre></td></tr></table></figure>
</li>
</ol>
<hr>
<p>全文已经翻译完了,后面是彩蛋。 经过初步验证,大部分机型的确都是能够进行adb shell来连接,但是好像某些机型还是不行的,但是查看设备管理器可以看出加载了<code>android adb driver</code>。但是adb连接时就显示<code>error: device not found</code>,初步推断应该不关驱动的事,看了原文前几几篇博客,发现原文把这类问题叫做<code>ADB connection trouble-shooting</code>,解决的关键是修改<code>adb_usb.ini</code>,把设备的<code>USB Vendor ID</code>添加到<code>adb_usb.ini</code>中。<br>然后问题来了,<code>adb_usb.ini</code>在哪里呢,原文说默认路径是<code>%USERPROFILE%\\.android\\adb_usb.ini</code>,是在用户目录下的。但是如果设置了<code>ANDROID_SDK_HOME</code>,路径应该是在<code>%ANDROID_SDK_HOME%\\.android\\adb_usb.ini</code>下,然后我就保险起见,全部都添加了<code>Vendor ID</code>,但是还是不行。<br>在网上看到一个说法,是要在Android SDK的目录下,tools文件夹里运行一句命令:</p>
<p><code>Android update adb</code></p>
<p>这样自动生成<code>adb_usb.ini</code>,生成的<code>adb_usb.ini</code>有如下内容</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.</span><br><span class="line"># USE 'android update adb' TO GENERATE.</span><br><span class="line"># 1 USB VENDOR ID PER LINE.</span><br></pre></td></tr></table></figure>
<p>然后就在里面添加<code>Vendor ID</code>,如<code>0xFFFF</code>。有时候<code>.android</code>自动生成在用户目录,有时候生成在SDK的目录下。 然后问题来了,为什么某些手机厂商在adb连接时要手动添加<code>Vendor ID</code>呢?看了<a href="http://developer.android.com/tools/device.html" target="_blank" rel="noopener" title="Using Hardware Devices">Using Hardware Devices</a>这个页面就知道了,很多大厂商都向Google申请一个<code>Vendor ID</code>,然后这些厂商的ID就集成到adb驱动中,不用再手动添加到<code>adb_usb.ini</code>中。例如某些手机厂家,如魅族,TCL,并没有像Google申请一个ID号,所以就算驱动能够识别,adb都连接不上这些<code>Vendor ID</code>的手机,除非在<code>adb_usb.ini</code>中添加上ID号。以上是个人猜测,因为试了很多手机,发现魅族连接不上,而且Google官网没有其<code>Vendor ID</code>,要在<code>adb_usb.ini</code>中添加<code>Vendor ID</code>号才能够连接。 如果需要写脚本自动获取设备的<code>Vendor ID</code>到<code>adb_usb.ini</code>中,原文提供了一个<code>powershell</code>命令,在cmd中执行以下就行了。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">powershell "gwmi Win32_USBControllerDevice | %{[wmi]($_.Dependent)} | </span><br><span class="line">?{$_.CompatibleID -like \"USB\Class_ff^&SubClass_42^&Prot_0?\"} | </span><br><span class="line">%{write \"0x$([regex]::match($_.deviceid.tolower(), 'vid_(\w+)').groups[1].value)\"} | </span><br><span class="line">sort -u" >> %ANDROID_SDK_HOME%\.android\adb_usb.ini</span><br></pre></td></tr></table></figure>
<p>记得设相应的环境变量,如果<code>powershell</code>命令找不到的可以输入:</p>
<p><code>%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe</code></p>
<p>搞定收工。</p>
</div>
<footer class="post-footer">
<div class="post-tags">
<a href="/tags/android/" rel="tag"># android</a>
<a href="/tags/USB%E9%A9%B1%E5%8A%A8/" rel="tag"># USB驱动</a>
<a href="/tags/%E9%80%9A%E7%94%A8/" rel="tag"># 通用</a>
</div>
<div class="post-nav">
<div class="post-nav-item">
<a href="/android-dynamic-debug-so.html" rel="prev" title="Android动态调试so之dump内存数据">
<i class="fa fa-chevron-left"></i> Android动态调试so之dump内存数据
</a></div>
<div class="post-nav-item">
<a href="/tencent-shell-crack.html" rel="next" title="腾讯应用加固的脱壳分析和修复">
腾讯应用加固的脱壳分析和修复 <i class="fa fa-chevron-right"></i>
</a></div>
</div>
</footer>
</article>
</div>
</div>
<script>
window.addEventListener('tabs:register', () => {
let activeClass = CONFIG.comments.activeClass;
if (CONFIG.comments.storage) {
activeClass = localStorage.getItem('comments_active') || activeClass;
}
if (activeClass) {
let activeTab = document.querySelector(`a[href="#comment-${activeClass}"]`);
if (activeTab) {
activeTab.click();
}
}
});
if (CONFIG.comments.storage) {
window.addEventListener('tabs:click', event => {
if (!event.target.matches('.tabs-comment .tab-content .tab-pane')) return;
let commentClass = event.target.classList[1];
localStorage.setItem('comments_active', commentClass);
});
}
</script>
</div>
<div class="toggle sidebar-toggle">
<span class="toggle-line toggle-line-first"></span>
<span class="toggle-line toggle-line-middle"></span>
<span class="toggle-line toggle-line-last"></span>
</div>
<aside class="sidebar">
<div class="sidebar-inner">
<ul class="sidebar-nav motion-element">
<li class="sidebar-nav-toc">
Table of Contents
</li>
<li class="sidebar-nav-overview">
Overview
</li>
</ul>
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
<p class="site-author-name" itemprop="name">Songtao Mai</p>
<div class="site-description" itemprop="description">记录,分享,交流的空间</div>
</div>
<div class="site-state-wrap motion-element">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">126</span>
<span class="site-state-item-name">posts</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<span class="site-state-item-count">19</span>
<span class="site-state-item-name">categories</span>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/">
<span class="site-state-item-count">173</span>
<span class="site-state-item-name">tags</span></a>
</div>
</nav>
</div>
</div>
</div>
</aside>
<div id="sidebar-dimmer"></div>
</div>
</main>
<footer class="footer">
<div class="footer-inner">
<div class="copyright">
©
<span itemprop="copyrightYear">2020</span>
<span class="with-love">
<i class="fa fa-user"></i>
</span>
<span class="author" itemprop="copyrightHolder">Songtao Mai</span>
</div>
<div class="powered-by">Powered by <a href="https://hexo.io/" class="theme-link" rel="noopener" target="_blank">Hexo</a> v4.2.0
</div>
<span class="post-meta-divider">|</span>
<div class="theme-info">Theme – <a href="https://muse.theme-next.org/" class="theme-link" rel="noopener" target="_blank">NexT.Muse</a> v7.7.1
</div>
</div>
</footer>
</div>
<script src="/lib/anime.min.js"></script>
<script src="/lib/velocity/velocity.min.js"></script>
<script src="/lib/velocity/velocity.ui.min.js"></script>
<script src="/js/utils.js"></script>
<script src="/js/motion.js"></script>
<script src="/js/schemes/muse.js"></script>
<script src="/js/next-boot.js"></script>
</body>
</html>