-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
442 lines (298 loc) · 42.1 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fccity's blog</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="what makes you beautiful">
<meta property="og:type" content="website">
<meta property="og:title" content="fccity's blog">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="fccity's blog">
<meta property="og:description" content="what makes you beautiful">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="fccity's blog">
<meta name="twitter:description" content="what makes you beautiful">
<link rel="icon" href="/favicon.png">
<link rel="stylesheet" href="/css/style.css" type="text/css">
<link href="//fonts.useso.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
<!--[if lt IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.min.js"></script><![endif]-->
</head>
<body>
<div id="container">
<div id="wrap">
<header id="header">
<div id="banner"></div>
<div id="header-outer" class="outer">
<div id="header-title" class="inner">
<h1 id="logo-wrap">
<a href="/" id="logo">fccity's blog</a>
</h1>
<h2 id="subtitle-wrap">
<a href="/" id="subtitle">what makes you beautiful</a>
</h2>
</div>
<div id="header-inner" class="inner">
<nav id="main-nav">
<a id="main-nav-toggle" class="nav-icon"></a>
<a class="main-nav-link" href="/">主页</a>
<a class="main-nav-link" href="/archives">归档</a>
</nav>
<nav id="sub-nav">
<a id="nav-search-btn" class="nav-icon" title="Search"></a>
</nav>
<div id="search-form-wrap">
<form action="http://www.baidu.com/baidu" method="get" accept-charset="utf-8" class="search-form">
<input type="search" name="word" maxlength="20" class="search-form-input" placeholder="Search">
<input type="submit" value="" class="search-form-submit">
<input name=tn type=hidden value="bds">
<input name=cl type=hidden value="3">
<input name=ct type=hidden value="2097152">
<input type="hidden" name="si" value="yoursite.com">
</form>
</div>
</div>
</div>
</header>
<div class="outer">
<section id="main">
<article id="post-Android-代码混淆语法" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2016/05/19/Android-代码混淆语法/" class="article-date">
<time datetime="2016-05-19T01:23:57.000Z" itemprop="datePublished">2016-05-19</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2016/05/19/Android-代码混淆语法/">Android 代码混淆语法</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h4 id="指定代码的压缩级别"><a href="#指定代码的压缩级别" class="headerlink" title="指定代码的压缩级别"></a>指定代码的压缩级别</h4><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-optimizationpasses <span class="number">5</span></span><br></pre></td></tr></table></figure>
<h4 id="包明不混合大小写"><a href="#包明不混合大小写" class="headerlink" title="包明不混合大小写"></a>包明不混合大小写</h4><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="deletion">-dontusemixedcaseclassnames</span></span><br></pre></td></tr></table></figure>
<h4 id="不去忽略非公共的库类"><a href="#不去忽略非公共的库类" class="headerlink" title="不去忽略非公共的库类"></a>不去忽略非公共的库类</h4><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="deletion">-dontskipnonpubliclibraryclasses</span></span><br></pre></td></tr></table></figure>
<h4 id="优化不优化输入的类文件"><a href="#优化不优化输入的类文件" class="headerlink" title="优化不优化输入的类文件"></a>优化不优化输入的类文件</h4><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="deletion">-dontoptimize</span></span><br></pre></td></tr></table></figure>
<h4 id="预校验"><a href="#预校验" class="headerlink" title="预校验"></a>预校验</h4><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="deletion">-dontpreverify</span></span><br></pre></td></tr></table></figure>
<h4 id="混淆时是否记录日志"><a href="#混淆时是否记录日志" class="headerlink" title="混淆时是否记录日志"></a>混淆时是否记录日志</h4><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="deletion">-verbose</span></span><br></pre></td></tr></table></figure>
<h4 id="混淆时所采用的算法"><a href="#混淆时所采用的算法" class="headerlink" title="混淆时所采用的算法"></a>混淆时所采用的算法</h4><figure class="highlight coffeescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-optimizations !code<span class="regexp">/simplification/arithmetic,!field/</span>*,!<span class="class"><span class="keyword">class</span>/<span class="title">merging</span>/*</span></span><br></pre></td></tr></table></figure>
<h4 id="保护注解"><a href="#保护注解" class="headerlink" title="保护注解"></a>保护注解</h4><figure class="highlight gherkin"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-keepattributes <span class="keyword">*</span>Annotation<span class="keyword">*</span></span><br></pre></td></tr></table></figure>
<h4 id="保持哪些类不被混淆"><a href="#保持哪些类不被混淆" class="headerlink" title="保持哪些类不被混淆"></a>保持哪些类不被混淆</h4><figure class="highlight monkey"><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">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">app</span>.<span class="title">Fragment</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">app</span>.<span class="title">Activity</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">app</span>.<span class="title">Application</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">app</span>.<span class="title">Service</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">content</span>.<span class="title">BroadcastReceiver</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">content</span>.<span class="title">ContentProvider</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">app</span>.<span class="title">backup</span>.<span class="title">BackupAgentHelper</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">preference</span>.<span class="title">Preference</span></span></span><br><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">com</span>.<span class="title">android</span>.<span class="title">vending</span>.<span class="title">licensing</span>.<span class="title">ILicensingService</span></span></span><br></pre></td></tr></table></figure>
<h4 id="如果有引用v4包可以添加下面这行"><a href="#如果有引用v4包可以添加下面这行" class="headerlink" title="如果有引用v4包可以添加下面这行"></a>如果有引用v4包可以添加下面这行</h4><figure class="highlight monkey"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-keep <span class="keyword">public</span> <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">support</span>.<span class="title">v4</span>.<span class="title">app</span>.<span class="title">Fragment</span></span></span><br></pre></td></tr></table></figure>
<h4 id="apk-包内所有-class-的内部结构"><a href="#apk-包内所有-class-的内部结构" class="headerlink" title="apk 包内所有 class 的内部结构"></a>apk 包内所有 class 的内部结构</h4><figure class="highlight ceylon"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-dump <span class="keyword">class</span><span class="number">_f</span>iles.txt</span><br></pre></td></tr></table></figure>
<h4 id="未混淆的类和成员"><a href="#未混淆的类和成员" class="headerlink" title="未混淆的类和成员"></a>未混淆的类和成员</h4><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">-printseeds</span> <span class="tag">seeds</span><span class="class">.txt</span></span><br></pre></td></tr></table></figure>
<h4 id="列出从-apk-中删除的代码"><a href="#列出从-apk-中删除的代码" class="headerlink" title="列出从 apk 中删除的代码"></a>列出从 apk 中删除的代码</h4><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">-printusage</span> <span class="tag">unused</span><span class="class">.txt</span></span><br></pre></td></tr></table></figure>
<h4 id="混淆前后的映射"><a href="#混淆前后的映射" class="headerlink" title="混淆前后的映射"></a>混淆前后的映射</h4><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">-printmapping</span> <span class="tag">mapping</span><span class="class">.txt</span></span><br></pre></td></tr></table></figure>
<h4 id="保持-native-方法不被混淆"><a href="#保持-native-方法不被混淆" class="headerlink" title="保持 native 方法不被混淆"></a>保持 native 方法不被混淆</h4><figure class="highlight haml"><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="ruby">keepclasseswithmembernames <span class="class"><span class="keyword">class</span> * {</span></span><br><span class="line"></span> native \<methods\>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="保持自定义控件类不被混淆"><a href="#保持自定义控件类不被混淆" class="headerlink" title="保持自定义控件类不被混淆"></a>保持自定义控件类不被混淆</h4><figure class="highlight haml"><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="ruby">keepclasseswithmembers <span class="class"><span class="keyword">class</span> * {</span></span><br><span class="line"></span> public \<init\>(android.content.Context, android.util.AttributeSet);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="保持自定义控件类不被混淆-1"><a href="#保持自定义控件类不被混淆-1" class="headerlink" title="保持自定义控件类不被混淆"></a>保持自定义控件类不被混淆</h4><figure class="highlight axapta"><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">-keepclasseswithmembers <span class="class"><span class="keyword">class</span> * </span>{</span><br><span class="line"> <span class="keyword">public</span> \<init\>(android.content.Context, android.util.AttributeSet, <span class="keyword">int</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="保持自定义控件类不被混淆-2"><a href="#保持自定义控件类不被混淆-2" class="headerlink" title="保持自定义控件类不被混淆"></a>保持自定义控件类不被混淆</h4><figure class="highlight actionscript"><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">-keepclassmembers <span class="class"><span class="keyword">class</span> * <span class="keyword">extends</span> <span class="title">android</span>.<span class="title">app</span>.<span class="title">Activity</span> </span>{</span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">void</span> *(android.view.View);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="保持-Parcelable-不被混淆"><a href="#保持-Parcelable-不被混淆" class="headerlink" title="保持 Parcelable 不被混淆"></a>保持 Parcelable 不被混淆</h4><figure class="highlight php"><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">-keep <span class="class"><span class="keyword">class</span> * <span class="keyword">implements</span> <span class="title">android</span>.<span class="title">os</span>.<span class="title">Parcelable</span> </span>{</span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">final</span> android.os.Parcelable<span class="variable">$Creator</span> *;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="保持-Serializable-不被混淆"><a href="#保持-Serializable-不被混淆" class="headerlink" title="保持 Serializable 不被混淆"></a>保持 Serializable 不被混淆</h4><figure class="highlight monkey"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-keepnames <span class="class"><span class="keyword">class</span> * <span class="keyword">implements</span> <span class="title">java</span>.<span class="title">io</span>.<span class="title">Serializable</span></span></span><br></pre></td></tr></table></figure>
<h4 id="保持-Serializable-不被混淆并且enum-类也不被混淆"><a href="#保持-Serializable-不被混淆并且enum-类也不被混淆" class="headerlink" title="保持 Serializable 不被混淆并且enum 类也不被混淆"></a>保持 Serializable 不被混淆并且enum 类也不被混淆</h4><figure class="highlight java"><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">-keepclassmembers <span class="class"><span class="keyword">class</span> * <span class="keyword">implements</span> <span class="title">java</span>.<span class="title">io</span>.<span class="title">Serializable</span> </span>{</span><br><span class="line"> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">long</span> serialVersionUID;</span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> java.io.ObjectStreamField[]() serialPersistentFields;</span><br><span class="line"> !<span class="keyword">static</span> !<span class="keyword">transient</span> \<fields\>;</span><br><span class="line"> !<span class="keyword">private</span> \<fields\>;</span><br><span class="line"> !<span class="keyword">private</span> \<methods\>;</span><br><span class="line"> <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">writeObject</span><span class="params">(java.io.ObjectOutputStream)</span></span>;</span><br><span class="line"> <span class="function"><span class="keyword">private</span> <span class="keyword">void</span> <span class="title">readObject</span><span class="params">(java.io.ObjectInputStream)</span></span>;</span><br><span class="line"> java.lang.<span class="function">Object <span class="title">writeReplace</span><span class="params">()</span></span>;</span><br><span class="line"> java.lang.<span class="function">Object <span class="title">readResolve</span><span class="params">()</span></span>;</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="不混淆资源类"><a href="#不混淆资源类" class="headerlink" title="不混淆资源类"></a>不混淆资源类</h4><figure class="highlight haml"><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">-<span class="ruby">keepclassmembers <span class="class"><span class="keyword">class</span> **.<span class="title">R</span>$* {</span></span><br><span class="line"></span> public static \<fields\>;</span><br><span class="line">}</span><br><span class="line">-<span class="ruby">keep <span class="class"><span class="keyword">class</span> **.<span class="title">R</span>$* -<span class="title">keep</span> <span class="title">class</span> <span class="title">org</span>.<span class="title">apache</span>.<span class="title">http</span>.** </span></span><br><span class="line"></span>-<span class="ruby">keep <span class="class"><span class="keyword">class</span> <span class="title">android</span>.<span class="title">support</span>.<span class="title">v7</span>.<span class="title">widget</span>.**{*;</span>}</span><br><span class="line"></span>-<span class="ruby">keep <span class="class"><span class="keyword">class</span> <span class="title">android</span>.<span class="title">support</span>.<span class="title">design</span>.**{*;</span>}</span><br><span class="line"></span>-<span class="ruby">keep public <span class="class"><span class="keyword">class</span> <span class="title">android</span>.<span class="title">support</span>.<span class="title">v7</span>.<span class="title">widget</span>.<span class="title">LinearLayoutManager</span></span></span><br><span class="line"></span></span><br><span class="line">-<span class="ruby">keep public <span class="class"><span class="keyword">class</span> * <span class="title">extends</span> <span class="title">android</span>.<span class="title">support</span>.<span class="title">v7</span>.<span class="title">widget</span>.<span class="title">CardView</span>$<span class="title">LayoutManager</span>{</span></span><br><span class="line"></span> public \<init\>(...);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="support-v4"><a href="#support-v4" class="headerlink" title="support-v4"></a>support-v4</h4><figure class="highlight gherkin"><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">-dontwarn android.support.v4.<span class="keyword">*</span><span class="keyword">*</span> </span><br><span class="line">-keep class android.support.v4.app.<span class="keyword">*</span><span class="keyword">*</span> { <span class="keyword">*</span>; }</span><br><span class="line">-keep interface android.support.v4.app.<span class="keyword">*</span><span class="keyword">*</span> { <span class="keyword">*</span>; }</span><br></pre></td></tr></table></figure>
<h4 id="support-v7"><a href="#support-v7" class="headerlink" title="support-v7"></a>support-v7</h4><figure class="highlight gherkin"><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">-dontwarn android.support.v7.<span class="keyword">*</span><span class="keyword">*</span> </span><br><span class="line">-keep class android.support.v7.internal.<span class="keyword">*</span><span class="keyword">*</span> { <span class="keyword">*</span>; }</span><br><span class="line">-keep interface android.support.v7.internal.<span class="keyword">*</span><span class="keyword">*</span> { <span class="keyword">*</span>; }</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2016/05/19/Android-代码混淆语法/" data-id="ciodm8x4s0000s7yzk0uujr9x" class="article-share-link" data-share="baidu" data-title="Android 代码混淆语法">分享到</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Android-混淆/">Android 混淆</a></li></ul>
</footer>
</div>
</article>
<article id="post-React-Native-运行-F8-2016-App-遇到的问题" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2016/05/16/React-Native-运行-F8-2016-App-遇到的问题/" class="article-date">
<time datetime="2016-05-16T14:40:25.000Z" itemprop="datePublished">2016-05-16</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2016/05/16/React-Native-运行-F8-2016-App-遇到的问题/">运行 F8 2016 App 遇到的问题</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<p>运行F8 App时遇到下面的报错信息:<br>‘Invariant Violation:Application * has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.’<br><img src="http://7xrz8w.com1.z0.glb.clouddn.com/f8app%E6%8A%A5%E9%94%99%E4%BF%A1%E6%81%AF.jpg" alt=""><br>经过一番谷歌之后,发现可能是由于终端同时运行了两个React Native引起的,于是在关闭终端,重启F8 App之后,便不再报错了。<br>以Android为例,每次React Native项目运行的时候<code>index.android.js</code>最后都要执行<code>AppRegistry.registerComponent</code>,这是注册应用的入口,这个应用名称要与MainActivity中<code>getMainComponentName</code>返回的名称保持一致,否则就会报这个错误。这时候出现这个问题的原因就是同一个终端中运行两个React Native导致的。</p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2016/05/16/React-Native-运行-F8-2016-App-遇到的问题/" data-id="ciodm8x5n0007s7yzag9cgivz" class="article-share-link" data-share="baidu" data-title="运行 F8 2016 App 遇到的问题">分享到</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Android-React-Native/">Android React Native</a></li></ul>
</footer>
</div>
</article>
<article id="post-vi快捷键" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2016/05/11/vi快捷键/" class="article-date">
<time datetime="2016-05-11T03:51:46.000Z" itemprop="datePublished">2016-05-11</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2016/05/11/vi快捷键/">vi快捷键</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<blockquote>
<p>vi有三种基本的工作模式:一般模式(指令模式)、文本输入模式、末行模式</p>
</blockquote>
<ul>
<li>一般模式->文本输入模式:输入a、i、o</li>
<li>一般模式->末行模式:输入“:”(要英文输入法)</li>
<li>文本输入模式->一般模式:按ESC</li>
<li>末行模式->一般模式:输入错误指令</li>
</ul>
<h3 id="一般模式-指令模式-:"><a href="#一般模式-指令模式-:" class="headerlink" title="一般模式(指令模式):"></a>一般模式(指令模式):</h3><h4 id="撤销上一次的修改:u"><a href="#撤销上一次的修改:u" class="headerlink" title="撤销上一次的修改:u"></a>撤销上一次的修改:<code>u</code></h4><h4 id="取消最近一次“撤销”:ctrl-r"><a href="#取消最近一次“撤销”:ctrl-r" class="headerlink" title="取消最近一次“撤销”:ctrl+r"></a>取消最近一次“撤销”:<code>ctrl+r</code></h4><h4 id="重复前一个操作:"><a href="#重复前一个操作:" class="headerlink" title="重复前一个操作:."></a>重复前一个操作:<code>.</code></h4><h4 id="定位到配对的括号:"><a href="#定位到配对的括号:" class="headerlink" title="定位到配对的括号:%"></a>定位到配对的括号:<code>%</code></h4><h4 id="定位到文件的末行:G"><a href="#定位到文件的末行:G" class="headerlink" title="定位到文件的末行:G"></a>定位到文件的末行:<code>G</code></h4><h4 id="定位到文件的首行:gg"><a href="#定位到文件的首行:gg" class="headerlink" title="定位到文件的首行:gg"></a>定位到文件的首行:<code>gg</code></h4><h4 id="跳转到第x行:xG"><a href="#跳转到第x行:xG" class="headerlink" title="跳转到第x行:xG"></a>跳转到第x行:<code>xG</code></h4><h4 id="删除光标所在的行:dd"><a href="#删除光标所在的行:dd" class="headerlink" title="删除光标所在的行:dd"></a>删除光标所在的行:<code>dd</code></h4><h4 id="连续删除x行:xdd"><a href="#连续删除x行:xdd" class="headerlink" title="连续删除x行:xdd"></a>连续删除x行:<code>xdd</code></h4><h4 id="复制光标所在行:yy"><a href="#复制光标所在行:yy" class="headerlink" title="复制光标所在行:yy"></a>复制光标所在行:<code>yy</code></h4><h4 id="连续复制x行:xyy"><a href="#连续复制x行:xyy" class="headerlink" title="连续复制x行:xyy"></a>连续复制x行:<code>xyy</code></h4><h4 id="粘贴:p"><a href="#粘贴:p" class="headerlink" title="粘贴:p"></a>粘贴:<code>p</code></h4><h4 id="向下新建一行:o"><a href="#向下新建一行:o" class="headerlink" title="向下新建一行:o"></a>向下新建一行:<code>o</code></h4><h4 id="向上新建一行:O"><a href="#向上新建一行:O" class="headerlink" title="向上新建一行:O"></a>向上新建一行:<code>O</code></h4><h4 id="删除光标所在的字符:x"><a href="#删除光标所在的字符:x" class="headerlink" title="删除光标所在的字符:x"></a>删除光标所在的字符:<code>x</code></h4><h4 id="绝对行首:0"><a href="#绝对行首:0" class="headerlink" title="绝对行首:0"></a>绝对行首:<code>0</code></h4><h4 id="行首的第一个非空白字符:shift"><a href="#行首的第一个非空白字符:shift" class="headerlink" title="行首的第一个非空白字符:shift+^"></a>行首的第一个非空白字符:<code>shift+^</code></h4><h4 id="绝对行尾:shift"><a href="#绝对行尾:shift" class="headerlink" title="绝对行尾:shift+$"></a>绝对行尾:<code>shift+$</code></h4><h4 id="行首转换到编辑模式:I"><a href="#行首转换到编辑模式:I" class="headerlink" title="行首转换到编辑模式:I"></a>行首转换到编辑模式:<code>I</code></h4><h4 id="行尾转换到编辑模式:A"><a href="#行尾转换到编辑模式:A" class="headerlink" title="行尾转换到编辑模式:A"></a>行尾转换到编辑模式:<code>A</code></h4><h4 id="移至下一个单词的词首:w"><a href="#移至下一个单词的词首:w" class="headerlink" title="移至下一个单词的词首:w"></a>移至下一个单词的词首:<code>w</code></h4><h4 id="移至下一个单词的词尾:e"><a href="#移至下一个单词的词尾:e" class="headerlink" title="移至下一个单词的词尾:e"></a>移至下一个单词的词尾:<code>e</code></h4><h4 id="移至上一个单词的词首:b"><a href="#移至上一个单词的词首:b" class="headerlink" title="移至上一个单词的词首:b"></a>移至上一个单词的词首:<code>b</code></h4><h4 id="打开光标处所指的文件:gf"><a href="#打开光标处所指的文件:gf" class="headerlink" title="打开光标处所指的文件:gf"></a>打开光标处所指的文件:<code>gf</code></h4><h4 id="关键字补齐:ctrl-n"><a href="#关键字补齐:ctrl-n" class="headerlink" title="关键字补齐:ctrl+n"></a>关键字补齐:<code>ctrl+n</code></h4><h4 id="按字符(行)选中文本:v-V(选择文本,按y进行复制,按d进行剪切,按p进行粘贴)"><a href="#按字符(行)选中文本:v-V(选择文本,按y进行复制,按d进行剪切,按p进行粘贴)" class="headerlink" title="按字符(行)选中文本:v|V(选择文本,按y进行复制,按d进行剪切,按p进行粘贴)"></a>按字符(行)选中文本:<code>v|V</code>(选择文本,按y进行复制,按d进行剪切,按p进行粘贴)</h4><h4 id="向后翻一屏:ctrl-f"><a href="#向后翻一屏:ctrl-f" class="headerlink" title="向后翻一屏:ctrl+f"></a>向后翻一屏:<code>ctrl+f</code></h4><h4 id="向前翻一屏:ctrl-b"><a href="#向前翻一屏:ctrl-b" class="headerlink" title="向前翻一屏:ctrl+b"></a>向前翻一屏:<code>ctrl+b</code></h4><h4 id="向前翻半屏:ctrl-u"><a href="#向前翻半屏:ctrl-u" class="headerlink" title="向前翻半屏:ctrl+u"></a>向前翻半屏:<code>ctrl+u</code></h4><h4 id="向后翻半屏:ctrl-d"><a href="#向后翻半屏:ctrl-d" class="headerlink" title="向后翻半屏:ctrl+d"></a>向后翻半屏:<code>ctrl+d</code></h4><h4 id="格式化代码:v或V选中"><a href="#格式化代码:v或V选中" class="headerlink" title="格式化代码:v或V选中="></a>格式化代码:<code>v或V选中=</code></h4><h4 id="全文格式化:gg-G"><a href="#全文格式化:gg-G" class="headerlink" title="全文格式化:gg=G"></a>全文格式化:<code>gg=G</code></h4><h3 id="末行模式:"><a href="#末行模式:" class="headerlink" title="末行模式:"></a>末行模式:</h3><h4 id="显示行号:set-number"><a href="#显示行号:set-number" class="headerlink" title="显示行号:set number"></a>显示行号:<code>set number</code></h4><h4 id="保存:w"><a href="#保存:w" class="headerlink" title="保存:w"></a>保存:<code>w</code></h4><h4 id="退出:q"><a href="#退出:q" class="headerlink" title="退出:q"></a>退出:<code>q</code></h4><h4 id="保存退出:wq"><a href="#保存退出:wq" class="headerlink" title="保存退出:wq"></a>保存退出:<code>wq</code></h4><h4 id="强制退出:q"><a href="#强制退出:q" class="headerlink" title="强制退出:q!"></a>强制退出:<code>q!</code></h4><h4 id="放弃所有未保存的修改-重新打开文件:e"><a href="#放弃所有未保存的修改-重新打开文件:e" class="headerlink" title="放弃所有未保存的修改,重新打开文件:e!"></a>放弃所有未保存的修改,重新打开文件:<code>e!</code></h4><h4 id="直接跳到第x行:x"><a href="#直接跳到第x行:x" class="headerlink" title="直接跳到第x行:x"></a>直接跳到第x行:<code>x</code></h4><h4 id="查找与替换-1-s-原来的字符串-新字符串-g"><a href="#查找与替换-1-s-原来的字符串-新字符串-g" class="headerlink" title="查找与替换:1,$s/原来的字符串/新字符串/g"></a>查找与替换:<code>1,$s/原来的字符串/新字符串/g</code></h4><h4 id="搜索关键字:-keyword(n向下查找;N向上查找)"><a href="#搜索关键字:-keyword(n向下查找;N向上查找)" class="headerlink" title="搜索关键字:/keyword(n向下查找;N向上查找)"></a>搜索关键字:<code>/keyword</code>(n向下查找;N向上查找)</h4><h4 id="多行注释使用-m-ns"><a href="#多行注释使用-m-ns" class="headerlink" title="多行注释使用:m,ns/^/#/"></a>多行注释使用:<code>m,ns/^/#/</code></h4>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2016/05/11/vi快捷键/" data-id="ciodm8x5l0006s7yzxdztdfgw" class="article-share-link" data-share="baidu" data-title="vi快捷键">分享到</a>
</footer>
</div>
</article>
<article id="post-谷歌官方todo-mvp解析" class="article article-type-post" itemscope itemprop="blogPost">
<div class="article-meta">
<a href="/2016/04/25/谷歌官方todo-mvp解析/" class="article-date">
<time datetime="2016-04-25T14:08:53.000Z" itemprop="datePublished">2016-04-25</time>
</a>
</div>
<div class="article-inner">
<header class="article-header">
<h1 itemprop="name">
<a class="article-title" href="/2016/04/25/谷歌官方todo-mvp解析/">谷歌官方todo-mvp解析</a>
</h1>
</header>
<div class="article-entry" itemprop="articleBody">
<h4 id="导语"><a href="#导语" class="headerlink" title="导语"></a>导语</h4><blockquote>
<p>MVP模式有许多不同的版本,但这个范例是它的基础。这是一个对MVP模式的简单实现。它使用本地和远程数据,异步处理任务回调。</p>
</blockquote>
<p><img src="http://7xrz8w.com1.z0.glb.clouddn.com/mvp.png" alt="todo-mvp"><br>项目<a href="https://github.com/googlesamples/android-architecture/tree/todo-mvp" target="_blank" rel="external">地址</a></p>
<h4 id="Fragments"><a href="#Fragments" class="headerlink" title="Fragments"></a>Fragments</h4><p>作者认为Activity与Fragment的分离非常适合MVP:</p>
<ul>
<li>Activity和Fragment的分离使得Activity可以专注于连接view和presenter</li>
<li>Fragment更适用于平板电脑的适配</li>
</ul>
<h4 id="概念"><a href="#概念" class="headerlink" title="概念"></a>概念</h4><p>每个模块独立出来,并且有对应的Activity,Fragment,UI接口contract和presenter。</p>
<ul>
<li>Activity负责初始化UI、Fragment以及presenter</li>
<li>Fragment负责实现contact的view接口</li>
<li>presenter实现contact的presenter接口</li>
<li>contract定义view的方法和presenter方法</li>
</ul>
<p>一般情况下,业务逻辑在presenter中实现。view不包含逻辑,它监听用户的UI操作并且传递给presenter。contacts接口定义view和presenter之间的联系。</p>
<h4 id="特点"><a href="#特点" class="headerlink" title="特点"></a>特点</h4><p>架构清晰,轻量,可测</p>
<h4 id="维护性"><a href="#维护性" class="headerlink" title="维护性"></a>维护性</h4><p>易于修改以及添加新功能模块。</p>
</div>
<footer class="article-footer">
<a data-url="http://yoursite.com/2016/04/25/谷歌官方todo-mvp解析/" data-id="ciodm8x5d0003s7yzp03u82d9" class="article-share-link" data-share="baidu" data-title="谷歌官方todo-mvp解析">分享到</a>
<ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/Android-todo-mvp/">Android todo-mvp</a></li></ul>
</footer>
</div>
</article>
</section>
<aside id="sidebar">
<div class="widget-wrap">
<h3 class="widget-title">标签</h3>
<div class="widget">
<ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/tags/Android-React-Native/">Android React Native</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Android-todo-mvp/">Android todo-mvp</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Android-混淆/">Android 混淆</a><span class="tag-list-count">1</span></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">标签云</h3>
<div class="widget tagcloud">
<a href="/tags/Android-React-Native/" style="font-size: 10px;">Android React Native</a> <a href="/tags/Android-todo-mvp/" style="font-size: 10px;">Android todo-mvp</a> <a href="/tags/Android-混淆/" style="font-size: 10px;">Android 混淆</a>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">归档</h3>
<div class="widget">
<ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2016/05/">五月 2016</a><span class="archive-list-count">3</span></li><li class="archive-list-item"><a class="archive-list-link" href="/archives/2016/04/">四月 2016</a><span class="archive-list-count">1</span></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">近期文章</h3>
<div class="widget">
<ul>
<li>
<a href="/2016/05/19/Android-代码混淆语法/">Android 代码混淆语法</a>
</li>
<li>
<a href="/2016/05/16/React-Native-运行-F8-2016-App-遇到的问题/">运行 F8 2016 App 遇到的问题</a>
</li>
<li>
<a href="/2016/05/11/vi快捷键/">vi快捷键</a>
</li>
<li>
<a href="/2016/04/25/谷歌官方todo-mvp解析/">谷歌官方todo-mvp解析</a>
</li>
</ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">友情链接</h3>
<div class="widget">
<ul>
<li>
<a href="http://www.oqq5518.com/" target="_blank">oqq5518</a>
</li>
<li>
<a href="http://stormzhang.com/" target="_blank">stormzhang</a>
</li>
<li>
<a href="http://www.trinea.cn/" target="_blank">Trinea</a>
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer id="footer">
<div class="outer">
<div id="footer-info" class="inner">
© 2016 Fccity Wei<br>
Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
.
Theme by <a href="https://github.com/xiangming/landscape-plus" target="_blank">Landscape-plus</a>
</div>
</div>
</footer>
</div>
<nav id="mobile-nav">
<a href="/" class="mobile-nav-link">主页</a>
<a href="/archives" class="mobile-nav-link">归档</a>
</nav>
<!-- totop start -->
<div id="totop">
<a title="返回顶部"><img src="/img/scrollup.png"/></a>
</div>
<!-- totop end -->
<!-- 百度分享 start -->
<div id="article-share-box" class="article-share-box">
<div id="bdshare" class="bdsharebuttonbox article-share-links">
<a class="article-share-weibo" data-cmd="tsina" title="分享到新浪微博"></a>
<a class="article-share-weixin" data-cmd="weixin" title="分享到微信"></a>
<a class="article-share-qq" data-cmd="sqq" title="分享到QQ"></a>
<a class="article-share-renren" data-cmd="renren" title="分享到人人网"></a>
<a class="article-share-more" data-cmd="more" title="更多"></a>
</div>
</div>
<script>
function SetShareData(cmd, config) {
if (shareDataTitle && shareDataUrl) {
config.bdText = shareDataTitle;
config.bdUrl = shareDataUrl;
}
return config;
}
window._bd_share_config={
"common":{onBeforeClick: SetShareData},
"share":{"bdCustomStyle":"/css/bdshare.css"}
};
with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?cdnversion='+~(-new Date()/36e5)];
</script>
<!-- 百度分享 end -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="/js/script.js" type="text/javascript"></script>
</div>
</body>
</html>