-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
431 lines (297 loc) · 31.9 KB
/
index.html
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
<!DOCTYPE html>
<html lang="en">
<head><meta name="generator" content="Hexo 3.8.0">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>
FireantZhang</title>
<link rel="shortcut icon" href="/images/jetpack.ico">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/fancybox/jquery.fancybox.min.css">
<script src="/js/pace.min.js"></script>
</head>
</html>
<body>
<main class="content">
<section class="jumbotron">
<div class="video">
<div class="video-frame">
<img src="/images/ocean/overlay-hero.png" alt="Decorative image frame">
</div>
<div class="video-media">
<video playsinline autoplay loop muted data-autoplay poster="/images/ocean/ocean.png" x5-video-player-type="h5">
<source src="/images/ocean/ocean.mp4" type="video/mp4">
<source src="/images/ocean/ocean.ogv" type="video/ogg">
<source src="/images/ocean/ocean.webm" type="video/webm">
<p>Your user agent does not support the HTML5 Video element.</p>
</video>
<div class="video-overlay"></div>
</div>
<div class="video-inner text-center text-white">
<h1><a href="/">FireantZhang</a></h1>
<p></p>
<div><img src="/images/shark-inverted.svg" class="brand" alt="FireantZhang"></div>
</div>
<div class="video-learn-more">
<a class="anchor" href="#landingpage"><i class="fe fe-mouse"></i></a>
</div>
</div>
</section>
<div id="landingpage">
<section class="outer">
<article class="articles">
<h1 class="page-type-title"></h1>
<article id="post-你需要这么一款开源数据可视化工具助力数据跟踪分析" class="article article-type-post" itemscope itemprop="blogPost" data-scroll-reveal>
<div class="article-inner">
<header class="article-header">
<h2 itemprop="name">
<a class="article-title" href="/2019/08/24/你需要这么一款开源数据可视化工具助力数据跟踪分析/">你需要这么一款开源数据可视化工具助力数据跟踪分析</a>
</h2>
</header>
<div class="article-meta">
<a href="/2019/08/24/你需要这么一款开源数据可视化工具助力数据跟踪分析/" class="article-date">
<time datetime="2019-08-24T10:25:17.000Z" itemprop="datePublished">2019-08-24</time>
</a>
</div>
<div class="article-entry" itemprop="articleBody">
<h3 id="场景"><a href="#场景" class="headerlink" title="场景"></a>场景</h3><p>文章开头,先做个小调查:平常工作中遇到需要追踪或者分析公司日常业务数据的时候【比如需要分析系统每日用户增长情况】,你们一般是使用怎么样的分析手段呢?大家可以先想想自己是怎么做的,这样的做法是否繁琐,有没有更好的方案。</p>
<p>在没遇到 Grafana 之前,遇到产品需要这个数据的时候,由于公司人力有限,没有开发人员开发数据平台,所以一般有几种处理方案:</p>
<ol>
<li>第一种方案,如果本身 APP 端有接入一些第三方数据统计平台【友盟、Bugly】,则可以让产品直接在这些平台看数据,<code>缺点是:这种平台的数据一般是指下载 APP 的,并非是真实的平台注册数</code>;</li>
<li>第二种方案,平台的精确的注册数据:每次写一下 Sql 语句按天分组直接从数据库导出产品需要时间内的用户注册情况,然后导出一个 Excel 表格给到产品,产品在做成可视化的折线图之类的来分析波动情况;</li>
<li>第三种方案,可能相对少一些重复工作,用 Python 脚本程序自动导出可视化结果图;</li>
</ol>
<h3 id="Grafana-登场"><a href="#Grafana-登场" class="headerlink" title="Grafana 登场"></a>Grafana 登场</h3><p>木有错,今天要介绍的主角是:Grafana,它是什么呢?Grafana 是一个通用的可视化 Go 编写的开源工具,通用的意思也就是说你可以添加各种数据源【不过得是目前支持的数据源,具体支持哪些数据源,后面会讲到】,安装部署也是非常非常的简单,基本是一条命令即可部署,以 mac 系统为例:<br><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">brew update</span><br><span class="line">brew install grafana</span><br><span class="line">brew services start grafana</span><br></pre></td></tr></table></figure></p>
<p>是的,就是这么简单,经过三条命令,我们本地的系统已经部署好了,这时访问:<a href="http://127.0.0.1:3000/" target="_blank" rel="noopener">http://127.0.0.1:3000</a>即可访问到部署好的 grafana,默认账号密码是:admin/admin,进去之后我们可以像堆积木一样一步步增加我们业务的数据看板,支持各种形式的展示方式:表格、曲线、饼状图等。</p>
<p>我们先来一个图,看一下官方的 <a href="https://play.grafana.org" target="_blank" rel="noopener">LiveDemo</a> 数据图,一睹惊艳的展示方式【哈,惊不惊艳的不重要,重要的是实用】:<br><img src="https://upload-images.jianshu.io/upload_images/215971-8b57684813e511b7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="官方 LiveDemo"></p>
<h5 id="第一步:安装-Grafana"><a href="#第一步:安装-Grafana" class="headerlink" title="第一步:安装 Grafana"></a>第一步:安装 Grafana</h5><p>由于我的环境是 mac,所以这里只列出 mac 上通过 <code>brew</code> 的方式安装详情(其他系统安装可以参考官方给出的<a href="https://grafana.com/grafana/download" target="_blank" rel="noopener">详细操作方式</a><br>):<br><figure class="highlight shell"><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></pre></td><td class="code"><pre><span class="line">~ » brew install grafana</span><br><span class="line">Updating Homebrew...</span><br><span class="line">==> Downloading https://homebrew.bintray.com/bottles/grafana-6.3.3.mojave.bottle.tar.gz</span><br><span class="line">Already downloaded: /Users/zhangdeyi/Library/Caches/Homebrew/downloads/2087dc91f087ca0d1314958797e3ef2696c575f081afb810393f74648d47942b--grafana-6.3.3.mojave.bottle.tar.gz</span><br><span class="line">==> Pouring grafana-6.3.3.mojave.bottle.tar.gz</span><br><span class="line">Warning: grafana dependency icu4c was built with a different C++ standard</span><br><span class="line">library (libc++ from clang). This may cause problems at runtime.</span><br><span class="line">==> Caveats</span><br><span class="line">To have launchd start grafana now and restart at login:</span><br><span class="line"> brew services start grafana</span><br><span class="line">Or, if you don't want/need a background service you can just run:</span><br><span class="line"> grafana-server --config=/usr/local/etc/grafana/grafana.ini --homepath /usr/local/share/grafana --packaging=brew cfg:default.paths.logs=/usr/local/var/log/grafana cfg:default.paths.data=/usr/local/var/lib/grafana cfg:default.paths.plugins=/usr/local/var/lib/grafana/plugins</span><br><span class="line">==> Summary</span><br><span class="line">🍺 /usr/local/Cellar/grafana/6.3.3: 3,635 files, 171.8MB</span><br></pre></td></tr></table></figure></p>
<h4 id="第二步:添加数据源"><a href="#第二步:添加数据源" class="headerlink" title="第二步:添加数据源"></a>第二步:添加数据源</h4><p>安装完之后,可以根据自己的实际情况,先添加自己业务的数据源,一般常用的数据源是 MySQL:<br><img src="https://upload-images.jianshu.io/upload_images/215971-f1fde901aca91db3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="添加一个MySQL的数据源"><br>初次安装只包含了这些数据源类型:<br><img src="https://upload-images.jianshu.io/upload_images/215971-564ddc180eef48cf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="默认支持的数据源"><br>当然也可以安装一些其他数据源的 <code>plugins</code> 来支持更多的:<a href="https://grafana.com/grafana/plugins?type=datasource" target="_blank" rel="noopener">数据源</a></p>
<h4 id="第三步:-新增我们的业务-Dashboard"><a href="#第三步:-新增我们的业务-Dashboard" class="headerlink" title="第三步: 新增我们的业务 Dashboard"></a>第三步: 新增我们的业务 Dashboard</h4><p>有了数据源之后,就可以增加业务 Dashboard,入口:主页 –> ➕号 –> Create Dashboard,比如我把 Dashboard 命名成 MyCoreData,一个 Dashboard 可以由不同展示类型的 <code>Panel</code> 组成:<br><img src="https://upload-images.jianshu.io/upload_images/215971-95d18baa924f830f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Panel 类型"><br>平常我用得比较多的是 <code>Graph</code>,这个展示形式比较方便看出业务数据的波动情况:<br><img src="https://upload-images.jianshu.io/upload_images/215971-fa46257145ffafce.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Panel 操作菜单"></p>
<p>点击操作菜单的 <code>Edit</code> 即可进入面板的编辑模式,这个模式可以对面板重命名,编写业务SQL,展示细节调整,编辑面板如下所示:<br><img src="https://upload-images.jianshu.io/upload_images/215971-9a916117158c8345.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="编辑面板"></p>
<ul>
<li>General tab 可以设置面板的标题信息、表述信息等;</li>
<li>Metrics tab 可以选择数据源,编写SQL 语句:有两种模式,一种是手动选操作,另外一种是直接编写 SQL 模式【推荐用这种模式】,点击 <code>Show Help</code> 可以查看提供的内置函数:<br><img src="https://upload-images.jianshu.io/upload_images/215971-afef734e2468f858.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="内置的函数"><br>编写完 SQL 之后,展示形式是这样的(时间选择的是这个月的):<br><img src="https://upload-images.jianshu.io/upload_images/215971-78a2e3d26d3b83e5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Graph 展示形式"><br>这种展示形式已经大致能看出趋势,是否可以有更好的展示形式呢,答案是有的,点击 <code>Legend</code> tab 可以设置展示一些更加详细的形式,比如用 <code>table</code> 的形式,展示出 <code>total</code>、<code>avg</code>,<code>current</code> 这些值,最终效果如下所示:<br><img src="https://upload-images.jianshu.io/upload_images/215971-718d6b7d0bf481be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="更加形象的展示"><br>当然还有其他更细节的设置,可以自行探索,其他的面板展示形式也可以自行探索;<h4 id="第五步:分配账号,并管理好不同账号的查看权限"><a href="#第五步:分配账号,并管理好不同账号的查看权限" class="headerlink" title="第五步:分配账号,并管理好不同账号的查看权限"></a>第五步:分配账号,并管理好不同账号的查看权限</h4>很棒!经过前面一步的:增加业务 Dashboard,接下来我们就可以分配账号给产品和Boss们,并根据不同的角色分配不同的 Dashboard 查看权限。</li>
</ul>
<p>使用 <code>admin</code> 账号登录,可以分配不同的账号权限,入口:左边的设置按钮 –> Server Admin –> Users –> Add new user,<br><img src="https://upload-images.jianshu.io/upload_images/215971-041c001fb1950ef4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="增加账号"></p>
<p>具体 Dashboard 的权限设置入口:以管理员账号访问某个 Dashboard –> 右上角的设置按钮 –> Permissions 按钮 –> Add Permission 即可管理这个 Dashboard 的访问权限:<br><img src="https://upload-images.jianshu.io/upload_images/215971-a1a786e0d0226b55.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Dashboard 权限管理"></p>
<h3 id="最后想说的"><a href="#最后想说的" class="headerlink" title="最后想说的"></a>最后想说的</h3><p>好啦!当我们搭建好这样一个平台之后,我们不再需要重复之前的繁琐的导数据工作,而且产品和 Boss 也可以开心愉快的实时查询公司的各项业务数据,我们只需要专注在上面添砖加瓦:增加各个业务数据的细分 Dashboard。</p>
<p>今天的安利 Grafana 的文章先写到这里,写得相对比较糙,不少细节没怎么介绍,不过今天的主要目的也是为了给大家演示一下如何用这个平台来提升自己的工作效率,方便同事之间的数据沟通工作。</p>
<p>最后的最后,如果你所在的团队或者公司还没有一个比较完备的数据平台,真心推荐你们可以搭建探索一下(跟进业务数据,或者监控服务器运行情况都是可以的),如果在探索过程中有遇到什么问题,可以在文章的后面留言,我这边会尽量为大家解答。</p>
<p>好啦,祝大家周末愉快,准备出门吃小龙虾去啦~~~~</p>
</div>
<footer class="article-footer">
<a data-url="https://www.fireantzhang.com/2019/08/24/你需要这么一款开源数据可视化工具助力数据跟踪分析/" data-id="cjzvac6m10004ed677rsyp3co" class="article-share-link">Share</a>
</footer>
</div>
</article>
<article id="post-你知道-adb-的无线方式开发模式吗?让你摆脱-USB-线的束缚" class="article article-type-post" itemscope itemprop="blogPost" data-scroll-reveal>
<div class="article-inner">
<header class="article-header">
<h2 itemprop="name">
<a class="article-title" href="/2019/05/11/你知道-adb-的无线方式开发模式吗?让你摆脱-USB-线的束缚/">你知道 adb 的无线方式开发模式吗?让你摆脱 USB 线的束缚</a>
</h2>
</header>
<div class="article-meta">
<a href="/2019/05/11/你知道-adb-的无线方式开发模式吗?让你摆脱-USB-线的束缚/" class="article-date">
<time datetime="2019-05-11T09:37:06.000Z" itemprop="datePublished">2019-05-11</time>
</a>
</div>
<div class="article-entry" itemprop="articleBody">
<h3 id="开发场景"><a href="#开发场景" class="headerlink" title="开发场景"></a>开发场景</h3><p>做Android开发的基本都知道,平常一般都是直接通过 USB 线或者 Type C线的方式连接,来完成日常的开发和调试,这种开发模式存在几个问题点,是一个极简主义者所不能忍受的</p>
<ul>
<li>电脑的 USB 口比较少,特别是 MAC 电脑,新版的就更是少得可怜;</li>
<li>有时候有些功能模块比较耗电的时候,手机耗电的速度会比电脑充电的速度慢,比如开发直播间模块,要长时间开摄像头的情况下;</li>
<li>开发好功能点,有时候要拿给同事看效果的时候也不太方便,隔着几个工位的时候,经常要拔掉线;</li>
</ul>
<h3 id="解决方案:开始使用-adb-WiFi-调试模式"><a href="#解决方案:开始使用-adb-WiFi-调试模式" class="headerlink" title="解决方案:开始使用 adb WiFi 调试模式"></a>解决方案:开始使用 adb WiFi 调试模式</h3><p>使用 adb WiFi 调试模式,通过以下几个步骤即可完成(开始这些配置之前先确保你的 adb 环境是配置好的):</p>
<ol>
<li>确保 Android 手机和电脑连接的是同一局域网的 WiFi;</li>
<li>通过 USB 线连接 Android 手机;</li>
<li><p>设置手机侦听端口 5555 上的 TCP/IP 连接:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ adb tcpip 5555</span><br></pre></td></tr></table></figure>
<p> ※ 注意: 如果有多个手机连接在电脑上,需要用 -s ‘serial_number’ 参数指定目标手机,比如:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ adb -s '04157df4d349bf21' tcpip 5555</span><br></pre></td></tr></table></figure>
<p> 在命令行中看到 TCP mode port: 5555 就表示监听成功:</p>
<figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line">~/Downloads » adb tcpip 5555 </span><br><span class="line">restarting <span class="keyword">in</span> TCP mode port: 5555</span><br><span class="line">------------------------------------------------------------</span><br><span class="line">~/Downloads » adb -s <span class="string">'04157df4d349bf21'</span> tcpip 5555</span><br><span class="line">------------------------------------------------------------</span><br><span class="line">~/Downloads » adb -s <span class="string">'04157df4d349bf21'</span> tcpip 5555</span><br><span class="line">------------------------------------------------------------</span><br><span class="line">~/Downloads » adb -s <span class="string">'04157df4d349bf21'</span> tcpip 5555</span><br><span class="line">restarting <span class="keyword">in</span> TCP mode port: 5555</span><br><span class="line">------------------------------------------------------------</span><br></pre></td></tr></table></figure>
</li>
<li><p>通过 connect 命令和 IP 地址以及端口号连接到目标手机,比如:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ adb connect 192.168.1.146:5555</span><br></pre></td></tr></table></figure>
<p> 当看到 connected to xxx:5555 的提示语就表示连接成功:</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">~/Downloads » adb connect 192.168.1.146:5555</span><br><span class="line">connected to 192.168.1.146:5555</span><br><span class="line">------------------------------------------------------------</span><br><span class="line">~/Downloads »</span><br></pre></td></tr></table></figure>
</li>
<li><p>拔掉 USB 线,验证一下,看到如下提示语,那么恭喜你,已成功打开 adb WiFi 的大门,可以开始畅游你的无线调试之旅啦。</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><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">~/Downloads » adb devices</span><br><span class="line">List of devices attached</span><br><span class="line">192.168.1.146:5555 device</span><br><span class="line">------------------------------------------------------------</span><br><span class="line">~/Downloads »</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="敲命令行的你很酷很帅,不过-IDE-Plugins-的方式能让你更舒畅"><a href="#敲命令行的你很酷很帅,不过-IDE-Plugins-的方式能让你更舒畅" class="headerlink" title="敲命令行的你很酷很帅,不过 IDE Plugins 的方式能让你更舒畅"></a>敲命令行的你很酷很帅,不过 IDE Plugins 的方式能让你更舒畅</h3><p>上面介绍的是 adb 无线连接的基本实现,不过每次都得经历那些步骤,体验不是很好,能否有一种方式,直接在 Android Studio 中直接鼠标点点的快速方式来完成呢?答案:木有错,有得。</p>
<h5 id="AS-中插件市场的搜索结果,关键词:adb-wifi"><a href="#AS-中插件市场的搜索结果,关键词:adb-wifi" class="headerlink" title="AS 中插件市场的搜索结果,关键词:adb wifi"></a>AS 中插件市场的搜索结果,关键词:adb wifi</h5><p><img src="https://upload-images.jianshu.io/upload_images/215971-4486c3554a5cd8c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="image.png"></p>
<h5 id="全部都安装体验之后,最终只有两款能够顺利操作完成连接的:ADB-WiFi-Connect、WIFI-ADB-ULITIMATE,对比各种优缺点之后,最终只留下:WIFI-ADB-ULITIMATE"><a href="#全部都安装体验之后,最终只有两款能够顺利操作完成连接的:ADB-WiFi-Connect、WIFI-ADB-ULITIMATE,对比各种优缺点之后,最终只留下:WIFI-ADB-ULITIMATE" class="headerlink" title="全部都安装体验之后,最终只有两款能够顺利操作完成连接的:ADB WiFi Connect、WIFI ADB ULITIMATE,对比各种优缺点之后,最终只留下:WIFI ADB ULITIMATE"></a>全部都安装体验之后,最终只有两款能够顺利操作完成连接的:ADB WiFi Connect、WIFI ADB ULITIMATE,对比各种优缺点之后,最终只留下:WIFI ADB ULITIMATE</h5><ul>
<li>WIFI ADB ULITIMATE(可用,推荐使用这个)<br> <img src="https://upload-images.jianshu.io/upload_images/215971-0413705166559a63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="WIFI ADB ULITIMATE"></li>
<li>ADB WiFi Connect(可用)<br> <img src="https://upload-images.jianshu.io/upload_images/215971-91402aeb764f7e01.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="ADB WiFi Connect"></li>
</ul>
<h5 id="两款插件的使用对比结论,供大家快速选择适合自己的那一款【毕竟青菜萝卜,各有所好】"><a href="#两款插件的使用对比结论,供大家快速选择适合自己的那一款【毕竟青菜萝卜,各有所好】" class="headerlink" title="两款插件的使用对比结论,供大家快速选择适合自己的那一款【毕竟青菜萝卜,各有所好】"></a>两款插件的使用对比结论,供大家快速选择适合自己的那一款【毕竟青菜萝卜,各有所好】</h5><table>
<thead>
<tr>
<th>对比点</th>
<th>WIFI ADB ULITIMATE</th>
<th>ADB WiFi Connect</th>
</tr>
</thead>
<tbody>
<tr>
<td>入口</td>
<td>run 旁边,每次使用打开一个新的对话框</td>
<td>操作窗口依附在 IDE 的右边工具窗口中,操作比较方便</td>
</tr>
<tr>
<td>功能点</td>
<td>连接、断开连击、记录连接设备、设备断开自动刷新</td>
<td>连接【以及主动输入目标 IP 地址的连接方式】、断开连接、USB 线和 WIFI 两种连接方式的设备分组展示、自动记录最近的 10 次连接记录</td>
</tr>
<tr>
<td>优点</td>
<td>设备断开和连接,自动刷新、操作直接 Log 提示</td>
<td>操作窗口固定、自动记录、可以手动输入 IP 地址进行连接</td>
</tr>
<tr>
<td>缺点</td>
<td>操作窗口是独立 Java 窗口程序,不跟随 IDE、需要手动点 Save</td>
<td>设备断开需要手动刷新才能识别出新的连接情况【后续期望作者能够加上自动监听】</td>
</tr>
</tbody>
</table>
<h3 id="最后,再提两点关于-adb-的事情"><a href="#最后,再提两点关于-adb-的事情" class="headerlink" title="最后,再提两点关于 adb 的事情"></a>最后,再提两点关于 adb 的事情</h3><ul>
<li>关于 adb 使用,谷歌官方的说明文档: <a href="https://developer.android.com/studio/command-line/adb" target="_blank" rel="noopener">https://developer.android.com/studio/command-line/adb</a></li>
<li>在找 adb wifi 插件的时候,还发现一款跟 adb 相关的插件(提供一些跟当前开发项目app常用的操作),觉得挺好用:ADB Idea,操作选项如下: <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></pre></td><td class="code"><pre><span class="line">ADB Revoke Permissions</span><br><span class="line">ADB Revoke Permissions and Restart</span><br><span class="line">ADB Grant Permissions</span><br><span class="line">ADB Uninstall App</span><br><span class="line">ADB Kill App</span><br><span class="line">ADB Start App</span><br><span class="line">ADB ReStart App</span><br><span class="line">ADB Clear App Data</span><br><span class="line">ADB Start App With Debugger</span><br><span class="line">ADB Restart App With Debugger</span><br></pre></td></tr></table></figure>
</li>
</ul>
</div>
<footer class="article-footer">
<a data-url="https://www.fireantzhang.com/2019/05/11/你知道-adb-的无线方式开发模式吗?让你摆脱-USB-线的束缚/" data-id="cjzvac6lk0002ed67ofqf0vk6" class="article-share-link">Share</a>
</footer>
</div>
</article>
<article id="post-hello-world" class="article article-type-post" itemscope itemprop="blogPost" data-scroll-reveal>
<div class="article-inner">
<header class="article-header">
<h2 itemprop="name">
<a class="article-title" href="/2019/05/11/hello-world/">Hello World</a>
</h2>
</header>
<div class="article-meta">
<a href="/2019/05/11/hello-world/" class="article-date">
<time datetime="2019-05-11T09:18:54.553Z" itemprop="datePublished">2019-05-11</time>
</a>
</div>
<div class="article-entry" itemprop="articleBody">
<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="noopener">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="noopener">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="noopener">GitHub</a>.</p>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="noopener">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="noopener">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="noopener">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/deployment.html" target="_blank" rel="noopener">Deployment</a></p>
</div>
<footer class="article-footer">
<a data-url="https://www.fireantzhang.com/2019/05/11/hello-world/" data-id="cjzvac6ld0000ed67gs1u0f6k" class="article-share-link">Share</a>
</footer>
</div>
</article>
</article>
</section>
</div>
<section class="outer">
<article class="articles">
<div class="gitalk" id="gitalk-container"></div>
<link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
<script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
<script type="text/javascript">
var gitalk = new Gitalk({
clientID: '5f6508af1b76d78a5d58',
clientSecret: '50d853e5fdc09852499b84dc26b52c193612df00',
repo: 'fireantzhang.github.io',
owner: 'fireantzhang',
admin: ['fireantzhang'],
// id: location.pathname, // Ensure uniqueness and length less than 50
id: md5(location.pathname),
distractionFreeMode: false, // Facebook-like distraction free mode
pagerDirection: 'last'
})
gitalk.render('gitalk-container')
</script>
</article>
</section>
<footer class="footer">
<div class="outer">
<div class="float-right">
<ul class="list-inline">
<li><i class="fe fe-smile-alt"></i> <span id="busuanzi_value_site_uv"></span></li>
</ul>
</div>
<ul class="list-inline">
<li>© 2019 FireantZhang</li>
<li>Powered by <a href="http://hexo.io/" target="_blank">Hexo</a></li>
<li>Theme <a href="https://github.com/zhwangart/hexo-theme-ocean">Ocean</a></li>
</ul>
</div>
</footer>
</main>
<aside class="sidebar">
<button class="navbar-toggle"></button>
<nav class="navbar">
<div class="logo">
<a href="/"><img src="/images/jetpack.ico" alt="FireantZhang"></a>
</div>
<ul class="nav nav-main">
<li class="nav-item">
<a class="nav-item-link" href="/">首页</a>
</li>
<li class="nav-item">
<a class="nav-item-link" href="/archives">归档</a>
</li>
<li class="nav-item">
<a class="nav-item-link" href="/gallery">相册</a>
</li>
<li class="nav-item">
<a class="nav-item-link" href="/about">关于</a>
</li>
<li class="nav-item">
<a class="nav-item-link nav-item-search" title="搜索">
<i class="fe fe-search"></i>
Search
</a>
</li>
</ul>
</nav>
<nav class="navbar navbar-bottom">
<ul class="nav">
<li class="nav-item">
<div class="totop" id="totop">
<i class="fe fe-rocket"></i>
</div>
</li>
<li class="nav-item">
<a class="nav-item-link" target="_blank" href="/atom.xml" title="RSS Feed">
<i class="fe fe-feed"></i>
</a>
</li>
</ul>
</nav>
<div class="search-form-wrap">
<div class="local-search local-search-plugin">
<input type="search" id="local-search-input" class="local-search-input" placeholder="Search...">
<div id="local-search-result" class="local-search-result"></div>
</div>
</div>
</aside>
<script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/lazyload.min.js"></script>
<script src="/js/busuanzi-2.3.pure.min.js"></script>
<script src="/fancybox/jquery.fancybox.min.js"></script>
<script src="/js/search.js"></script>
<script src="/js/ocean.js"></script>
</body>
</html>