-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
1600 lines (1501 loc) · 336 KB
/
atom.xml
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
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[JiongBull's Blog]]></title>
<subtitle><![CDATA[男人的浪漫是星辰大海]]></subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://jiongbull.com/"/>
<updated>2016-08-07T15:48:17.102Z</updated>
<id>http://jiongbull.com/</id>
<author>
<name><![CDATA[JiongBull]]></name>
<email><![CDATA[[email protected]]]></email>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title><![CDATA[2016年第32周阅读书单]]></title>
<link href="http://jiongbull.com/2016/08/07/2016%E5%B9%B4%E7%AC%AC32%E5%91%A8%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<id>http://jiongbull.com/2016/08/07/2016年第32周阅读书单/</id>
<published>2016-08-07T14:30:00.000Z</published>
<updated>2016-08-07T15:48:17.102Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="阅读书单">阅读书单</h2><blockquote>
<p>希望通过阅读书单的形式让自己养成坚持阅读的习惯,获取更多的知识。</p>
</blockquote>
<ul>
<li><a href="http://blog.csdn.net/jdsjlzx/article/details/51882661" target="_blank" rel="external">Retrofit+RxJava 优雅的处理服务器返回异常、错误</a></li>
<li><a href="http://www.jianshu.com/p/6b3daeda1eed" target="_blank" rel="external">当Rxjava遇到Retrofit</a></li>
<li><a href="http://blog.csdn.net/lmj623565791/article/details/40481055" target="_blank" rel="external">Android Context 上下文 你必须知道的一切</a></li>
<li><a href="http://blog.csdn.net/l173864930/article/details/46919457" target="_blank" rel="external">随手可得的Application对象</a></li>
<li><a href="http://www.woaitqs.cc/android/2016/07/14/android-reflection.html" target="_blank" rel="external">Android 极简反射教程,及应用示例</a></li>
<li><a href="https://github.com/tianzhijiexian/Android-Best-Practices/blob/master/2015.9/reflect/reflect.md" target="_blank" rel="external">Java反射最佳实践</a></li>
<li><a href="http://blog.csdn.net/tiefeng0606/article/details/51700866" target="_blank" rel="external">反射技术在android中的应用</a></li>
<li><a href="https://guides.codepath.com/android/Consuming-APIs-with-Retrofit#overview" target="_blank" rel="external">Consuming APIs with Retrofit</a></li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="阅读书单" scheme="http://jiongbull.com/tags/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<category term="阅读书单" scheme="http://jiongbull.com/categories/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
</entry>
<entry>
<title><![CDATA[2016年第31周阅读书单]]></title>
<link href="http://jiongbull.com/2016/07/31/2016%E5%B9%B4%E7%AC%AC31%E5%91%A8%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<id>http://jiongbull.com/2016/07/31/2016年第31周阅读书单/</id>
<published>2016-07-31T14:30:00.000Z</published>
<updated>2016-08-07T14:42:37.088Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="阅读书单">阅读书单</h2><blockquote>
<p>希望通过阅读书单的形式让自己养成坚持阅读的习惯,获取更多的知识。</p>
</blockquote>
<ul>
<li><a href="http://www.cnblogs.com/rayray/p/3729533.html" target="_blank" rel="external">HTTP协议详解</a></li>
<li><a href="https://developers.google.com/protocol-buffers/docs/proto3" target="_blank" rel="external">Language Guide (proto3)</a></li>
<li><a href="http://gank.io/post/56e80c2c677659311bed9841" target="_blank" rel="external">RxJava 与 Retrofit 结合的最佳实践</a></li>
<li><a href="https://futurestud.io/blog/android-basic-authentication-with-retrofit" target="_blank" rel="external">Retrofit — Basic Authentication on Android</a></li>
<li><a href="https://futurestud.io/blog/retrofit-token-authentication-on-android" target="_blank" rel="external">Retrofit — Token Authentication on Android</a></li>
<li><a href="https://futurestud.io/blog/oauth-2-on-android-with-retrofit" target="_blank" rel="external">Retrofit — OAuth on Android</a></li>
<li><a href="https://futurestud.io/blog/retrofit-multiple-query-parameters-of-same-name" target="_blank" rel="external">Retrofit — Multiple Query Parameters of Same Name</a></li>
<li><a href="https://futurestud.io/blog/retrofit-synchronous-and-asynchronous-requests" target="_blank" rel="external">Retrofit — Synchronous and Asynchronous Requests</a></li>
<li><a href="https://futurestud.io/blog/retrofit-send-objects-in-request-body" target="_blank" rel="external">Retrofit — Send Objects in Request Body</a></li>
<li><a href="https://futurestud.io/blog/retrofit-replace-the-integrated-json-converter" target="_blank" rel="external">Retrofit — Define a Custom Response Converter</a></li>
<li><a href="https://futurestud.io/blog/retrofit-add-custom-request-header" target="_blank" rel="external">Retrofit — Add Custom Request Header</a></li>
<li><a href="https://futurestud.io/blog/retrofit-optional-query-parameters" target="_blank" rel="external">Retrofit — Optional Query Parameters</a></li>
<li><a href="https://futurestud.io/blog/retrofit-how-to-integrate-xml-converter" target="_blank" rel="external">Retrofit — How to Integrate XML Converter</a></li>
<li><a href="https://futurestud.io/blog/retrofit-using-the-log-level-to-debug-requests" target="_blank" rel="external">Retrofit — Using the Log Level to Debug Requests</a></li>
<li><a href="https://futurestud.io/blog/retrofit-how-to-upload-files" target="_blank" rel="external">Retrofit — How to Upload Files to Server</a></li>
<li><a href="https://futurestud.io/blog/retrofit-series-round-up" target="_blank" rel="external">Retrofit — Series Round-Up</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-upgrade-guide-from-1-9" target="_blank" rel="external">Retrofit 2 — Upgrade Guide from 1.9</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-upload-files-to-server" target="_blank" rel="external">Retrofit 2 — How to Upload Files to Server</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-log-requests-and-responses" target="_blank" rel="external">Retrofit 2 — Log Requests and Responses</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-hawk-authentication-on-android" target="_blank" rel="external">Retrofit 2 — Hawk Authentication on Android</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-simple-error-handling" target="_blank" rel="external">Retrofit 2 — Simple Error Handling</a></li>
<li><a href="https://futurestud.io/blog/retrofit-how-to-use-okhttp-3-with-retrofit-1" target="_blank" rel="external">Retrofit — How to use OkHttp 3 with Retrofit 1</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-book-update-release-celebration" target="_blank" rel="external">Retrofit 2 — Book Update & Release Celebration</a></li>
<li><a href="https://futurestud.io/blog/retrofit-send-data-form-urlencoded" target="_blank" rel="external">Retrofit — Send Data Form-Urlencoded</a></li>
<li><a href="https://futurestud.io/blog/retrofit-send-data-form-urlencoded-using-fieldmap" target="_blank" rel="external">Retrofit — Send Data Form-Urlencoded Using FieldMap</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-manage-request-headers-in-okhttp-interceptor" target="_blank" rel="external">Retrofit 2 — Manage Request Headers in OkHttp Interceptor</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-add-query-parameters-to-every-request" target="_blank" rel="external">Retrofit 2 — How to Add Query Parameters to Every Request</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-add-multiple-query-parameter-with-querymap" target="_blank" rel="external">Retrofit 2 — Add Multiple Query Parameter With QueryMap</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-use-dynamic-urls-for-requests" target="_blank" rel="external">Retrofit 2 — How to Use Dynamic Urls for Requests</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-url-handling-resolution-and-parsing" target="_blank" rel="external">Retrofit 2 — Url Handling, Resolution and Parsing</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-constant-default-and-logic-values-for-post-and-put-requests" target="_blank" rel="external">Retrofit 2 — Constant, Default and Logic Values for POST and PUT Requests</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-download-files-from-server" target="_blank" rel="external">Retrofit 2 — How to Download Files from Server</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-cancel-requests" target="_blank" rel="external">Retrofit 2 — Cancel Requests</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-reuse-and-analyze-requests-2" target="_blank" rel="external">Retrofit 2 — Reuse and Analyze Requests</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-change-api-base-url-at-runtime-2" target="_blank" rel="external">Retrofit 2 — How to Change API Base Url at Runtime</a></li>
<li><a href="https://futurestud.io/blog/retrofit-optional-path-parameters" target="_blank" rel="external">Retrofit — Optional Path Parameters</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-send-plain-text-request-body" target="_blank" rel="external">Retrofit 2 — How to Send Plain Text Request Body</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-introduction-to-multiple-converters" target="_blank" rel="external">Retrofit 2 — Introduction to (Multiple) Converters</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-how-to-upload-multiple-files-to-server" target="_blank" rel="external">Retrofit 2 — How to Upload Multiple Files to Server</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-passing-multiple-parts-along-a-file-with-partmap" target="_blank" rel="external">Retrofit 2 — Passing Multiple Parts Along a File with @PartMap</a></li>
<li><a href="http://bbs.utest.qq.com/747" target="_blank" rel="external">深入浅出Retrofit,这么牛逼的框架你们还不来看看?</a></li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="阅读书单" scheme="http://jiongbull.com/tags/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<category term="阅读书单" scheme="http://jiongbull.com/categories/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
</entry>
<entry>
<title><![CDATA[2016年第30周阅读书单]]></title>
<link href="http://jiongbull.com/2016/07/24/2016%E5%B9%B4%E7%AC%AC30%E5%91%A8%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<id>http://jiongbull.com/2016/07/24/2016年第30周阅读书单/</id>
<published>2016-07-24T12:20:17.000Z</published>
<updated>2016-07-26T13:54:54.531Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="阅读书单">阅读书单</h2><blockquote>
<p>希望通过阅读书单的形式让自己养成坚持阅读的习惯,获取更多的知识。</p>
</blockquote>
<ul>
<li><a href="http://reactivex.io/documentation/observable.html" target="_blank" rel="external">Observable</a></li>
<li><a href="http://blog.zhaiyifan.cn/2016/03/14/android-new-project-from-0-p1/index.html" target="_blank" rel="external">从零开始的Android新项目1 - 架构搭建篇</a></li>
<li><a href="http://fernandocejas.com/2015/07/18/architecting-android-the-evolution/" target="_blank" rel="external">Architecting Android…The evolution</a></li>
<li><a href="http://blog.csdn.net/lisdye2/article/details/51887402" target="_blank" rel="external">依赖注入的原理</a></li>
<li><a href="http://blog.csdn.net/lisdye2/article/details/51942511" target="_blank" rel="external">最简单的Dagger2入门教程</a></li>
<li><a href="http://blog.jobbole.com/41233/" target="_blank" rel="external">RESTful API 设计最佳实践</a></li>
<li><a href="https://segmentfault.com/a/1190000005924733" target="_blank" rel="external">来自于PayPal的RESTful API标准</a></li>
<li><a href="http://www.ruanyifeng.com/blog/2014/05/restful_api.html" target="_blank" rel="external">RESTful API 设计指南</a></li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="阅读书单" scheme="http://jiongbull.com/tags/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<category term="阅读书单" scheme="http://jiongbull.com/categories/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
</entry>
<entry>
<title><![CDATA[2016年第29周阅读书单]]></title>
<link href="http://jiongbull.com/2016/07/17/2016%E5%B9%B4%E7%AC%AC29%E5%91%A8%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<id>http://jiongbull.com/2016/07/17/2016年第29周阅读书单/</id>
<published>2016-07-17T11:14:44.000Z</published>
<updated>2016-07-17T11:32:34.437Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="阅读书单">阅读书单</h2><blockquote>
<p>希望通过阅读书单的形式让自己养成坚持阅读的习惯,获取更多的知识。</p>
</blockquote>
<ul>
<li><a href="http://www.feeyan.cn/?p=241" target="_blank" rel="external">启动Activity的流程(Launcher中点击图标启动)</a></li>
<li><a href="http://www.feeyan.cn/?p=123" target="_blank" rel="external">Android中AIDL详细分析</a></li>
<li><a href="https://segmentfault.com/a/1190000003965158" target="_blank" rel="external">Android实战之你应该使用哪个网络库?</a></li>
<li><a href="http://square.github.io/retrofit" target="_blank" rel="external">Retrofit</a></li>
<li><a href="https://realm.io/cn/news/droidcon-jake-wharton-simple-http-retrofit-2/" target="_blank" rel="external">用 Retrofit 2 简化 HTTP 请求</a></li>
<li><a href="https://inthecheesefactory.com/blog/retrofit-2.0/en" target="_blank" rel="external">Retrofit 2.0: The biggest update yet on the best HTTP Client Library for Android</a></li>
<li><a href="https://futurestud.io/blog/retrofit-2-upgrade-guide-from-1-9" target="_blank" rel="external">Retrofit 2 — Upgrade Guide from 1.9</a></li>
<li><a href="https://futurestud.io/blog/retrofit-getting-started-and-android-client" target="_blank" rel="external">Retrofit — Getting Started and Create an Android Client</a></li>
<li><a href="http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/" target="_blank" rel="external">Architecting Android…The clean way?</a></li>
<li><a href="http://gank.io/post/560e15be2dca930e00da1083" target="_blank" rel="external">给 Android 开发者的 RxJava 详解</a></li>
<li><a href="http://blog.csdn.net/lzyzsd/article/details/41833541" target="_blank" rel="external">深入浅出RxJava(一:基础篇)</a></li>
<li><a href="http://blog.csdn.net/lzyzsd/article/details/44094895" target="_blank" rel="external">深入浅出RxJava(二:操作符)</a></li>
<li><a href="http://blog.csdn.net/lzyzsd/article/details/44891933" target="_blank" rel="external">深入浅出RxJava三—响应式的好处</a></li>
<li><a href="http://blog.csdn.net/lzyzsd/article/details/45033611#comments" target="_blank" rel="external">深入浅出RxJava四-在Android中使用响应式编程</a></li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="阅读书单" scheme="http://jiongbull.com/tags/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<category term="阅读书单" scheme="http://jiongbull.com/categories/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
</entry>
<entry>
<title><![CDATA[2016年第28周阅读书单]]></title>
<link href="http://jiongbull.com/2016/07/10/2016%E5%B9%B4%E7%AC%AC28%E5%91%A8%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<id>http://jiongbull.com/2016/07/10/2016年第28周阅读书单/</id>
<published>2016-07-10T10:20:27.000Z</published>
<updated>2016-07-17T11:36:54.425Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="阅读书单">阅读书单</h2><blockquote>
<p>希望通过阅读书单的形式让自己养成坚持阅读的习惯,获取更多的知识。</p>
</blockquote>
<ul>
<li><a href="http://blog.csdn.net/luoshengyang/article/details/6689748" target="_blank" rel="external">Android应用程序启动过程源代码分析</a></li>
<li><a href="http://blog.csdn.net/luoshengyang/article/details/6703247" target="_blank" rel="external">Android应用程序内部启动Activity过程(startActivity)的源代码分析</a></li>
<li><a href="http://www.jianshu.com/p/72059201b10a" target="_blank" rel="external">Android应用启动、退出分析</a></li>
<li><a href="http://blog.csdn.net/luoshengyang/article/details/6747696" target="_blank" rel="external">Android应用程序进程启动过程的源代码分析</a></li>
<li><a href="http://blog.csdn.net/luoshengyang/article/details/6768304" target="_blank" rel="external">Android系统进程Zygote启动过程的源代码分析</a></li>
<li><a href="http://blog.csdn.net/luoshengyang/article/details/6767736" target="_blank" rel="external">Android系统默认Home应用程序(Launcher)的启动过程源代码分析</a></li>
<li><a href="http://blog.csdn.net/jinzhuojun/article/details/37737439" target="_blank" rel="external">Android 4.4(KitKat)窗口管理子系统 - 体系框架</a></li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="阅读书单" scheme="http://jiongbull.com/tags/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<category term="阅读书单" scheme="http://jiongbull.com/categories/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
</entry>
<entry>
<title><![CDATA[2016年第27周阅读书单]]></title>
<link href="http://jiongbull.com/2016/07/03/2016%E5%B9%B4%E7%AC%AC27%E5%91%A8%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<id>http://jiongbull.com/2016/07/03/2016年第27周阅读书单/</id>
<published>2016-07-03T07:30:07.000Z</published>
<updated>2016-07-17T11:46:50.922Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="阅读书单">阅读书单</h2><blockquote>
<p>希望通过阅读书单的形式让自己养成坚持阅读的习惯,获取更多的知识。</p>
</blockquote>
<ul>
<li><a href="http://blog.csdn.net/yanbober/article/details/50419117" target="_blank" rel="external">Android应用坐标系统全面详解</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/49904715" target="_blank" rel="external">Android应用开发Scroller详解及源码浅析</a></li>
<li><a href="http://blog.csdn.net/xiaanming/article/details/17483273" target="_blank" rel="external">Android 带你从源码的角度解析Scroller的滚动实现原理</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/45970721" target="_blank" rel="external">Android应用setContentView与LayoutInflater加载解析机制源码分析</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/45967639" target="_blank" rel="external">Android应用Context详解及源码解析</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/45936145" target="_blank" rel="external">Android异步消息处理机制详解及源码分析</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/46117397" target="_blank" rel="external">Android应用AsyncTask处理机制详解及源码分析</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/46128379" target="_blank" rel="external">Android应用层View绘制流程与源码分析</a></li>
<li><a href="http://blog.csdn.net/qinjuning/article/details/8051811" target="_blank" rel="external">Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)</a></li>
<li><a href="http://blog.csdn.net/qinjuning/article/details/8074262" target="_blank" rel="external">Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)</a></li>
<li><a href="http://blog.csdn.net/a396901990/article/details/36475213" target="_blank" rel="external">ANDROID自定义视图——onMeasure,MeasureSpec源码 流程 思路详解</a></li>
<li><a href="http://blog.csdn.net/a396901990/article/details/38129669" target="_blank" rel="external">ANDROID自定义视图——onLayout源码 流程 思路详解</a></li>
<li><a href="http://blog.csdn.net/yanbober/article/details/46361191" target="_blank" rel="external">Android应用Activity、Dialog、PopWindow、Toast窗口添加机制及源码分析</a></li>
<li><a href="http://blog.csdn.net/zhaokaiqiang1992/article/details/49681321" target="_blank" rel="external">Activity界面显示全解析</a></li>
<li><a href="http://blog.csdn.net/zhaokaiqiang1992/article/details/49428287" target="_blank" rel="external">Activity启动过程全解析</a></li>
<li><a href="http://blog.csdn.net/yangwen123/article/details/35987609" target="_blank" rel="external">Android应用程序窗口设计框架介绍</a></li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="阅读书单" scheme="http://jiongbull.com/tags/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
<category term="阅读书单" scheme="http://jiongbull.com/categories/%E9%98%85%E8%AF%BB%E4%B9%A6%E5%8D%95/"/>
</entry>
<entry>
<title><![CDATA[《Android开发艺术探索》读书笔记(3) - View的事件体系]]></title>
<link href="http://jiongbull.com/2016/05/12/%E3%80%8AAndroid%E5%BC%80%E5%8F%91%E8%89%BA%E6%9C%AF%E6%8E%A2%E7%B4%A2%E3%80%8B%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0(3)/"/>
<id>http://jiongbull.com/2016/05/12/《Android开发艺术探索》读书笔记(3)/</id>
<published>2016-05-12T08:03:47.000Z</published>
<updated>2016-05-16T11:32:42.386Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a> </p>
</blockquote>
<h2 id="View基础知识">View基础知识</h2><h3 id="什么是View">什么是View</h3><ul>
<li>View是Android中所有控件的基类,是一种界面层的控件的抽象。</li>
<li>ViewGroup也继承View,这意味着View本身就可以是单个控件也可以是由多个控件组成的一组控件,通过这种关系就形成了View树的结果,和Web前端中的DOM树概念是相似的。</li>
</ul>
<h3 id="View的位置参数">View的位置参数</h3><ul>
<li>View的位置主要由它的四个顶点来决定,分别对应于View的四个坐标属性:left、top、right和bottom,这些坐标都是相对于View的父容器来说的,因此它是一种相对坐标。</li>
<li>可以得出View的宽高与坐标的关系:<ol>
<li>width = right - left。</li>
<li>height = bottom - top。</li>
</ol>
</li>
<li>Android 3.0开始,View新增了几个参数: x、y、translationX和translationY,其中x和y是View的左上角坐标,而translationX和translationY是View左上角相对于父容器的偏移量,这几个参数也是相对于父容器的坐标,并且translationX和translationY的默认值是0,需要注意的是在平移的过程中,top和left表示的是原始左上角的位置信息,其值并不会发生改变,此时改变的是x、y、translationX和translationY四个参数。<ol>
<li>x = left + translationX。</li>
<li>y = top + translationY。</li>
</ol>
</li>
</ul>
<h3 id="MotionEvent和TouchSlop">MotionEvent和TouchSlop</h3><ul>
<li>在手指接触屏幕后会产生一系列事件,它们被封装成MotionEvent,常用的事件类型有以下几种:<ol>
<li>ACTION_DOWN 手指刚接触屏幕。</li>
<li>ACTION_MOVE 手指在屏幕上移动。</li>
<li>ACTION_UP 手指从屏幕上松开的一瞬间。</li>
<li>ACTION_CANCEL 手指还没松开时被强制终止(例如锁频)。</li>
</ol>
</li>
<li>正常情况下,一次手指触摸屏幕的行为会触发一系列点击事件,例如如下几种情况:<ol>
<li>点击屏幕后松开,事件序列为:ACTION_DOWN -> ACTION_UP。</li>
<li>点击屏幕滑动一会再松开,事件序列为:ACTION_DOWN -> ACTION_MOVE -> ACTION_UP。</li>
</ol>
</li>
<li>通过MotionEvent对象可以得到点击事件发生的x和y坐标,<code>getX()</code>和<code>getY()</code>返回相对于当前View左上角的x和y坐标,<code>getRawX()</code>和<code>getRawY()</code>返回的是相对于手机屏幕左上角的x和y坐标。</li>
<li>TouchSlop是系统所能识别出的被认为是滑动的最小距离,也就是说,当手指在屏幕上滑动时,如果移动距离小于这个常量,那么系统就不认为是在进行滑动操作,和设备有关,在不同设备上的这个值可能是不同的,通过<code>ViewConfiguration.get(getContext).getScaledTouchSlop()</code>可以获得这个常量。</li>
<li>VelocityTracker用于追踪手指在滑动过程中的速度,包括水平和垂直方向的速度。</li>
<li><p>VelocityTracker的使用过程:</p>
<ol>
<li><p>首先,在View的<code>onTouchEvent()</code>方法中追踪当前事件的速度。</p>
<figure class="highlight java"><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">VelocityTracker velocityTracker = VelocityTracker.obtain();</span><br><span class="line">velocityTracker.add(event);</span><br></pre></td></tr></table></figure>
</li>
<li><p>计算当前的滑行速度,参数是时间间隔。</p>
<figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">velocityTracker.computeCurrentVelocity(<span class="number">1000</span>);</span><br></pre></td></tr></table></figure>
</li>
<li><p>获取水平和垂直方向的速度,即在时间间隔内移动的像素数。</p>
<figure class="highlight java"><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"><span class="keyword">int</span> xVelocity = (<span class="keyword">int</span>) velocityTracker.getXVelocity();</span><br><span class="line"><span class="keyword">int</span> yVelocity = (<span class="keyword">int</span>) velocityTracker.getYVelocity();</span><br></pre></td></tr></table></figure>
</li>
<li><p>不需要的时候需要重置并回收内存。</p>
<figure class="highlight java"><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">velocityTracker.clear(); <span class="comment">// 在ACTION_UP中执行</span></span><br><span class="line">velocityTracker.recycle(); <span class="comment">// 最好在onDetachedFromWindow中执行</span></span><br></pre></td></tr></table></figure>
</li>
<li><p><a href="https://gist.github.com/JiongBull/bfeefc595de11dfce8049662880bca2e" target="_blank" rel="external">完整代码</a></p>
</li>
</ol>
</li>
<li>速度的计算公式:速度 = (终点位置 - 起点位置) / 时间,根据速度公式和Android系统的坐标系可知,手指逆着坐标系的正方向滑动,所产生的速度就为负值,时间间隔的单位是毫秒,计算速度时得到的速度就是在时间间隔内手指在水平或垂直方向上滑动的像素数。</li>
<li>GestureDetector用于辅助检测用户的单击、滑动、长按、双击等行为。</li>
<li>GestureDetector的使用过程:<ol>
<li>创建GestureDetector对象并实现OnGestureListener接口。<figure class="highlight java"><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">GestureDetector mGestureDetector = <span class="keyword">new</span> GestureDetector(context, <span class="keyword">this</span>);</span><br><span class="line">mGestureDetector.setIsLongpressEnabled(<span class="keyword">false</span>); <span class="comment">// 解决长按屏幕后无法拖动的现象</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="View" scheme="http://jiongbull.com/tags/View/"/>
<category term="事件" scheme="http://jiongbull.com/tags/%E4%BA%8B%E4%BB%B6/"/>
<category term="读书笔记" scheme="http://jiongbull.com/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/"/>
<category term="《Android开发艺术探索》读书笔记" scheme="http://jiongbull.com/categories/%E3%80%8AAndroid%E5%BC%80%E5%8F%91%E8%89%BA%E6%9C%AF%E6%8E%A2%E7%B4%A2%E3%80%8B%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/"/>
</entry>
<entry>
<title><![CDATA[appops使用说明]]></title>
<link href="http://jiongbull.com/2016/04/19/appops%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/"/>
<id>http://jiongbull.com/2016/04/19/appops使用说明/</id>
<published>2016-04-19T14:22:41.000Z</published>
<updated>2016-05-10T15:05:27.216Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<p>Application Operations,应用权限管理。</p>
<ul>
<li><code>PACKAGE</code> 应用包名</li>
<li><code>OP</code> 操作权限</li>
<li><code>MODE</code> allow(允许)、ignore(忽略)或default(默认)中的一种</li>
<li><code>USER_ID</code> 应用安装在哪个用户之下,如果没有指定就假设是当前用户</li>
</ul>
<h2 id="appops_set">appops set</h2><p><code>appops set [--user (USER_ID)] (PACKAGE) (OP) (MODE)</code>,给应用设置权限。</p>
<p>appops set com.jiongbull.art.note READ_SMS allow<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@generic_x86_64</span><span class="symbol">:/</span> <span class="comment"># appops set com.jiongbull.art.note READ_SMS allow</span></span><br></pre></td></tr></table></figure></p>
<h2 id="appops_get">appops get</h2><p><code>appops get [--user <USER_ID>] <PACKAGE> [<OP>]</code>,获取应用的权限。</p>
<ol>
<li><p>appops get com.android.phone</p>
<figure class="highlight groovy"><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></pre></td><td class="code"><pre><span class="line">root<span class="annotation">@generic</span><span class="string">_x86_64:</span>/ # appops get com.android.phone</span><br><span class="line"><span class="string">READ_CONTACTS:</span> allow; time=+<span class="number">20</span>m4s573ms ago</span><br><span class="line"><span class="string">READ_SMS:</span> allow; time=+<span class="number">20</span>m4s902ms ago</span><br><span class="line"><span class="string">WRITE_SMS:</span> allow</span><br><span class="line"><span class="string">WRITE_SETTINGS:</span> allow; time=+<span class="number">20</span>m1s757ms ago</span><br><span class="line"><span class="string">WAKE_LOCK:</span> allow; time=+<span class="number">20</span>m5s4ms ago; duration=+<span class="number">20</span>m5s11ms</span><br></pre></td></tr></table></figure>
</li>
<li><p>appops get com.android.phone WRITE_SMS</p>
<figure class="highlight elixir"><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">root<span class="variable">@generic_x86_64</span><span class="symbol">:/</span> <span class="comment"># appops get com.android.phone WRITE_SMS</span></span><br><span class="line"><span class="constant">WRITE_SMS:</span> allow</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="appops_reset">appops reset</h2><p><code>appops reset [--user <USER_ID>] [<PACKAGE>]</code>,重置应用权限。</p>
<figure class="highlight sql"><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">root@generic_x86_64:/ # appops <span class="operator"><span class="keyword">reset</span> com.jiongbull.art.note</span><br><span class="line"><span class="keyword">Reset</span> <span class="keyword">all</span> modes <span class="keyword">for</span>: <span class="keyword">user</span> <span class="number">0</span>, package com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
<h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="adb shell" scheme="http://jiongbull.com/tags/adb-shell/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
<category term="adb" scheme="http://jiongbull.com/categories/Android/adb/"/>
</entry>
<entry>
<title><![CDATA[adb获取设备读写权限]]></title>
<link href="http://jiongbull.com/2016/04/19/adb%E8%8E%B7%E5%8F%96%E8%AE%BE%E5%A4%87%E8%AF%BB%E5%86%99%E6%9D%83%E9%99%90/"/>
<id>http://jiongbull.com/2016/04/19/adb获取设备读写权限/</id>
<published>2016-04-19T09:41:12.000Z</published>
<updated>2016-05-10T15:04:22.399Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<p>向AVD中拷贝文件可能遇到<code>Read-only file system</code>的提示,可以通过以下命令解决。</p>
<h2 id="方式">方式</h2><figure class="highlight less"><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"><span class="attribute">D</span>:\Code\Git>adb shell</span><br><span class="line">root<span class="variable">@generic_x86_64</span>:/ # su</span><br><span class="line">root<span class="variable">@generic_x86_64</span>:/ # mount -o remount,rw /</span><br></pre></td></tr></table></figure>
<h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="adb" scheme="http://jiongbull.com/tags/adb/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
<category term="adb" scheme="http://jiongbull.com/categories/Android/adb/"/>
</entry>
<entry>
<title><![CDATA[Lambda for Android Studio]]></title>
<link href="http://jiongbull.com/2016/04/16/Lambda%20for%20Android%20Studio/"/>
<id>http://jiongbull.com/2016/04/16/Lambda for Android Studio/</id>
<published>2016-04-16T08:12:18.000Z</published>
<updated>2016-05-10T15:07:03.989Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<h2 id="下载、安装、配置jdk8">下载、安装、配置jdk8</h2><p><a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank" rel="external">下载地址</a></p>
<h2 id="配置build-gradle">配置build.gradle</h2><figure class="highlight gradle"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">buildscript</span> {</span><br><span class="line"> <span class="keyword">repositories</span> {</span><br><span class="line"> jcenter()</span><br><span class="line"> }</span><br><span class="line"> <span class="keyword">dependencies</span> {</span><br><span class="line"> <span class="keyword">classpath</span> <span class="string">'com.android.tools.build:gradle:2.1.0-beta1'</span></span><br><span class="line"> <span class="keyword">classpath</span> <span class="string">'me.tatarka:gradle-retrolambda:3.2.5'</span></span><br><span class="line"> }</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">allprojects</span> {</span><br><span class="line"> <span class="keyword">repositories</span> {</span><br><span class="line"> jcenter()</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h2 id="配置app/build-gradle">配置app/build.gradle</h2><figure class="highlight roboconf"><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></pre></td><td class="code"><pre><span class="line">apply plugin: 'com.android.application'</span><br><span class="line">apply plugin: 'me.tatarka.retrolambda'</span><br><span class="line"></span><br><span class="line"><span class="component">android {</span><br><span class="line"></span><br><span class="line"> ...</span><br><span class="line"></span><br><span class="line"> compileOptions {</span><br><span class="line"> sourceCompatibility JavaVersion<span class="string">.VERSION_1_8</span></span><br><span class="line"> targetCompatibility JavaVersion<span class="string">.VERSION_1_8</span></span><br><span class="line"> }</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="component">retrolambda {</span><br><span class="line"> javaVersion JavaVersion<span class="string">.VERSION_1_6</span></span><br><span class="line">}</span></span><br></pre></td></tr></table></figure>
<h2 id="简化代码">简化代码</h2><ol>
<li><p>配置完<code>retrolambda</code>后,打开Android Stuido会有提示。<br><img src="http://7xize8.com1.z0.glb.clouddn.com/lambda_for_android_studio/support.png" alt=""></p>
</li>
<li><p>光标移动到代码处,点击<code>ALT + ENTER</code>。<br><img src="http://7xize8.com1.z0.glb.clouddn.com/lambda_for_android_studio/support_1.png" alt=""></p>
</li>
<li><p>选择<code>Replace with lambda</code>,即可使用lambda新特性。<br><img src="http://7xize8.com1.z0.glb.clouddn.com/lambda_for_android_studio/support_2.png" alt=""></p>
</li>
</ol>
<h2 id="参考资料">参考资料</h2><ul>
<li><a href="http://chriszou.com/2015/03/17/lambda-and-android.html" target="_blank" rel="external">Java 8的Lambda及其在Android 开发中的应用</a>。</li>
<li><a href="http://gold.xitu.io/entry/56f3e33a5bbb50004c956856" target="_blank" rel="external">Lambda for Android</a>。</li>
</ul>
<h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。 </li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="lambda" scheme="http://jiongbull.com/tags/lambda/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
</entry>
<entry>
<title><![CDATA[am使用说明]]></title>
<link href="http://jiongbull.com/2016/04/10/am%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/"/>
<id>http://jiongbull.com/2016/04/10/am使用说明/</id>
<published>2016-04-10T11:34:56.000Z</published>
<updated>2016-05-10T15:04:59.056Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<p>Activity Manager,可以启动activity、启动service、发送广播、停止进程等。</p>
<h2 id="am_start">am start</h2><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">am</span> <span class="tag">start</span> <span class="attr_selector">[-D]</span> <span class="attr_selector">[-W]</span> <span class="attr_selector">[-P (FILE)]</span> <span class="attr_selector">[--start-profiler (FILE)]</span> <span class="attr_selector">[--sampling INTERVAL]</span> <span class="attr_selector">[-R COUNT]</span> <span class="attr_selector">[-S]</span> <span class="attr_selector">[--opengl-trace]</span> <span class="attr_selector">[--user (USER_ID) | current]</span> (<span class="tag">INTENT</span>)</span><br></pre></td></tr></table></figure>
<p>启动Activity。</p>
<ul>
<li><code>-D</code> 启用debug</li>
<li><code>-W</code> 等待启动完成,输出启动耗时</li>
<li><code>--start-profiler (FILE)</code> 启用分析器,并把结果保存到文件</li>
<li><code>--sampling INTERVAL</code> 每隔<code>INTERVAL</code>指定的毫秒后取样分析,需要和<code>--start-profiler</code>一起使用</li>
<li><code>-P (FILE)</code> 像上面一样,但是会在应用空闲时停止分析</li>
<li><code>-R COUNT</code> Activity重复启动<code>COUNT</code>次,顶部的Activity会在每次重复启动前销毁</li>
<li><code>-S</code> 启动Activity前强制停止目标app</li>
<li><code>--opengl-trace</code> 启用追踪OpenGL方法</li>
<li><code>--user (USER_ID) | current</code> 指定运行的用户,如果没有指定则以当前用户运行</li>
</ul>
<ol>
<li><p>am start -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight avrasm"><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">root@shamu:/ <span class="preprocessor"># am start -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line"><span class="label">Starting:</span> Intent { cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start -D -n com.jiongbull.art.note/.chapter1.AActivity<br><img src="http://7xize8.com1.z0.glb.clouddn.com/adb/am_debug.png" alt="am debug"></p>
<figure class="highlight stata"><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">root@shamu:/ # am start -<span class="keyword">D</span> -<span class="keyword">n</span> com.jiongbull.art.<span class="keyword">note</span>/.chapter1.AActivity</span><br><span class="line">Starting: Intent { cmp=com.jiongbull.art.<span class="keyword">note</span>/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start -W -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight avrasm"><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></pre></td><td class="code"><pre><span class="line">root@shamu:/ <span class="preprocessor"># am start -W -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line"><span class="label">Starting:</span> Intent { cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br><span class="line"><span class="label">Status:</span> ok</span><br><span class="line"><span class="label">Activity:</span> <span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity</span><br><span class="line"><span class="label">ThisTime:</span> <span class="number">189</span></span><br><span class="line"><span class="label">TotalTime:</span> <span class="number">189</span></span><br><span class="line"><span class="label">WaitTime:</span> <span class="number">191</span></span><br><span class="line">Complete</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start —start-profiler /data/local/tmp/profiler.txt -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight stata"><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">root@shamu:/ # am start --start-<span class="keyword">profiler</span> /data/<span class="keyword">local</span>/tmp/<span class="keyword">profiler</span>.txt -<span class="keyword">n</span> com.jiongbull.art.<span class="keyword">note</span>/.chapter1.AActivity</span><br><span class="line">Starting: Intent { cmp=com.jiongbull.art.<span class="keyword">note</span>/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start —sampling 1000 —start-profiler /data/local/tmp/profiler.txt -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight stata"><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">root@shamu:/ # am start --sampling 1000 --start-<span class="keyword">profiler</span> /data/<span class="keyword">local</span>/tmp/<span class="keyword">profiler</span>.txt -<span class="keyword">n</span> com.jiongbull.art.<span class="keyword">note</span>/.chapter1.AActivity</span><br><span class="line">Starting: Intent { cmp=com.jiongbull.art.<span class="keyword">note</span>/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start -P /data/local/tmp/profiler.txt -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight groovy"><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">root<span class="annotation">@shamu</span>:<span class="regexp">/ # am start -P /</span>data<span class="regexp">/local/</span>tmp<span class="regexp">/profiler.txt -n com.jiongbull.art.note/</span>.chapter1.AActivity</span><br><span class="line"><span class="string">Starting:</span> Intent { cmp=com.jiongbull.art.note/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start -R 3 -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight avrasm"><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">root@shamu:/ <span class="preprocessor"># am start -R 3 -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line"><span class="label">Starting:</span> Intent { cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br><span class="line"><span class="label">Starting:</span> Intent { flg=<span class="number">0x10000000</span> cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br><span class="line"><span class="label">Warning:</span> Activity not started, its current task has been brought to the front</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start -S -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight avrasm"><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">root@shamu:/ <span class="preprocessor"># am start -S -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line"><span class="label">Stopping:</span> <span class="keyword">com</span>.jiongbull.art.note</span><br><span class="line"><span class="label">Starting:</span> Intent { cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start —opengl-trace -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight avrasm"><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">root@shamu:/ <span class="preprocessor"># am start --opengl-trace -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line"><span class="label">Starting:</span> Intent { cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
<li><p>am start —user current -n com.jiongbull.art.note/.chapter1.AActivity</p>
<figure class="highlight avrasm"><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">root@shamu:/ <span class="preprocessor"># am start --user current -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line"><span class="label">Starting:</span> Intent { cmp=<span class="keyword">com</span>.jiongbull.art.note/.chapter1.AActivity }</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_startservice">am startservice</h2><p><code>am startservice [--user (USER_ID) | current] (INTENT)</code>,启动Service,<code>--user (USER_ID) | current</code>指定运行的用户,如果没有指定则以当前用户运行。</p>
<ol>
<li><p>am startservice -n com.jiongbull.art.note/.chapter2.PayService</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am startservice -n com.jiongbull.art.note/.chapter2.PayService</span></span><br><span class="line"><span class="constant">Starting </span><span class="symbol">service:</span> <span class="constant">Intent </span>{ cmp=com.jiongbull.art.note/.chapter2.<span class="constant">PayService </span>}</span><br></pre></td></tr></table></figure>
</li>
<li><p>am startservice —user current -n com.jiongbull.art.note/.chapter2.PayService</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am startservice --user current -n com.jiongbull.art.note/.chapter2.PayService</span></span><br><span class="line"><span class="constant">Starting </span><span class="symbol">service:</span> <span class="constant">Intent </span>{ cmp=com.jiongbull.art.note/.chapter2.<span class="constant">PayService </span>}</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_stopservice">am stopservice</h2><p><code>am stopservice [--user (USER_ID) | current] (INTENT)</code>,停止Service,<code>--user (USER_ID) | current</code>指定运行的用户,如果没有指定则以当前用户运行。</p>
<ol>
<li><p>am stopservice -n com.jiongbull.art.note/.chapter2.PayService</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am stopservice -n com.jiongbull.art.note/.chapter2.PayService</span></span><br><span class="line"><span class="constant">Stopping </span><span class="symbol">service:</span> <span class="constant">Intent </span>{ cmp=com.jiongbull.art.note/.chapter2.<span class="constant">PayService </span>}</span><br><span class="line"><span class="constant">Service </span>stopped</span><br></pre></td></tr></table></figure>
</li>
<li><p>am stopservice —user current -n com.jiongbull.art.note/.chapter2.PayService</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am stopservice --user current -n com.jiongbull.art.note/.chapter2.PayService</span></span><br><span class="line"><span class="constant">Stopping </span><span class="symbol">service:</span> <span class="constant">Intent </span>{ cmp=com.jiongbull.art.note/.chapter2.<span class="constant">PayService </span>}</span><br><span class="line"><span class="constant">Service </span>stopped</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_force-stop">am force-stop</h2><p><code>am force-stop [--user (USER_ID) | all | current] (PACKAGE)</code>,强制停止所有与包名相关的,<code>--user (USER_ID) | all | current</code>指定去强制停止的用户,如果没有指定则是所有用户。</p>
<ol>
<li><p>am force-stop com.jiongbull.art.note</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am force-stop com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am force-stop —user current com.jiongbull.art.note</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am force-stop --user current com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_kill">am kill</h2><p><code>am kill [--user (USER_ID) | all | current] (PACKAGE)</code>,杀死所有与包名相关的进程,仅杀死可以安全杀死的进程,也就是说不会对用户体验造成困扰,<code>--user (USER_ID) | all | current</code>指定哪个用户去杀死进程,如果没有指定则是所有用户。</p>
<ol>
<li><p>am kill com.jiongbull.art.note</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am kill com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am kill —user current com.jiongbull.art.note</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am kill --user current com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_kill-all">am kill-all</h2><p>杀死所有的后台进程。</p>
<p>am kill-all<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am kill-all</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_broadcast">am broadcast</h2><p><code>am broadcast [--user (USER_ID) | all | current] (INTENT)</code>,发送广播。</p>
<ul>
<li><code>--user (USER_ID) | all | current</code> 指定广播发送给哪个用户,如果没有指定则发送给所有人</li>
<li><code>--receiver-permission (PERMISSION)</code> 要求Receiver需要的权限</li>
</ul>
<ol>
<li><p>am broadcast -a android.intent.action.BOOT_COMPLETED</p>
<figure class="highlight nimrod"><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">root@shamu:/ <span class="comment"># am broadcast -a android.intent.action.BOOT_COMPLETED</span></span><br><span class="line"><span class="type">Broadcasting</span>: <span class="type">Intent</span> { act=android.intent.action.<span class="type">BOOT_COMPLETED</span> }</span><br><span class="line"><span class="type">Broadcast</span> completed: <span class="literal">result</span>=<span class="number">0</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am broadcast —user current -a android.intent.action.BOOT_COMPLETED</p>
<figure class="highlight nimrod"><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">root@shamu:/ <span class="comment"># am broadcast --user current -a android.intent.action.BOOT_COMPLETED</span></span><br><span class="line"><span class="type">Broadcasting</span>: <span class="type">Intent</span> { act=android.intent.action.<span class="type">BOOT_COMPLETED</span> }</span><br><span class="line"><span class="type">Broadcast</span> completed: <span class="literal">result</span>=<span class="number">0</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am broadcast —receiver-permission android.permission.RECEIVE_BOOT_COMPLETED -a android.intent.action.BOOT_COMPLETED</p>
<figure class="highlight nimrod"><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">root@shamu:/ <span class="comment"># am broadcast --receiver-permission android.permission.RECEIVE_BOOT_COMPLETED -a android.intent.action.BOOT_COMPLETED</span></span><br><span class="line"><span class="type">Broadcasting</span>: <span class="type">Intent</span> { act=android.intent.action.<span class="type">BOOT_COMPLETED</span> }</span><br><span class="line"><span class="type">Broadcast</span> completed: <span class="literal">result</span>=<span class="number">0</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_instrument">am instrument</h2><figure class="highlight css"><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"><span class="tag">am</span> <span class="tag">instrument</span> <span class="attr_selector">[-r]</span> <span class="attr_selector">[-e (NAME) (VALUE)]</span> <span class="attr_selector">[-p (FILE)]</span> <span class="attr_selector">[-w]</span></span><br><span class="line"> <span class="attr_selector">[--user (USER_ID) | current]</span></span><br><span class="line"> <span class="attr_selector">[--no-window-animation]</span> <span class="attr_selector">[--abi (ABI)]</span> (<span class="tag">COMPONENT</span>)</span><br></pre></td></tr></table></figure>
<p>启动Instrumentation,通常目标组件是”测试包/运行类”这种格式的。</p>
<ul>
<li><code>-r</code> 输出原始结果(否则加密<code>REPORT_KEY_STREAMRESULT</code>),同时使用<code>-e pref true</code>可以输出性能测试的原始结果</li>
<li><code>-e (NAME) (VALUE)</code> 把参数<code>NAME</code>的值设置为<code>VALUE</code>,对于测试运行器来说,最常见的表单格式是<code>-e (testrunner_flag) (value)[,(value)...]</code></li>
<li><code>-p</code> 配置数据输出到文件中</li>
<li><code>-w</code> 等待instrumentation完成,需要测试运行器</li>
<li><code>--user (USER_ID) | current</code> 指定哪个用户去运行instrumentation,如果没有指定则默认是当前用户</li>
<li><code>--no-window-animation</code> 运行时关闭窗口动画</li>
<li><code>--abi (ABI)</code> 使用指定的ABI启动instrumentation进程,这里假设进程指定指定的ABI</li>
</ul>
<ol>
<li><p>am instrument -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight stata"><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></pre></td><td class="code"><pre><span class="line">root@shamu:/ # am instrument -w com.jiongbull.art.<span class="keyword">note</span>.<span class="keyword">test</span>/android.support.<span class="keyword">test</span>.runner.AndroidJUnitRunner</span><br><span class="line">com.jiongbull.art.<span class="keyword">note</span>.FirstActivityTest:....</span><br><span class="line"></span><br><span class="line">Time: 1.815</span><br><span class="line"></span><br><span class="line">OK (4 tests)</span><br></pre></td></tr></table></figure>
</li>
<li><p>am instrument -r -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight avrasm"><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">root@shamu:/ <span class="preprocessor"># am instrument -r -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</span></span><br><span class="line"><span class="label">INSTRUMENTATION_STATUS:</span> numtests=<span class="number">4</span></span><br><span class="line">...</span><br><span class="line">...</span><br><span class="line"><span class="label">Time:</span> <span class="number">1.724</span></span><br><span class="line"></span><br><span class="line">OK (<span class="number">4</span> tests)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="label">INSTRUMENTATION_CODE:</span> -<span class="number">1</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am instrument -e class com.jiongbull.art.note.FirstActivityTest -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight stata"><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></pre></td><td class="code"><pre><span class="line">root@shamu:/ # am instrument -<span class="keyword">e</span> <span class="keyword">class</span> com.jiongbull.art.<span class="keyword">note</span>.FirstActivityTest -w com.jiongbull.art.<span class="keyword">note</span>.<span class="keyword">test</span>/android.support.<span class="keyword">test</span>.runner.AndroidJUnitRunner</span><br><span class="line">com.jiongbull.art.<span class="keyword">note</span>.FirstActivityTest:....</span><br><span class="line"></span><br><span class="line">Time: 1.662</span><br><span class="line"></span><br><span class="line">OK (4 tests)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">INSTRUMENTATION_CODE: -1</span><br></pre></td></tr></table></figure>
</li>
<li><p>am instrument -r -e pref true -p /data/local/tmp/ins.trace -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root@shamu:/ # am instrument -r -<span class="keyword">e</span> pref true -p /data/<span class="keyword">local</span>/tmp/<span class="keyword">ins</span>.trace -w com.jiongbull.art.<span class="keyword">note</span>.<span class="keyword">test</span>/android.support.<span class="keyword">test</span>.runner.AndroidJUnitRunner</span><br></pre></td></tr></table></figure>
</li>
<li><p>am instrument —user current -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight stata"><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></pre></td><td class="code"><pre><span class="line">root@shamu:/ # am instrument --user current -w com.jiongbull.art.<span class="keyword">note</span>.<span class="keyword">test</span>/android.support.<span class="keyword">test</span>.runner.AndroidJUnitRunner</span><br><span class="line">com.jiongbull.art.<span class="keyword">note</span>.FirstActivityTest:....</span><br><span class="line"></span><br><span class="line">Time: 2.221</span><br><span class="line"></span><br><span class="line">OK (4 tests)</span><br></pre></td></tr></table></figure>
</li>
<li><p>am instrument —no-window-animation -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight stata"><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></pre></td><td class="code"><pre><span class="line">root@shamu:/ # am instrument --<span class="keyword">no</span>-<span class="keyword">window</span>-animation -w com.jiongbull.art.<span class="keyword">note</span>.<span class="keyword">test</span>/android.support.<span class="keyword">test</span>.runner.AndroidJUnitRunner</span><br><span class="line">com.jiongbull.art.<span class="keyword">note</span>.FirstActivityTest:....</span><br><span class="line"></span><br><span class="line">Time: 1.842</span><br><span class="line"></span><br><span class="line">OK (4 tests)</span><br></pre></td></tr></table></figure>
</li>
<li><p>am instrument —abi x86_64 -w com.jiongbull.art.note.test/android.support.test.runner.AndroidJUnitRunner</p>
<figure class="highlight groovy"><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">root<span class="annotation">@generic</span><span class="string">_x86_64:</span><span class="regexp">/ # am instrument --abi x86_64 -w com.jiongbull.art.note.test/</span>android.support.test.runner.AndroidJUnitRunner</span><br><span class="line">com.jiongbull.art.note.<span class="string">FirstActivityTest:</span>....</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_profile_start">am profile start</h2><p><code>am profile start [--user (USER_ID) | current] (PROCESS) (FILE)</code>,对进程开展分析,<code>PROCESS</code>可以是进程名或pid,当提供进程名称时,<code>--user (USER_ID) | current</code>用来指定哪个用户分析进程,如果没有指定则以是当前用户。</p>
<ol>
<li><p>am profile start com.tencent.mm /data/local/tmp/profile.txt</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">shell@shamu:/ $ am profile <span class="operator"><span class="keyword">start</span> com.tencent.mm /<span class="keyword">data</span>/<span class="keyword">local</span>/tmp/<span class="keyword">profile</span>.txt</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am profile start —user current com.tencent.mm /data/local/tmp/profile.txt</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">shell<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="variable">$ </span>am profile start --user current com.tencent.mm /data/local/tmp/profile.txt</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_profile_stop">am profile stop</h2><p><code>am profile stop [--user (USER_ID) | current] (PROCESS)</code>,停止对进程的分析,参数同<code>am profile start</code>。</p>
<ol>
<li><p>am profile stop com.tencent.mm</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">shell<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="variable">$ </span>am profile stop com.tencent.mm</span><br></pre></td></tr></table></figure>
</li>
<li><p>am profile stop —user current com.tencent.mm</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">shell<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="variable">$ </span>am profile stop --user current com.tencent.mm</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_dumpheap">am dumpheap</h2><p><code>am dumpheap [--user (USER_ID) current] [-n] (PROCESS) (FILE)</code>,把进程的堆内存信息输出到文件中,<code>PROCESS</code>可以是进程名或pid。</p>
<ul>
<li><code>-n</code> 输出本地堆而不是托管堆</li>
<li><code>--user (USER_ID) | current</code>用来指定哪个用户输出进程信息,如果没有指定则以是当前用户。</li>
</ul>
<ol>
<li><p>am dumpheap com.jiongbull.art.note /data/local/tmp/dump.txt</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am dumpheap com.jiongbull.art.note /data/local/tmp/dump.txt</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am dumpheap -n com.jiongbull.art.note /data/local/tmp/dump.txt</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am dumpheap -n com.jiongbull.art.note /data/local/tmp/dump.txt</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am dumpheap -user current com.jiongbull.art.note /data/local/tmp/dump.txt</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am dumpheap -user current com.jiongbull.art.note /data/local/tmp/dump.txt</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_set-debug-app">am set-debug-app</h2><p><code>am set-debug-app [-w] [--persistent] (PACKAGE)</code>,设置应用为调试状态。</p>
<ul>
<li><code>-w</code> 在应用启动后等待调试器</li>
<li><code>-persistent</code> 保持调试状态</li>
</ul>
<ol>
<li><p>am set-debug-app com.jiongbull.art.note</p>
<figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">shell</span>@shamu:/ $ am <span class="keyword">set</span>-debug-<span class="keyword">app</span> com.jiongbull.art.<span class="keyword">note</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am set-debug-app -w com.jiongbull.art.note</p>
<figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">shell</span>@shamu:/ $ am <span class="keyword">set</span>-debug-<span class="keyword">app</span> -w com.jiongbull.art.<span class="keyword">note</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am set-debug-app —persistent com.jiongbull.art.note</p>
<figure class="highlight stata"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">shell</span>@shamu:/ $ am <span class="keyword">set</span>-debug-<span class="keyword">app</span> --persistent com.jiongbull.art.<span class="keyword">note</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_clear-debug-app">am clear-debug-app</h2><p><code>am clear-debug-app</code>清除先前设置的调试应用。</p>
<p>am sclear-debug-app<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am clear-debug-app</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_bug-report">am bug-report</h2><p>请求生成错误报告,完毕后会启动界面提示选择使用哪种方式传递报告。</p>
<p>am bug-report<br><figure class="highlight coffeescript"><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">root<span class="property">@shamu</span>:/ <span class="comment"># am bug-report</span></span><br><span class="line">Your lovely bug report <span class="keyword">is</span> being created; please be patient.</span><br></pre></td></tr></table></figure></p>
<h2 id="am_monitor">am monitor</h2><p><code>am monitor [--gdb (port)]</code>,开始监控崩溃或ANR,<code>--gbd</code>,在指定端口开启gdbserv监控崩溃或ANR。</p>
<ol>
<li><p>am monitor</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am monitor</span></span><br><span class="line"><span class="constant">Monitoring </span>activity manager... available <span class="symbol">commands:</span></span><br><span class="line">(q)<span class="symbol">uit:</span> finish monitoring</span><br></pre></td></tr></table></figure>
</li>
<li><p>am monitor —gdb 5439</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am monitor --gdb 5439</span></span><br><span class="line"><span class="constant">Monitoring </span>activity manager... available <span class="symbol">commands:</span></span><br><span class="line">(q)<span class="symbol">uit:</span> finish monitoring</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_hang">am hang</h2><p><code>am hang [--allow-restart]</code>,挂起系统,<code>--allow-restart</code>允许看门狗执行正常的系统重启。</p>
<ol>
<li><p>am hang</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am hang</span></span><br><span class="line"><span class="constant">Hanging </span>the system...</span><br></pre></td></tr></table></figure>
</li>
<li><p>am hang —allow-restart</p>
<figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am hang --allow-restart</span></span><br><span class="line"><span class="constant">Hanging </span>the system...</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_restart">am restart</h2><p>重启用户系统。</p>
<p>am restart<br><figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am restart</span></span><br><span class="line"><span class="constant">Restart </span>the system...</span><br></pre></td></tr></table></figure></p>
<h2 id="am_idle-maintenance">am idle-maintenance</h2><p>立即执行闲置维护。</p>
<p>am idle-maintenance<br><figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am idle-maintenance</span></span><br><span class="line"><span class="constant">Performing </span>idle maintenance...</span><br></pre></td></tr></table></figure></p>
<h2 id="am_screen-compat">am screen-compat</h2><p><code>am screen-compat [on|off] (PACKAGE)</code>,控制某个包的屏幕兼容性。</p>
<ol>
<li><p>am screen-compat on com.jiongbull.art.note</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am screen-compat on com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>am screen-compat off com.jiongbull.art.note</p>
<figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am screen-compat off com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="am_to-uri">am to-uri</h2><p><code>am to-uri [INTENT]</code>,以URI的格式输出指定intent的详情。</p>
<p>am to-uri -a android.intent.action.MAIN -c android.intent.category.LAUNCHER<br><figure class="highlight fortran"><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">root@shamu:/ # am to-uri -a android.<span class="type">intent</span>.<span class="keyword">action</span>.MAIN -c android.<span class="type">intent</span>.category.LAUNCHER</span><br><span class="line">#<span class="type">Intent</span>;<span class="keyword">action</span>=android.<span class="type">intent</span>.<span class="keyword">action</span>.MAIN;category=android.<span class="type">intent</span>.category.LAUNCHER;<span class="keyword">end</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_to-intent-uri">am to-intent-uri</h2><p><code>am to-intent-uri [INTENT]</code>,以<code>intent: URI</code>的格式输出指定intent的详情。</p>
<p>am to-intent-uri -a android.intent.action.MAIN -c android.intent.category.LAUNCHER<br><figure class="highlight fortran"><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">root@shamu:/ # am to-<span class="type">intent</span>-uri -a android.<span class="type">intent</span>.<span class="keyword">action</span>.MAIN -c android.<span class="type">intent</span>.category.LAUNCHER</span><br><span class="line"><span class="type">intent</span>:#<span class="type">Intent</span>;<span class="keyword">action</span>=android.<span class="type">intent</span>.<span class="keyword">action</span>.MAIN;category=android.<span class="type">intent</span>.category.LAUNCHER;<span class="keyword">end</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_to-app-uri">am to-app-uri</h2><p><code>am to-app-uri [INTENT]</code>,以<code>android-app: URI</code>的格式输出指定intent的详情。</p>
<p>am to-app-uri -p com.jiongbull.art.note<br><figure class="highlight stata"><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">root@shamu:/ # am to-<span class="keyword">app</span>-uri -p com.jiongbull.art.<span class="keyword">note</span></span><br><span class="line">android-<span class="keyword">app</span>:<span class="comment">//com.jiongbull.art.note</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_switch-user">am switch-user</h2><p><code>am switch-user <USER_ID></code>,在前台切换到指定标识的用户,如果该用户当前是停止状态就立即启动。</p>
<p>am switch-user 1<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am switch-user 1</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_start-user">am start-user</h2><p><code>am start-user <USER_ID></code>,如果指定用户当前是停止状态就在后台启动,如果想在前台启动请使用<code>am switch-user</code>。</p>
<p>am start-user 0<br><figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am start-user 0</span></span><br><span class="line"><span class="constant">Success:</span> user started</span><br></pre></td></tr></table></figure></p>
<h2 id="am_stop-user">am stop-user</h2><p><code>am stop-user <USER_ID></code>,停止指定标识的用户运行,不允许运行任何代码,除非显示启动它或切换到它。</p>
<p>am stop-user<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># am stop-user 1</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_stack_start">am stack start</h2><p><code>am stack start <DISPLAY_ID> <INTENT></code>,使用intent在指定屏幕上启动新的activity。</p>
<p>am stack start 0 -n com.jiongbull.art.note/.chapter1.AActivity<br><figure class="highlight coffeescript"><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">root<span class="property">@shamu</span>:/ <span class="comment"># am stack start 0 -n com.jiongbull.art.note/.chapter1.AActivity</span></span><br><span class="line">出错了,提示 <span class="attribute">Error</span>: callback must <span class="keyword">not</span> be <span class="literal">null</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_stack_movetask">am stack movetask</h2><p><code>am stack movetask <TASK_ID> <STACK_ID> [true|false]</code>,把指定activity栈中指定的任务移动到顶部(true)或底部(false)。</p>
<p>am stack movetask 114 1 false<br><figure class="highlight avrasm"><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></pre></td><td class="code"><pre><span class="line">root@generic_x86_64:/ <span class="preprocessor"># am stack info 1</span></span><br><span class="line">Stack id=<span class="number">1</span> bounds=[<span class="number">0</span>,<span class="number">0</span>][<span class="number">1080</span>,<span class="number">1920</span>] displayId=<span class="number">0</span></span><br><span class="line"> taskId=<span class="number">111</span>: <span class="keyword">com</span>.android.settings/<span class="keyword">com</span>.android.settings.Settings</span><br><span class="line"> taskId=<span class="number">4</span>: <span class="keyword">com</span>.android.widgetpreview/<span class="keyword">com</span>.android.widgetpreview.WidgetPreviewActivity</span><br><span class="line"> taskId=<span class="number">10</span>: <span class="keyword">com</span>.android.providers.downloads.ui/<span class="keyword">com</span>.android.providers.downloads.ui.DownloadList</span><br><span class="line"> taskId=<span class="number">11</span>: <span class="keyword">com</span>.android.browser/<span class="keyword">com</span>.android.browser.BrowserActivity</span><br><span class="line"> taskId=<span class="number">13</span>: <span class="keyword">com</span>.android.settings/<span class="keyword">com</span>.android.settings.Settings$StorageUseActivity</span><br><span class="line"> taskId=<span class="number">17</span>: <span class="keyword">com</span>.android.camera/<span class="keyword">com</span>.android.camera.Camera</span><br><span class="line"> taskId=<span class="number">104</span>: <span class="keyword">com</span>.jiongbull.art.note/<span class="keyword">com</span>.jiongbull.art.note.app.UiTestActivity</span><br><span class="line"> taskId=<span class="number">110</span>: <span class="keyword">com</span>.google.android.gms/<span class="keyword">com</span>.google.android.gms.app.settings.GoogleSettingsActivity</span><br><span class="line"> taskId=<span class="number">114</span>: <span class="keyword">com</span>.jiongbull.art.note/<span class="keyword">com</span>.jiongbull.art.note.chapter1.AActivity</span><br><span class="line"></span><br><span class="line">root@generic_x86_64:/ <span class="preprocessor"># am stack movetask 114 1 false</span></span><br><span class="line">root@generic_x86_64:/ <span class="preprocessor"># am stack info 1</span></span><br><span class="line">Stack id=<span class="number">1</span> bounds=[<span class="number">0</span>,<span class="number">0</span>][<span class="number">1080</span>,<span class="number">1920</span>] displayId=<span class="number">0</span></span><br><span class="line"> taskId=<span class="number">114</span>: <span class="keyword">com</span>.jiongbull.art.note/<span class="keyword">com</span>.jiongbull.art.note.chapter1.AActivity</span><br><span class="line"> taskId=<span class="number">111</span>: <span class="keyword">com</span>.android.settings/<span class="keyword">com</span>.android.settings.Settings</span><br><span class="line"> taskId=<span class="number">4</span>: <span class="keyword">com</span>.android.widgetpreview/<span class="keyword">com</span>.android.widgetpreview.WidgetPreviewActivity</span><br><span class="line"> taskId=<span class="number">10</span>: <span class="keyword">com</span>.android.providers.downloads.ui/<span class="keyword">com</span>.android.providers.downloads.ui.DownloadList</span><br><span class="line"> taskId=<span class="number">11</span>: <span class="keyword">com</span>.android.browser/<span class="keyword">com</span>.android.browser.BrowserActivity</span><br><span class="line"> taskId=<span class="number">13</span>: <span class="keyword">com</span>.android.settings/<span class="keyword">com</span>.android.settings.Settings$StorageUseActivity</span><br><span class="line"> taskId=<span class="number">17</span>: <span class="keyword">com</span>.android.camera/<span class="keyword">com</span>.android.camera.Camera</span><br><span class="line"> taskId=<span class="number">104</span>: <span class="keyword">com</span>.jiongbull.art.note/<span class="keyword">com</span>.jiongbull.art.note.app.UiTestActivity</span><br><span class="line"> taskId=<span class="number">110</span>: <span class="keyword">com</span>.google.android.gms/<span class="keyword">com</span>.google.android.gms.app.settings.GoogleSettingsActivity</span><br></pre></td></tr></table></figure></p>
<h2 id="am_stack_resize">am stack resize</h2><p><code>am stack resize <STACK_ID> <LEFT,TOP,RIGHT,BOTTOM></code>,改变栈的大小并移动位置。</p>
<p>am stack resize 1 1 1 1 1<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@generic_x86_64</span><span class="symbol">:/</span> <span class="comment"># am stack resize 1 1 1 1 1</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_stack_list">am stack list</h2><p>显示所有activity栈和它们的大小。</p>
<p>am stack list<br><figure class="highlight markdown"><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">root@generic<span class="emphasis">_x86_</span>64:/ # am stack list</span><br><span class="line">Stack id=1 bounds=[<span class="link_label">0,0</span>][<span class="link_reference">1080,1920</span>] displayId=0</span><br><span class="line"> taskId=114: com.jiongbull.art.note/com.jiongbull.art.note.chapter1.AActivity</span><br><span class="line"> taskId=111: com.android.settings/com.android.settings.Settings</span><br><span class="line"> taskId=4: com.android.widgetpreview/com.android.widgetpreview.WidgetPreviewActivity</span><br><span class="line"> taskId=10: com.android.providers.downloads.ui/com.android.providers.downloads.ui.DownloadList</span><br><span class="line"> taskId=11: com.android.browser/com.android.browser.BrowserActivity</span><br><span class="line"> taskId=13: com.android.settings/com.android.settings.Settings$StorageUseActivity</span><br><span class="line"> taskId=17: com.android.camera/com.android.camera.Camera</span><br><span class="line"> taskId=104: com.jiongbull.art.note/com.jiongbull.art.note.app.UiTestActivity</span><br><span class="line"> taskId=110: com.google.android.gms/com.google.android.gms.app.settings.GoogleSettingsActivity</span><br><span class="line"></span><br><span class="line">Stack id=0 bounds=[<span class="link_label">0,0</span>][<span class="link_reference">1080,1920</span>] displayId=0</span><br><span class="line"> taskId=112: com.google.android.googlequicksearchbox/com.google.android.launcher.GEL</span><br></pre></td></tr></table></figure></p>
<h2 id="am_stack_info">am stack info</h2><p>显示指定activity栈的信息。</p>
<p>am stack info 1<br><figure class="highlight avrasm"><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></pre></td><td class="code"><pre><span class="line">root@generic_x86_64:/ <span class="preprocessor"># am stack info 1</span></span><br><span class="line">Stack id=<span class="number">1</span> bounds=[<span class="number">0</span>,<span class="number">0</span>][<span class="number">1080</span>,<span class="number">1920</span>] displayId=<span class="number">0</span></span><br><span class="line"> taskId=<span class="number">111</span>: <span class="keyword">com</span>.android.settings/<span class="keyword">com</span>.android.settings.Settings</span><br><span class="line"> taskId=<span class="number">4</span>: <span class="keyword">com</span>.android.widgetpreview/<span class="keyword">com</span>.android.widgetpreview.WidgetPreviewActivity</span><br><span class="line"> taskId=<span class="number">10</span>: <span class="keyword">com</span>.android.providers.downloads.ui/<span class="keyword">com</span>.android.providers.downloads.ui.DownloadList</span><br><span class="line"> taskId=<span class="number">11</span>: <span class="keyword">com</span>.android.browser/<span class="keyword">com</span>.android.browser.BrowserActivity</span><br><span class="line"> taskId=<span class="number">13</span>: <span class="keyword">com</span>.android.settings/<span class="keyword">com</span>.android.settings.Settings$StorageUseActivity</span><br><span class="line"> taskId=<span class="number">17</span>: <span class="keyword">com</span>.android.camera/<span class="keyword">com</span>.android.camera.Camera</span><br><span class="line"> taskId=<span class="number">104</span>: <span class="keyword">com</span>.jiongbull.art.note/<span class="keyword">com</span>.jiongbull.art.note.app.UiTestActivity</span><br><span class="line"> taskId=<span class="number">110</span>: <span class="keyword">com</span>.google.android.gms/<span class="keyword">com</span>.google.android.gms.app.settings.GoogleSettingsActivity</span><br><span class="line"> taskId=<span class="number">114</span>: <span class="keyword">com</span>.jiongbull.art.note/<span class="keyword">com</span>.jiongbull.art.note.chapter1.AActivity</span><br></pre></td></tr></table></figure></p>
<h2 id="am_lock-task">am lock-task</h2><p><code>am lock-task <TASK_ID></code>,固定屏幕,把指定任务栈移到前台并禁止其他任务栈运行。</p>
<p>an lock-task 114<br><figure class="highlight coffeescript"><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">root<span class="property">@generic_x86_64</span>:/ <span class="comment"># am lock-task 114</span></span><br><span class="line">Activity manager <span class="keyword">is</span> <span class="keyword">in</span> lockTaskMode</span><br></pre></td></tr></table></figure></p>
<h2 id="am_lock-task_stop">am lock-task stop</h2><p>停止固定屏幕。</p>
<p>am lock-task stop<br><figure class="highlight elixir"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">root<span class="variable">@generic_x86_64</span><span class="symbol">:/</span> <span class="comment"># am lock-task stop</span></span><br></pre></td></tr></table></figure></p>
<h2 id="am_get-config">am get-config</h2><p>检索配置和设备上的最近配置。</p>
<p>am get-config<br><figure class="highlight avrasm"><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></pre></td><td class="code"><pre><span class="line"><span class="label">config:</span> mcc310-mnc260-<span class="built_in">zh</span>-rCN-sw360dp-w360dp-h567dp-normal-notlong-port-notnight-xxhdpi-finger-keysexposed-nokeys-navhidden-nonav-v22</span><br><span class="line"><span class="label">abi:</span> x86_64,x86</span><br><span class="line"><span class="label">recentConfigs:</span></span><br><span class="line"> config: mcc310-mnc260-<span class="built_in">zh</span>-rCN-sw360dp-w360dp-h567dp-normal-notlong-port-notnight-xxhdpi-finger-keysexposed-nokeys-navhidden-nonav-v22</span><br><span class="line"> config: <span class="built_in">zh</span>-rCN-sw360dp-w360dp-h567dp-normal-notlong-port-xxhdpi-finger-keysexposed-nokeys-navhidden-nonav-v22</span><br><span class="line"> config: <span class="built_in">zh</span>-rCN-sw360dp-w360dp-h567dp-normal-notlong-port-notnight-xxhdpi-finger-keysexposed-nokeys-navhidden-nonav-v22</span><br><span class="line"> config: <span class="built_in">zh</span>-rCN-sw360dp-w360dp-h640dp-normal-long-port-xxhdpi-notouch-keysexposed-nokeys-navhidden-nonav-v22</span><br><span class="line"> config: <span class="built_in">zh</span>-rCN-sw360dp-w360dp-h567dp-normal-notlong-port-xxhdpi-notouch-keysexposed-nokeys-navhidden-nonav-v22</span><br></pre></td></tr></table></figure></p>
<h2 id="intent">intent</h2><p>指定intent时用到的标识和参数。</p>
<figure class="highlight clojure"><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></pre></td><td class="code"><pre><span class="line"><span class="collection">[-a <ACTION>]</span> <span class="collection">[-d <DATA_URI>]</span> <span class="collection">[-t <MIME_TYPE>]</span></span><br><span class="line"><span class="collection">[-c <CATEGORY> <span class="collection">[-c <CATEGORY>]</span> ...]</span></span><br><span class="line"><span class="collection">[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]</span></span><br><span class="line"><span class="collection">[--esn <EXTRA_KEY> ...]</span></span><br><span class="line"><span class="collection">[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]</span></span><br><span class="line"><span class="collection">[--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]</span></span><br><span class="line"><span class="collection">[--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]</span></span><br><span class="line"><span class="collection">[--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> ...]</span></span><br><span class="line"><span class="collection">[--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]</span></span><br><span class="line"><span class="collection">[--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]</span></span><br><span class="line"><span class="collection">[--eia <EXTRA_KEY> <EXTRA_INT_VALUE><span class="collection">[,<EXTRA_INT_VALUE...]</span>]</span></span><br><span class="line"><span class="collection">[--ela <EXTRA_KEY> <EXTRA_LONG_VALUE><span class="collection">[,<EXTRA_LONG_VALUE...]</span>]</span></span><br><span class="line"><span class="collection">[--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE><span class="collection">[,<EXTRA_FLOAT_VALUE...]</span>]</span></span><br><span class="line"><span class="collection">[--esa <EXTRA_KEY> <EXTRA_STRING_VALUE><span class="collection">[,<EXTRA_STRING_VALUE...]</span>]</span></span><br><span class="line"> <span class="list">(<span class="keyword">to</span> embed a comma into a string escape it using <span class="string">"\,"</span>)</span></span><br><span class="line"><span class="collection">[-n <COMPONENT>]</span> <span class="collection">[-p <PACKAGE>]</span> <span class="collection">[-f <FLAGS>]</span></span><br><span class="line"><span class="collection">[--grant-read-uri-permission]</span> <span class="collection">[--grant-write-uri-permission]</span></span><br><span class="line"><span class="collection">[--grant-persistable-uri-permission]</span> <span class="collection">[--grant-prefix-uri-permission]</span></span><br><span class="line"><span class="collection">[--debug-log-resolution]</span> <span class="collection">[--exclude-stopped-packages]</span></span><br><span class="line"><span class="collection">[--include-stopped-packages]</span></span><br><span class="line"><span class="collection">[--activity-brought-to-front]</span> <span class="collection">[--activity-clear-top]</span></span><br><span class="line"><span class="collection">[--activity-clear-when-task-reset]</span> <span class="collection">[--activity-exclude-from-recents]</span></span><br><span class="line"><span class="collection">[--activity-launched-from-history]</span> <span class="collection">[--activity-multiple-task]</span></span><br><span class="line"><span class="collection">[--activity-no-animation]</span> <span class="collection">[--activity-no-history]</span></span><br><span class="line"><span class="collection">[--activity-no-user-action]</span> <span class="collection">[--activity-previous-is-top]</span></span><br><span class="line"><span class="collection">[--activity-reorder-to-front]</span> <span class="collection">[--activity-reset-task-if-needed]</span></span><br><span class="line"><span class="collection">[--activity-single-top]</span> <span class="collection">[--activity-clear-task]</span></span><br><span class="line"><span class="collection">[--activity-task-on-home]</span></span><br><span class="line"><span class="collection">[--receiver-registered-only]</span> <span class="collection">[--receiver-replace-pending]</span></span><br><span class="line"><span class="collection">[--selector]</span></span><br><span class="line"><span class="collection">[<URI> | <PACKAGE> | <COMPONENT>]</span></span><br></pre></td></tr></table></figure>
<h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="adb shell" scheme="http://jiongbull.com/tags/adb-shell/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
<category term="adb" scheme="http://jiongbull.com/categories/Android/adb/"/>
</entry>
<entry>
<title><![CDATA[aapt使用说明]]></title>
<link href="http://jiongbull.com/2016/04/08/aapt%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/"/>
<id>http://jiongbull.com/2016/04/08/aapt使用说明/</id>
<published>2016-04-07T16:12:56.000Z</published>
<updated>2016-05-10T15:04:29.514Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<p>Android Asset Packaging Tool,可以查看、创建、更新或删除归档文件(zip、jar或apk),可以将资源文件编译成二进制文件。</p>
<h2 id="aapt_v">aapt v</h2><p>显示aapt版本号。</p>
<figure class="highlight elixir"><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"><span class="number">2</span>|root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># aapt v</span></span><br><span class="line"><span class="constant">Android Asset Packaging Tool,</span> v<span class="number">0</span>.<span class="number">2</span>-0ec622cc9f</span><br></pre></td></tr></table></figure>
<h2 id="aapt_l[ist]_…">aapt l[ist] …</h2><p><code>aapt l[ist] [-v] [-a] file.{zip,jar,apk}</code>,列出归档文件内容。</p>
<ul>
<li><code>-v</code> 以table形式显示</li>
<li><code>-a</code> 额外显示<code>AndroidManifest.xml</code>内容</li>
</ul>
<ol>
<li><p>aapt l /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight groovy"><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">root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt l /</span>data<span class="regexp">/app/</span>com.zhihu.android-<span class="number">2</span>/base.apk</span><br><span class="line">AndroidManifest.xml</span><br><span class="line">assets/crashlytics-build.properties</span><br><span class="line">assets<span class="regexp">/drawable-hdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line">assets<span class="regexp">/drawable-ldpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line">assets<span class="regexp">/drawable-mdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line">assets<span class="regexp">/drawable-xhdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line">assets<span class="regexp">/drawable-xxhdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line">assets<span class="regexp">/drawable/</span>weibosdk_dialog_bg.9.png</span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt l -v /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight groovy"><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></pre></td><td class="code"><pre><span class="line">root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt l -v /</span>data<span class="regexp">/app/</span>com.zhihu.android-<span class="number">2</span>/base.apk</span><br><span class="line"><span class="string">Archive:</span> <span class="regexp">/data/</span>app<span class="regexp">/com.zhihu.android-2/</span>base.apk</span><br><span class="line"> Length Method Size Ratio Offset Date Time CRC-<span class="number">32</span> Name</span><br><span class="line">-------- ------ ------- ----- ------- ---- ---- ------ ----</span><br><span class="line"> <span class="number">15856</span> Deflate <span class="number">3343</span> <span class="number">79</span>% <span class="number">0</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">28</span> <span class="number">9304</span>d664 AndroidManifest.xml</span><br><span class="line"> <span class="number">338</span> Deflate <span class="number">266</span> <span class="number">21</span>% <span class="number">3396</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">28</span> <span class="number">416243</span>b9 assets/crashlytics-build.properties</span><br><span class="line"> <span class="number">2054</span> Stored <span class="number">2054</span> <span class="number">0</span>% <span class="number">3727</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">26</span> be9fc2e4 assets<span class="regexp">/drawable-hdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line"> <span class="number">869</span> Stored <span class="number">869</span> <span class="number">0</span>% <span class="number">5865</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">26</span> fb4127df assets<span class="regexp">/drawable-ldpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line"> <span class="number">1387</span> Stored <span class="number">1387</span> <span class="number">0</span>% <span class="number">6816</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">26</span> <span class="number">055</span>b26ac assets<span class="regexp">/drawable-mdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line"> <span class="number">2971</span> Stored <span class="number">2971</span> <span class="number">0</span>% <span class="number">8286</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">26</span> fd14d699 assets<span class="regexp">/drawable-xhdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line"> <span class="number">4162</span> Stored <span class="number">4162</span> <span class="number">0</span>% <span class="number">11342</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">26</span> <span class="number">65</span>f5bfc5 assets<span class="regexp">/drawable-xxhdpi/</span>ic_com_sina_weibo_sdk_close.png</span><br><span class="line"> <span class="number">495</span> Stored <span class="number">495</span> <span class="number">0</span>% <span class="number">15589</span> <span class="number">03</span>-<span class="number">31</span>-<span class="number">16</span> <span class="number">19</span>:<span class="number">26</span> <span class="number">0</span>dfdb02b assets<span class="regexp">/drawable/</span>weibosdk_dialog_bg.9.png</span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt l -a /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight stylus"><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></pre></td><td class="code"><pre><span class="line">...</span><br><span class="line">Android manifest:</span><br><span class="line">N: android=http:<span class="comment">//schemas.android.com/apk/res/android</span></span><br><span class="line"> E: manifest (line=<span class="number">15</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">versionCode</span><span class="params">(<span class="number">0</span>x0101021b)</span></span>=(type <span class="number">0</span>x10)<span class="number">0</span>x133</span><br><span class="line"> A: android:<span class="function"><span class="title">versionName</span><span class="params">(<span class="number">0</span>x0101021c)</span></span>=<span class="string">"3.2.0"</span> (Raw: <span class="string">"3.2.0"</span>)</span><br><span class="line"> A: package=<span class="string">"com.zhihu.android"</span> (Raw: <span class="string">"com.zhihu.android"</span>)</span><br><span class="line"> A: platformBuildVersionCode=(type <span class="number">0</span>x10)<span class="number">0</span>x17 (Raw: <span class="string">"23"</span>)</span><br><span class="line"> A: platformBuildVersionName=<span class="string">"6.0-2438415"</span> (Raw: <span class="string">"6.0-2438415"</span>)</span><br><span class="line"> E: uses-sdk (line=<span class="number">20</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">minSdkVersion</span><span class="params">(<span class="number">0</span>x0101020c)</span></span>=(type <span class="number">0</span>x10)<span class="number">0</span>xf</span><br><span class="line"> A: android:<span class="function"><span class="title">targetSdkVersion</span><span class="params">(<span class="number">0</span>x01010270)</span></span>=(type <span class="number">0</span>x10)<span class="number">0</span>x17</span><br><span class="line"> E: uses-permission (line=<span class="number">30</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">name</span><span class="params">(<span class="number">0</span>x01010003)</span></span>=<span class="string">"android.permission.READ_EXTERNAL_STORAGE"</span> (Raw: <span class="string">"android.permission.READ_EXTERNAL_STORAGE"</span>)</span><br><span class="line"> E: uses-permission (line=<span class="number">31</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">name</span><span class="params">(<span class="number">0</span>x01010003)</span></span>=<span class="string">"android.permission.WRITE_EXTERNAL_STORAGE"</span> (Raw: <span class="string">"android.permission.WRITE_EXTERNAL_STORAGE"</span>)</span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="aapt_d[ump]_…">aapt d[ump] …</h2><p><code>aapt d[ump] [--values] [--include-meta-data] WHAT file.{apk} [asset [asset ...]]</code>,输出APK内的一些信息。</p>
<ul>
<li><code>strings</code> 显示APK中资源表字符常量池里的内容</li>
<li><code>badging</code> 显示APK中声明的应用的标签、图标和相关描述</li>
<li><code>permissions</code> 显示APK的权限</li>
<li><code>resources</code> 显示APK的资源表</li>
<li><code>configurations</code> 显示APK的配置信息</li>
<li><code>xmltree</code> 以树形结构显示指定资产编译后的XML资源</li>
<li><code>xmlstrings</code> 显示指定的编译后的XML资产里所有字符串</li>
</ul>
<ol>
<li><p>aapt d strings /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight vbnet"><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"><span class="number">2</span>|root@shamu:/ <span class="preprocessor"># apt d strings /data/app/com.zhihu.android-2/base.apk</span></span><br><span class="line"><span class="built_in">String</span> pool <span class="keyword">of</span> <span class="number">6140</span> unique UTF-<span class="number">8</span> non-sorted strings, <span class="number">6140</span> entries <span class="keyword">and</span> <span class="number">1</span> styles <span class="keyword">using</span> <span class="number">313704</span> bytes:</span><br><span class="line"><span class="built_in">String</span> <span class="preprocessor">#0: Requested by %1$s</span></span><br><span class="line"><span class="built_in">String</span> <span class="preprocessor">#1: Requested by %1$s</span></span><br><span class="line"><span class="built_in">String</span> <span class="preprocessor">#2: Requested by %1$s</span></span><br><span class="line"><span class="built_in">String</span> <span class="preprocessor">#3: res/menu/question_edit.xml</span></span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt d badging /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight groovy"><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></pre></td><td class="code"><pre><span class="line"><span class="number">2</span>|root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt d badging /</span>data<span class="regexp">/app/</span>com.zhihu.android-<span class="number">2</span>/base.apk</span><br><span class="line"><span class="string">package:</span> name=<span class="string">'com.zhihu.android'</span> versionCode=<span class="string">'307'</span> versionName=<span class="string">'3.2.0'</span> platformBuildVersionName=<span class="string">'6.0-2438415'</span></span><br><span class="line"><span class="string">sdkVersion:</span><span class="string">'15'</span></span><br><span class="line"><span class="string">targetSdkVersion:</span><span class="string">'23'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.READ_EXTERNAL_STORAGE'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.WRITE_EXTERNAL_STORAGE'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.NFC'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.RECEIVE_BOOT_COMPLETED'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.DOWNLOAD_WITHOUT_NOTIFICATION'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.ACCESS_NETWORK_STATE'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.INTERNET'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.ACCESS_WIFI_STATE'</span></span><br><span class="line">application-<span class="string">label:</span><span class="string">'知乎'</span></span><br><span class="line">...</span><br><span class="line">application-icon-<span class="number">120</span>:<span class="string">'res/mipmap-mdpi-v4/ic_launcher.png'</span></span><br><span class="line">application-icon-<span class="number">160</span>:<span class="string">'res/mipmap-mdpi-v4/ic_launcher.png'</span></span><br><span class="line">application-icon-<span class="number">213</span>:<span class="string">'res/mipmap-hdpi-v4/ic_launcher.png'</span></span><br><span class="line">application-icon-<span class="number">240</span>:<span class="string">'res/mipmap-hdpi-v4/ic_launcher.png'</span></span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt d permissions /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight groovy"><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"><span class="number">2</span>|root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt d permissions /</span>data<span class="regexp">/app/</span>com.zhihu.android-<span class="number">2</span>/base.apk</span><br><span class="line"><span class="string">package:</span> com.zhihu.android</span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.READ_EXTERNAL_STORAGE'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.WRITE_EXTERNAL_STORAGE'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.NFC'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.RECEIVE_BOOT_COMPLETED'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.DOWNLOAD_WITHOUT_NOTIFICATION'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.ACCESS_NETWORK_STATE'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.INTERNET'</span></span><br><span class="line">uses-<span class="string">permission:</span> name=<span class="string">'android.permission.ACCESS_WIFI_STATE'</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt d resources /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight elixir"><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"><span class="number">2</span>|root<span class="variable">@shamu</span><span class="symbol">:/</span> <span class="comment"># aapt d resources /data/app/com.zhihu.android-2/base.apk</span></span><br><span class="line">竟然无输出结果</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt d configurations /data/app/com.zhihu.android-2/base.apk</p>
<figure class="highlight erlang"><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></pre></td><td class="code"><pre><span class="line">anydpi-v21</span><br><span class="line">nodpi-v4</span><br><span class="line">v21</span><br><span class="line">v23</span><br><span class="line">ldpi-v4</span><br><span class="line">mdpi-v4</span><br><span class="line">ldrtl-mdpi-v17</span><br><span class="line">tvdpi-v4</span><br><span class="line">hdpi-v4</span><br><span class="line">ldrtl-hdpi-v17</span><br><span class="line">xhdpi-v4</span><br><span class="line">ldrtl-xhdpi-v17</span><br><span class="line">xxhdpi-v4</span><br><span class="line">ldrtl-xxhdpi-v17</span><br><span class="line">xxxhdpi-v4</span><br><span class="line">ldrtl-xxxhdpi-v17</span><br><span class="line">xxxhdpi-v21</span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt d xmltree /data/app/com.zhihu.android-2/base.apk res/menu/question_edit.xml</p>
<figure class="highlight stylus"><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></pre></td><td class="code"><pre><span class="line">N: android=http:<span class="comment">//schemas.android.com/apk/res/android</span></span><br><span class="line"> N: app=http:<span class="comment">//schemas.android.com/apk/res-auto</span></span><br><span class="line"> E: <span class="tag">menu</span> (line=<span class="number">3</span>)</span><br><span class="line"> E: item (line=<span class="number">6</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">id</span><span class="params">(<span class="number">0</span>x010100d0)</span></span>=@<span class="number">0</span>x7f100258</span><br><span class="line"> A: android:<span class="function"><span class="title">title</span><span class="params">(<span class="number">0</span>x010101e1)</span></span>=@<span class="number">0</span>x7f090062</span><br><span class="line"> A: app:<span class="function"><span class="title">showAsAction</span><span class="params">(<span class="number">0</span>x7f0101ef)</span></span>=(type <span class="number">0</span>x11)<span class="number">0</span>x1</span><br><span class="line"> E: item (line=<span class="number">11</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">icon</span><span class="params">(<span class="number">0</span>x01010002)</span></span>=@<span class="number">0</span>x7f02009b</span><br><span class="line"> A: android:<span class="function"><span class="title">id</span><span class="params">(<span class="number">0</span>x010100d0)</span></span>=@<span class="number">0</span>x7f100278</span><br><span class="line"> A: android:<span class="function"><span class="title">title</span><span class="params">(<span class="number">0</span>x010101e1)</span></span>=@<span class="number">0</span>x7f090055</span><br><span class="line"> A: app:<span class="function"><span class="title">showAsAction</span><span class="params">(<span class="number">0</span>x7f0101ef)</span></span>=(type <span class="number">0</span>x11)<span class="number">0</span>x1</span><br><span class="line"> E: item (line=<span class="number">17</span>)</span><br><span class="line"> A: android:<span class="function"><span class="title">icon</span><span class="params">(<span class="number">0</span>x01010002)</span></span>=@<span class="number">0</span>x7f02009c</span><br><span class="line"> A: android:<span class="function"><span class="title">id</span><span class="params">(<span class="number">0</span>x010100d0)</span></span>=@<span class="number">0</span>x7f100259</span><br><span class="line"> A: android:<span class="function"><span class="title">title</span><span class="params">(<span class="number">0</span>x010101e1)</span></span>=@<span class="number">0</span>x7f09005c</span><br><span class="line"> A: app:<span class="function"><span class="title">showAsAction</span><span class="params">(<span class="number">0</span>x7f0101ef)</span></span>=(type <span class="number">0</span>x11)<span class="number">0</span>x1</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt d xmlstrings /data/app/com.zhihu.android-2/base.apk res/menu/question_edit.xml</p>
<figure class="highlight delphi"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">String</span> pool <span class="keyword">of</span> <span class="number">11</span> unique UTF-<span class="number">8</span> non-sorted strings, <span class="number">11</span> entries <span class="keyword">and</span> <span class="number">0</span> styles using <span class="number">228</span> bytes:</span><br><span class="line"><span class="keyword">String</span> <span class="string">#0</span>: id</span><br><span class="line"><span class="keyword">String</span> <span class="string">#1</span>: title</span><br><span class="line"><span class="keyword">String</span> <span class="string">#2</span>: showAsAction</span><br><span class="line"><span class="keyword">String</span> <span class="string">#3</span>: icon</span><br><span class="line"><span class="keyword">String</span> <span class="string">#4</span>: android</span><br><span class="line"><span class="keyword">String</span> <span class="string">#5</span>: http:<span class="comment">//schemas.android.com/apk/res/android</span></span><br><span class="line"><span class="keyword">String</span> <span class="string">#6</span>:</span><br><span class="line"><span class="keyword">String</span> <span class="string">#7</span>: app</span><br><span class="line"><span class="keyword">String</span> <span class="string">#8</span>: http:<span class="comment">//schemas.android.com/apk/res-auto</span></span><br><span class="line"><span class="keyword">String</span> <span class="string">#9</span>: menu</span><br><span class="line"><span class="keyword">String</span> <span class="string">#10</span>: item</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="aapt_p[ackage]_…">aapt p[ackage] …</h2><figure class="highlight prolog"><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></pre></td><td class="code"><pre><span class="line"><span class="atom">aapt</span> <span class="atom">p</span>[<span class="atom">ackage</span>] [-<span class="atom">d</span>][-<span class="atom">f</span>][-<span class="atom">m</span>][-<span class="atom">u</span>][-<span class="atom">v</span>][-<span class="atom">x</span>[ <span class="atom">extending</span>-<span class="atom">resource</span>-<span class="atom">id</span>]][-<span class="atom">z</span>][-<span class="name">M</span> <span class="name">AndroidManifest</span>.<span class="atom">xml</span>] \</span><br><span class="line"> [-<span class="number">0</span> <span class="atom">extension</span> [-<span class="number">0</span> <span class="atom">extension</span> ...]] [-<span class="atom">g</span> <span class="atom">tolerance</span>] [-<span class="atom">j</span> <span class="atom">jarfile</span>] \</span><br><span class="line"> [--<span class="atom">debug</span>-<span class="atom">mode</span>] [--<span class="atom">min</span>-<span class="atom">sdk</span>-<span class="atom">version</span> <span class="name">VAL</span>] [--<span class="atom">target</span>-<span class="atom">sdk</span>-<span class="atom">version</span> <span class="name">VAL</span>] \</span><br><span class="line"> [--<span class="atom">app</span>-<span class="atom">version</span> <span class="name">VAL</span>] [--<span class="atom">app</span>-<span class="atom">version</span>-<span class="atom">name</span> <span class="name">TEXT</span>] [--<span class="atom">custom</span>-<span class="atom">package</span> <span class="name">VAL</span>] \</span><br><span class="line"> [--<span class="atom">rename</span>-<span class="atom">manifest</span>-<span class="atom">package</span> <span class="name">PACKAGE</span>] \</span><br><span class="line"> [--<span class="atom">rename</span>-<span class="atom">instrumentation</span>-<span class="atom">target</span>-<span class="atom">package</span> <span class="name">PACKAGE</span>] \</span><br><span class="line"> [--<span class="atom">utf16</span>] [--<span class="atom">auto</span>-<span class="atom">add</span>-<span class="atom">overlay</span>] \</span><br><span class="line"> [--<span class="atom">max</span>-<span class="atom">res</span>-<span class="atom">version</span> <span class="name">VAL</span>] \</span><br><span class="line"> [-<span class="name">I</span> <span class="atom">base</span>-<span class="atom">package</span> [-<span class="name">I</span> <span class="atom">base</span>-<span class="atom">package</span> ...]] \</span><br><span class="line"> [-<span class="name">A</span> <span class="atom">asset</span>-<span class="atom">source</span>-<span class="atom">dir</span>] [-<span class="name">G</span> <span class="atom">class</span>-<span class="atom">list</span>-<span class="atom">file</span>] [-<span class="name">P</span> <span class="atom">public</span>-<span class="atom">definitions</span>-<span class="atom">file</span>] \</span><br><span class="line"> [-<span class="name">S</span> <span class="atom">resource</span>-<span class="atom">sources</span> [-<span class="name">S</span> <span class="atom">resource</span>-<span class="atom">sources</span> ...]] \</span><br><span class="line"> [-<span class="name">F</span> <span class="atom">apk</span>-<span class="atom">file</span>] [-<span class="name">J</span> <span class="name">R</span>-<span class="atom">file</span>-<span class="atom">dir</span>] \</span><br><span class="line"> [--<span class="atom">product</span> <span class="atom">product1</span>,<span class="atom">product2</span>,...] \</span><br><span class="line"> [-<span class="atom">c</span> <span class="name">CONFIGS</span>] [--<span class="atom">preferred</span>-<span class="atom">density</span> <span class="name">DENSITY</span>] \</span><br><span class="line"> [--<span class="atom">split</span> <span class="name">CONFIGS</span> [--<span class="atom">split</span> <span class="name">CONFIGS</span>]] \</span><br><span class="line"> [--<span class="atom">feature</span>-<span class="atom">of</span> <span class="atom">package</span> [--<span class="atom">feature</span>-<span class="atom">after</span> <span class="atom">package</span>]] \</span><br><span class="line"> [<span class="atom">raw</span>-<span class="atom">files</span>-<span class="atom">dir</span> [<span class="atom">raw</span>-<span class="atom">files</span>-<span class="atom">dir</span>] ...] \</span><br><span class="line"> [--<span class="atom">output</span>-<span class="atom">text</span>-<span class="atom">symbols</span> <span class="name">DIR</span>]</span><br></pre></td></tr></table></figure>
<p>打包Android资源。它将读取通过<code>-M</code>、<code>-A</code>、<code>-S</code>或<code>raw-files-dir</code>参数指定的资产和资源。<code>-J</code>、<code>-P</code>、<code>-F</code>和<code>-R</code>选项控制输出哪些文件。</p>
<h2 id="aapt_r[emove]_…">aapt r[emove] …</h2><p><code>aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]</code>,移除归档文件中指定的文件。</p>
<ol>
<li><p>aapt r /data/app/com.jiongbull.art.note-1/base.apk res/layout/activity_g.xml </p>
<figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">127</span>|root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt r /</span>data<span class="regexp">/app/</span>com.jiongbull.art.note-<span class="number">1</span><span class="regexp">/base.apk res/</span>layout/activity_g.xml <</span><br></pre></td></tr></table></figure>
</li>
<li><p>aapt r -v /data/app/com.jiongbull.art.note-1/base.apk res/layout/activity_g.xml </p>
<figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">127</span>|root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt r -v /</span>data<span class="regexp">/app/</span>com.jiongbull.art.note-<span class="number">1</span><span class="regexp">/base.apk res/</span>layout/activity_b.xml</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="aapt_a[dd]_…">aapt a[dd] …</h2><p><code>aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]</code>,把指定的文件添加到归档文件中。</p>
<p>aapt a -v /data/app/com.jiongbull.art.note-1/base.apk /storage/emulated/0/deviceid.txt<br><figure class="highlight groovy"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">127</span>|root<span class="annotation">@shamu</span>:<span class="regexp">/ # aapt a -v /</span>data<span class="regexp">/app/</span>com.jiongbull.art.note-<span class="number">1</span><span class="regexp">/base.apk /</span>storage<span class="regexp">/emulated/</span><span class="number">0</span><span class="regexp">/deviceid.txt /</span>storage<span class="regexp">/emulated/</span><span class="number">0</span>/deviceid.txt</span><br></pre></td></tr></table></figure></p>
<h2 id="appt_c[runch]_…">appt c[runch] …</h2><p><code>aapt c[runch] [-v] -S resource-sources ... -C output-folder ...</code>,对在一个或多个资源文件夹里的PNG文件进行预处理并保存到指定的文件夹中。</p>
<p>aapt c -S input -C output<br><figure class="highlight elixir"><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">root<span class="variable">@shamu</span><span class="symbol">:/storage/emulated/</span><span class="number">0</span> <span class="comment"># aapt c -S input -C output</span></span><br><span class="line"><span class="constant">Crunching PNG Files </span><span class="keyword">in</span> source <span class="symbol">dir:</span> input</span><br><span class="line"><span class="constant">To </span>destination <span class="symbol">dir:</span> output</span><br></pre></td></tr></table></figure></p>
<h2 id="aapt_s[ingleCrunch]_…">aapt s[ingleCrunch] …</h2><p><code>aapt s[ingleCrunch] [-v] -i input-file -o outputfile</code>,对单一PNG文件进行预处理。</p>
<p>aapt s -v -i logo.png -o output/logo.png<br><figure class="highlight elixir"><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"><span class="number">139</span>|root<span class="variable">@shamu</span><span class="symbol">:/storage/emulated/</span><span class="number">0</span> <span class="comment"># aapt s -v -i logo.png -o output/logo.png</span></span><br><span class="line"><span class="constant">Crunching </span>single <span class="constant">PNG </span><span class="symbol">file:</span> logo.png</span><br><span class="line"> <span class="constant">Output </span><span class="symbol">file:</span> output/logo.png</span><br><span class="line"><span class="constant">Processing </span>image to <span class="symbol">cache:</span> logo.png => output/logo.png</span><br></pre></td></tr></table></figure></p>
<h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="adb shell" scheme="http://jiongbull.com/tags/adb-shell/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
<category term="adb" scheme="http://jiongbull.com/categories/Android/adb/"/>
</entry>
<entry>
<title><![CDATA[启用网络ADB调试]]></title>
<link href="http://jiongbull.com/2016/04/06/%E5%90%AF%E7%94%A8%E7%BD%91%E7%BB%9CADB%E8%B0%83%E8%AF%95/"/>
<id>http://jiongbull.com/2016/04/06/启用网络ADB调试/</id>
<published>2016-04-06T11:27:55.000Z</published>
<updated>2016-05-10T15:07:33.669Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<h2 id="激活开发者选项菜单">激活开发者选项菜单</h2><p><code>开发者选项</code>菜单默认是隐藏的,我们需要激活该菜单,进入<code>设置</code> → <code>关于手机</code>,点击七次<code>版本号</code>,返回<code>设置</code>,就能看到<code>开发者选项</code>了。</p>
<h2 id="打开网络ADB调试">打开网络ADB调试</h2><p>进入<code>开发者选项</code>,找到<code>调试</code>模块,打开<code>Android 调试</code>和<code>网络ADB调试</code>选项。</p>
<p><img src="http://7xize8.com1.z0.glb.clouddn.com/net_adb/developer_menu.png" alt="开发者选项菜单"></p>
<h2 id="连接设备">连接设备</h2><p>在<code>开发者选项</code>菜单里的<code>网络ADB调试</code>选项下可以看到当前设备的IP地址和端口号,例如192.168.31.228:5555,使用<code>adb connect</code>命令连接设备。</p>
<blockquote>
<p>设备与主机需要在同一网段里,否则无法使用网络ADB调试</p>
</blockquote>
<figure class="highlight livescript"><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"><span class="attribute">D</span>:<span class="string">\Code\Git>adb</span> connect <span class="number">192.168</span>.<span class="number">31.228</span>:<span class="number">5555</span></span><br><span class="line">connected <span class="keyword">to</span> <span class="number">192.168</span>.<span class="number">31.228</span>:<span class="number">5555</span></span><br></pre></td></tr></table></figure>
<h2 id="查看连接">查看连接</h2><p>使用<code>adb devices</code>命令查看连接的设备。</p>
<figure class="highlight capnproto"><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">D:\Code\Git>adb devices</span><br><span class="line"><span class="built_in">List</span> <span class="keyword">of</span> devices attached</span><br><span class="line"><span class="number">192.168</span>.<span class="number">31.228</span>:<span class="number">5555</span> device</span><br></pre></td></tr></table></figure>
<h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="adb shell" scheme="http://jiongbull.com/tags/adb-shell/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
<category term="adb" scheme="http://jiongbull.com/categories/Android/adb/"/>
</entry>
<entry>
<title><![CDATA[adb shell命令]]></title>
<link href="http://jiongbull.com/2016/04/02/adb%20shell%E5%91%BD%E4%BB%A4/"/>
<id>http://jiongbull.com/2016/04/02/adb shell命令/</id>
<published>2016-04-02T14:32:11.000Z</published>
<updated>2016-05-10T15:04:40.179Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<h2 id="如何查看命令">如何查看命令</h2><figure class="highlight less"><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></pre></td><td class="code"><pre><span class="line"><span class="attribute">D</span>:\Code\Git>adb shell</span><br><span class="line">root<span class="variable">@generic_x86_64</span>:/ # ls /system/bin</span><br><span class="line">aapt</span><br><span class="line">adb</span><br><span class="line">am</span><br><span class="line">app_process</span><br><span class="line">app_process32</span><br><span class="line">app_process64</span><br><span class="line">...</span><br></pre></td></tr></table></figure>
<h2 id="命令大全">命令大全</h2><h3 id="aapt">aapt</h3><p>Android Asset Packaging Tool,可以查看、创建、更新或删除归档文件(zip、jar或apk),可以将资源文件编译成二进制文件,详情见<a href="/2016/04/08/aapt使用说明">aapt使用说明</a></p>
<h3 id="adb">adb</h3><p>Android Debug Bridge,android调试桥,详情见<a href="/2016/03/17/adb命令">adb命令</a></p>
<h3 id="am">am</h3><p>Activity Manager,activity管理器,可以启动activity、启动service、发送广播、停止进程等,详情见<a href="/2016/04/10/am使用说明">am使用说明</a>。</p>
<h3 id="app_process、app_process32、app_process64">app_process、app_process32、app_process64</h3><p>运行java程序,参考<code>am</code>的内部实现。</p>
<figure class="highlight stylus"><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">base=/system</span><br><span class="line">export CLASSPATH=<span class="variable">$base</span>/framework/am<span class="class">.jar</span></span><br><span class="line">exec app_process <span class="variable">$base</span>/bin com<span class="class">.android</span><span class="class">.commands</span><span class="class">.am</span><span class="class">.Am</span> <span class="string">"$@"</span></span><br></pre></td></tr></table></figure>
<h3 id="applypatch、applypatch_static">applypatch、applypatch_static</h3><p>增量升级相关。</p>
<h3 id="appops">appops</h3><p>Application Operations,应用权限管理,详情见<a href="/2016/4/19/appops使用说明">appops使用说明</a></p>
<h3 id="appwidget">appwidget</h3><h3 id="atrace">atrace</h3><h3 id="bcc">bcc</h3><h3 id="bdt">bdt</h3><h2 id="分享与支持">分享与支持</h2><ul>
<li>如果这篇文章对你有帮助,请分享下面的链接让更多人受益。</li>
<li>更多支持,请点<a href="/about">这里</a>。</li>
</ul>
]]></content>
<summary type="html">
<![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jion]]>
</summary>
<category term="adb shell" scheme="http://jiongbull.com/tags/adb-shell/"/>
<category term="Android" scheme="http://jiongbull.com/categories/Android/"/>
<category term="adb" scheme="http://jiongbull.com/categories/Android/adb/"/>
</entry>
<entry>
<title><![CDATA[adb命令]]></title>
<link href="http://jiongbull.com/2016/03/17/adb%E5%91%BD%E4%BB%A4/"/>
<id>http://jiongbull.com/2016/03/17/adb命令/</id>
<published>2016-03-17T15:39:22.000Z</published>
<updated>2016-05-10T15:04:53.385Z</updated>
<content type="html"><![CDATA[<blockquote>
<p>来源:<a href="http://jiongbull.com" target="_blank" rel="external">JiongBull’s Blog</a><br> 微博:<a href="http://weibo.com/jiongbull" target="_blank" rel="external">@JiongBull</a><br> GitHub:<a href="https://github.com/JiongBull" target="_blank" rel="external">JiongBull</a></p>
</blockquote>
<h2 id="如何查看命令">如何查看命令</h2><figure class="highlight stata"><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"><span class="keyword">D</span>:\Code\Git>adb <span class="keyword">help</span></span><br><span class="line">...</span><br></pre></td></tr></table></figure>
<h2 id="设备连接相关命令">设备连接相关命令</h2><h3 id="-a">-a</h3><p>命令针对所有设备,需要和其他命令组合使用。</p>
<h3 id="-d">-d</h3><p>命令针对真机,需要和其他命令组合使用。</p>
<h3 id="-e">-e</h3><p>命令针对虚拟机,需要和其他命令组合使用。</p>
<h3 id="-s_(specific_device)">-s (specific device)</h3><p>命令针对指定设备,需要和其他命令组合使用。</p>
<h3 id="-p_(product_name_or_path)">-p (product name or path)</h3><p>命令针对指定名称的产品或路径,需要和其他命令组合使用。</p>
<h3 id="-H">-H</h3><p>命令针对指定名称的server,默认是localhost,需要和其他命令组合使用。</p>
<h3 id="-P">-P</h3><p>命令针对指定端口的server,默认是5037,需要和其他命令组合使用。</p>
<h3 id="adb_devices">adb devices</h3><p>显示所有连接的设备,<code>-l</code>显示设备的全限定名。</p>
<ol>
<li><p>adb devices</p>
<figure class="highlight capnproto"><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">D:\Code\Git>adb devices</span><br><span class="line"><span class="built_in">List</span> <span class="keyword">of</span> devices attached</span><br><span class="line"><span class="number">192.168</span>.<span class="number">46.101</span>:<span class="number">5555</span> device</span><br><span class="line"><span class="number">192.168</span>.<span class="number">46.102</span>:<span class="number">5555</span> device</span><br></pre></td></tr></table></figure>
</li>
<li><p>adb devices -l</p>
<figure class="highlight groovy"><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"><span class="string">D:</span>\Code\Git>adb devices -l</span><br><span class="line">List of devices attached</span><br><span class="line"><span class="number">192.168</span>.46.101:<span class="number">5555</span> device <span class="string">product:</span>vbox86p <span class="string">model:</span>Google_Nexus_5___4_4_4___API_19___1080x1920 <span class="string">device:</span>vbox86p</span><br><span class="line"><span class="number">192.168</span>.46.102:<span class="number">5555</span> device <span class="string">product:</span>vbox86p <span class="string">model:</span>Google_Nexus_6___5_0_0___API_21___1440x2560 <span class="string">device:</span>vbox86p</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="adb_connect_(host)[:(port)]">adb connect (host)[:(port)]</h3><p>通过TCP/IP连接设备,如果没有指定端口,则默认使用<code>5555</code>端口。</p>
<ol>
<li><p>adb connect 192.168.46.101</p>
<figure class="highlight livescript"><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"><span class="attribute">D</span>:<span class="string">\Code\Git>adb</span> connect <span class="number">192.168</span>.<span class="number">46.101</span></span><br><span class="line">already connected <span class="keyword">to</span> <span class="number">192.168</span>.<span class="number">46.101</span>:<span class="number">5555</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>adb connect 192.168.46.101:5555</p>
<figure class="highlight livescript"><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"><span class="attribute">D</span>:<span class="string">\Code\Git>adb</span> connect <span class="number">192.168</span>.<span class="number">46.101</span>:<span class="number">5555</span></span><br><span class="line">already connected <span class="keyword">to</span> <span class="number">192.168</span>.<span class="number">46.101</span>:<span class="number">5555</span></span><br></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="adb_disconnect_[(host)[:(port)]]">adb disconnect [(host)[:(port)]]</h3><p>断开TCP/IP连接的设备,如果没有指定端口,则默认使用<code>5555</code>端口,如果没有指定任何参数会断开所有通过TCP/IP连接的设备。</p>
<ol>
<li><p>adb disconnect 192.168.46.101</p>
<figure class="highlight tex"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">D:<span class="command">\Code</span><span class="command">\Git</span>>adb disconnect 192.168.46.101</span><br></pre></td></tr></table></figure>
</li>
<li><p>adb disconnect 192.168.46.101:5555</p>
<figure class="highlight tex"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">D:<span class="command">\Code</span><span class="command">\Git</span>>adb disconnect 192.168.46.101:5555</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h2 id="设备命令">设备命令</h2><h3 id="adb_push_[-p]_(local)_(remote)">adb push [-p] (local) (remote)</h3><p>把文件/文件夹拷贝到设备中,<code>-p</code>可以显示传输进度。</p>
<ol>
<li><p>adb push C:\Users\JiongBull\Desktop\logo.png /storage/sdcard0/</p>
<figure class="highlight tex"><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">D:<span class="command">\Code</span><span class="command">\Git</span>>adb push C:<span class="command">\Users</span><span class="command">\JiongBull</span><span class="command">\Desktop</span><span class="command">\logo</span>.png /storage/sdcard0/</span><br><span class="line">79 KB/s (6663 bytes in 0.081s)</span><br></pre></td></tr></table></figure>
</li>
<li><p>adb push -p C:\Users\JiongBull\Desktop\logo.png /storage/sdcard0/</p>
<figure class="highlight tex"><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">D:<span class="command">\Code</span><span class="command">\Git</span>>adb push -p C:<span class="command">\Users</span><span class="command">\JiongBull</span><span class="command">\Desktop</span><span class="command">\logo</span>.png /storage/sdcard0/</span><br><span class="line">Transferring: 6663/6663 (100<span class="comment">%)</span></span><br><span class="line">86 KB/s (6663 bytes in 0.075s)</span><br></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="adb_pull_[-p]_[-a]_(remote)_[(local)]">adb pull [-p] [-a] (remote) [(local)]</h3><p>从设备中拷贝文件/文件夹。</p>
<ul>
<li><code>-p</code> 显示传输进度</li>
<li><code>-a</code> 拷贝文件的时间信息和模式</li>
</ul>
<ol>
<li><p>adb pull /storage/sdcard0/logo.png D:\logo.png</p>
<figure class="highlight stylus"><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">D:\Code\Git>adb pull /storage/sdcard0/logo<span class="class">.png</span> D:\logo<span class="class">.png</span></span><br><span class="line"><span class="number">381</span> KB/s (<span class="number">6663</span> bytes <span class="keyword">in</span> <span class="number">0.017s</span>)</span><br></pre></td></tr></table></figure>
</li>
<li><p>adb pull -p /storage/sdcard0/logo.png D:\logo.png</p>
<figure class="highlight stylus"><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">D:\Code\Git>adb pull -<span class="tag">p</span> /storage/sdcard0/logo<span class="class">.png</span> D:\logo<span class="class">.png</span></span><br><span class="line">Transferring: <span class="number">6663</span>/<span class="number">6663</span> (<span class="number">100%</span>)</span><br><span class="line"><span class="number">282</span> KB/s (<span class="number">6663</span> bytes <span class="keyword">in</span> <span class="number">0.023s</span>)</span><br></pre></td></tr></table></figure>
</li>
<li><p>adb pull -a /storage/sdcard0/logo.png D:\logo.png</p>
<figure class="highlight stylus"><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">D:\Code\Git>adb pull -<span class="tag">a</span> /storage/sdcard0/logo<span class="class">.png</span> D:\logo<span class="class">.png</span></span><br><span class="line"><span class="number">418</span> KB/s (<span class="number">6663</span> bytes <span class="keyword">in</span> <span class="number">0.015s</span>)</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p><img src="http://7xize8.com1.z0.glb.clouddn.com/adb/pull_remote.png" alt="adb pull remote"><br><img src="http://7xize8.com1.z0.glb.clouddn.com/adb/pull_local.png" alt="adb pull local"></p>
<h3 id="adb_sync_[_(directory)_]">adb sync [ (directory) ]</h3><p>把Android设备上<code>/system</code>和<code>/data</code>目录中与主机目录中不一致的内容同步到主机上。使用前需要设置主机目录地址的环境变量。</p>
<ol>
<li><p>adb sync(未设置环境变量)</p>
<figure class="highlight puppet"><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"><span class="constant">D</span>:\<span class="constant">Code</span>\<span class="constant">Git</span>>adb sync</span><br><span class="line">adb: <span class="constant">Product</span> <span class="literal">directory</span> not specified; <span class="literal">use</span> -p <span class="keyword">or</span> <span class="keyword">define</span> <span class="constant">A</span>NDROID_PRODUCT_OUT</span><br></pre></td></tr></table></figure>
</li>
<li><p>set ANDROID_PRODUCT_OUT = (PATH)</p>
<figure class="highlight tex"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">D:<span class="command">\Code</span><span class="command">\Git</span>>set ANDROID_PRODUCT_OUT = D:<span class="command">\Data</span><span class="command">\Android</span></span><br></pre></td></tr></table></figure>
</li>
<li><p>adb sync(已设置环境变量)</p>
<figure class="highlight groovy"><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"><span class="string">D:</span>\Code\Git>adb sync</span><br><span class="line">syncing /system...</span><br><span class="line"><span class="string">push:</span> <span class="string">D:</span>\Data\Android\system<span class="regexp">/app/</span>WAPPushManager.apk -> <span class="regexp">/system/</span>app/WAPPushManager.apk</span><br><span class="line">...</span><br></pre></td></tr></table></figure>
</li>
</ol>
<p><img src="http://7xize8.com1.z0.glb.clouddn.com/adb/sync_system.png" alt="adb sync system"><br><img src="http://7xize8.com1.z0.glb.clouddn.com/adb/sync_data.png" alt="adb sync data"></p>
<h3 id="adb_shell">adb shell</h3><p>调用远程shell</p>
<figure class="highlight less"><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"><span class="attribute">D</span>:\Code\Git>adb shell</span><br><span class="line">root<span class="variable">@vbox86p</span>:/ #</span><br></pre></td></tr></table></figure>
<h3 id="adb_shell_(command)">adb shell (command)</h3><p>调用远程shell命令。</p>
<figure class="highlight less"><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"><span class="attribute">D</span>:\Code\Git>adb shell su</span><br><span class="line">root<span class="variable">@vbox86p</span>:/ #</span><br></pre></td></tr></table></figure>
<h3 id="adb_emu_(command)">adb emu (command)</h3><p>运行模拟器命令。</p>
<figure class="highlight tex"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">D:<span class="command">\Code</span><span class="command">\Git</span>>adb emu</span><br></pre></td></tr></table></figure>
<h3 id="adb_logcat_[_(filter-spec)_]">adb logcat [ (filter-spec) ]</h3><p>查看设备日志。</p>