<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
<channel>
<title><![CDATA[Android Studio]]></title>
<link><![CDATA[http://www.itivy.com/android]]></link>
<description><![CDATA[Design More Before Coding,Think More Before Designing,Share More After Thinking]]></description>
<language><![CDATA[zh-cn]]></language>
<copyright><![CDATA[]]></copyright>
<webMaster><![CDATA[]]></webMaster>
<generator><![CDATA[]]></generator>
<Image><![CDATA[]]></Image>
<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/19/634730523445156670.html]]></link>
<title><![CDATA[Android MediaScanner：（四）MediaScanner之scanSingleFile]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Sat, 19 May 2012 20:16:27 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p><a href="http://blog.csdn.net/thl789/">田海立@csdn</a></p><p>2012-05-19</p><p>本文分析MediaScanner对单个文件的扫描过程。单个文件的扫描是MediaScanner的基础，对路径的扫描也要用到对Media文件的扫描。本文从MediaScannerService的scanFile入口开始，对MediaScanner和MediaScannerClient对单个媒体文件的扫描处理过程做详细的分析。</p><h1><span style="font-size:24px;">一、MediaScannerService.scanFile()</span></h1><p><br /></p><p><a href="http://blog.csdn.net/thl789/article/details/7583365">上文对MediaScannerService的分析</a>，知道对单个文件的扫描是调用MediaScannerService.scanFile()完成的。下面看scanFile()的实现：</p><p><img src="/Upload/EditorImage/image/android/201205/6347305387903047271337428903_7073.png" alt="MediaScannerService.scanFile" /><br /></p><p>scanFile()中判断如果是外部媒体文件（只扫描外部媒体文件），创建MediaScanner（定义在frameworks/base/media/java/android/media）实例，并设置locale信息，然后调用MediaScanner的scanSingleFile()开始扫描。</p><p><br /></p><h1><span style="font-size:24px;">二、MediaScanner.scanSingleFile()</span></h1><p>MediaScanner.scanSingleFile()是具体的实现。看它完成的工作：</p><p><img src="/Upload/EditorImage/image/android/201205/6347305387924344771337428958_8066.png" alt="MediaScanner.scanSingleFile" /><br /></p><p>顺序执行了</p><p><ul><li>&nbsp;initialize(); 3.1节中讲解该方法的工作；</li><li>&nbsp;prescan(); 3.2节中讲解该方法的工作；</li><li>&nbsp;MyMediaScannerClient.doScanFile() 3.3节中讲解该方法的工作。</li></ul></p><p>下面分章节着重讲解这些方法里面都做了哪些工作。</p><p><br /></p><h1>三、MediaScanner</h1><p><br /></p><p>位于/framework/base/media/java/android/media/。</p><h2><br /></h2><h2>3.1 MediaScanner.initialize(volumeName: String)</h2><p>initialize()对MediaScanner的MediaProvider/Audio/Video/Image等媒体库的URI进行初始化获取，要获取的属性有下面这些：</p><p><img src="/Upload/EditorImage/image/android/201205/6347305387939296011337429008_2067.png" alt="MediaScanner initialize properties" /><br /></p><p>另外，如果扫描的是外部volume，要处理playlist和genre，所以mProcessPlaylists和mProcessGenres被设置为true；创建mGenreCache；获取Genres和playlists的URI。</p><h2><br /></h2><h2>3.2 MediaScanner.prescan()</h2><p><ol><li>从Audio、Video和Image各自的数据库中分别读取出这些媒体文件信息（ID,Path, Modified time），写入<strong>mFileCache</strong>: HashMap&lt;String,FileCacheEntry&gt;中；</li><li>从Playlist数据库中读取出播放列表文件信息（ID,Path, Modified time），写入<strong>mFileCache</strong>: HashMap&lt;String,FileCacheEntry&gt;中；</li></ol></p><p>注意：新创建的FileCacheEntry的mSeenInFileSystem缺省值为false。</p><p><br /></p><h2><span style="font-size:18px;">3.3 MyMediaScannerClient.doScanFile()</span></h2><p>MyMediaScannerClient是MediaScanner的内部类，实现了MediaScannerClient。</p><p><img src="/Upload/EditorImage/image/android/201205/6347305387952189791337429067_4948.PNG" alt="MyMediaScannerClient" /><br /></p><p>MyMediaScannerClient提供了doScanFile()方法供外部调用。另外实现了MediaScannerClient这个Interface，这个Interface在JNI实现中非常重要，讲到<a href="http://blog.csdn.net/thl789/">那里时</a>再详细阐述。</p><p><ul><li>&nbsp;doScanFile()中调用beginFile()，获取FileType和MimeType信息，并初始化内部结构；</li><li>&nbsp;如果返回了FileCacheEntry，并且不是Image文件，调用JNI方法processFile()解析到具体的文件信息在MyMediaScannerClient中；</li><li>&nbsp;调用endFile()做后续的媒体库更新等处理。</li></ul></p><h3><span style="font-size: 16px; ">3.3.1 beginFile()</span></h3><p>参数：path:String; mimeType: String; lastModified: long, fileSize: long</p><p><ol><li>&nbsp;用MediaFile获取FileType和MimeType，并分别赋值给mFileType和mMimeType；</li><li>&nbsp;从mFileCache中获取（文件已经在数据库中了：3.2preScan()中已经把数据库中的文件都写入到mFileCache），或生成新的entry:FileCacheEntry，加入到mFileCache中；</li><li>&nbsp;设置entry:FileCacheEntry的属性mSeenInFileSystem为 true【扫描到了该文件】;</li><li>&nbsp;如果是播放列表文件，加入到mPlaylists:ArrayList&lt;FileCacheEntry&gt;中，并直接返回null；</li><li>&nbsp;为MyMediaScannerClient中的各个属性(mArtist/ mAlbum / Artist / mAlbum / mTitle / mComposer / mGenre / mTrack / mYear /mDuration / mWriter / mCompliation)赋初值，为mPath / mLastModified赋值。返回 2)生成的FileCacheEntry的实例。</li></ol></p><h3><span style="font-size: 16px; ">3.3.2 processFile()</span></h3><p>JNI调用。详细分析在文<span style="color:red;"><a href="http://blog.csdn.net/thl789/">//TODO</a></span>中。</p><h3><span style="font-size:16px;">3.3.3 endFile(entry: FileCacheEntry, …)</span></h3><p>1) 根据mFileType(Audio/Video/Images)，选择不同的数据库，并把相应的URI赋值给entry.mTableUri；</p><p>2) 写入values:ContentValues信息</p><p>①分别用MediaScannerClient中的下面各个属性值，初始化values：</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.MediaColumns.<strong>DATA</strong>: mPath</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.MediaColumns.<strong>TITLE</strong>: mTitle</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.MediaColumns.<strong>DATE_MODIFIED</strong>: mLastModifed</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.MediaColumns.<strong>SIZE</strong>: mFileSize</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.MediaColumns.<strong>MIME_TYPE</strong>: mMimeType</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于Video文件</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>ARTIST</strong>: mArtist/MediaStore.UNKNOWN_STRING</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>ALBUM</strong>: mAlbum/ MediaStore.UNKNOWN_STRING</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>DURATION</strong>: mDuration</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于Audio文件</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>ARTIST</strong>: mArtist/MediaStore.UNKNOWN_STRING</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>ALBUM_ARTIST</strong>: mAlbumArtist/MediaStore.UNKNOWN_STRING</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>ALBUM</strong>: mAlbum/ MediaStore.UNKNOWN_STRING</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>COMPOSER</strong>: mComposer</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>YEAR</strong>: mYear</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>TRACK</strong>: mTrack</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>DURATION</strong>: mDuration</p><p>o&nbsp;&nbsp;MediaStore.MediaColumns.<strong>COMPILATION</strong>: mCompilation</p><p>②对Title和Album做特殊处理</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果Title为空，从MediaStore.MediaColumns.DATA:mPath 中分离出文件名（不含路径和后缀名），赋到value的MediaStore.MediaColumns.<strong>TITLE</strong>里；</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果Album为MediaStore.UNKNOWN_STRING也就是文件中不含有Album信息，把MediaStore.MediaColumns.DATA:mPath 的父目录名赋到value的MediaStore.MediaColumns.<strong>ALBUM</strong>里。</p><p>③对于Audio和JPG文件做一些特殊处理</p><p>新加入的Audio，写入下列信息：</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Audio.Media.<strong>IS_RINGTONE</strong>: ringtones</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Audio.Media.<strong>IS_NOTIFICATION</strong>: notifications</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Audio.Media.<strong>IS_ALARM</strong>: alarms</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Audio.Media.<strong>IS_MUSIC</strong>: music</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Audio.Media.<strong>IS_PODCAST</strong>: podcasts</p><p>对于JPG文件，用android.media.ExifInterface获得下列信息：</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Images.Media.<strong>LATITUDE</strong>;</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Images.Media.<strong>LONGTITUDE</strong>;</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Images.Media.<strong>DATE_TAKEN</strong>: gps dateTime;</p><p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MediaStore.Images.Media.<strong>ORIENTATION。</strong></p><p>3) 用2)中的values<strong>添加或更新</strong>1) 中URI指向的<strong>Audio/Video/Images数据库</strong>。</p><p>4) 如果要处理Genres（判断标志mProcessGenres，外部媒体都要处理），</p><p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用Genre的名字mGenre查询Genres的数据库，更新或插入一条由把mGenre赋给MediaStore.Audio.Genres.<u>NAME</u>字段组成的记录到<strong>MediaStore.Audio.Genres数据库</strong>中，并返回URI；</p><p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 {genre, MediaStore.Audio.Genres.Members.CONTENT_DIRECTORY}加入mGenreCache:HashMap&lt;String, Uri&gt;中；</p><p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把<em>当前文件所在媒体库中的rowId</em>赋值给MediaStore.Audio.Genres.Members.<u>AUDIO_ID字段</u>，组成一条记录插入到<strong>MediaStore.Audio.Genres.Members数据库</strong>中。</p><p>更新一个媒体文件所属的Genre，需要更新Genres数据库，和Genres数据库对应的记录所在的Genres.Members数据库。</p><p>5) 对notification/ringtone/alarm进行处理</p><p>如果是notification/ringtone/alarm，并且还未设置notification/ringtone/alarm，那么设置Settings.System的Settings.System.NOTIFICATION_SOUND/ RINGTONE / ALARM_ALERT为媒体数据库的Uri形式。</p><p>6) 返回媒体数据库的Uri。</p>
            
                    <div>来源：http://blog.csdn.net/thl789/article/details/7583483</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/19/634730476918862459.html]]></link>
<title><![CDATA[Android MediaScanner：（三）MediaScannerService]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Sat, 19 May 2012 18:54:55 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p><a href="http://blog.csdn.net/thl789/">田海立@csdn</a></p><p>2012-05-19</p><p><br /></p><p>本文是笔者的分析归纳，并用UML图（ClassDiagram/Sequence Diagram）来呈现。虽然来源于对Android源码的分析，但文中不会占用大量篇幅罗列源码，所以读者在阅读本文时，手头最好有Android源码，结合源码来解读。本文对MediaScannerService的类结构进行静态分析，对创建时和启动时的工作进行动态分析，分析过程中来看MediaScannerService如何处理MediaScannerReceiver所接收到的各种扫描请求。</p><h1><span style="font-size:18px;">一、MediaScannerService的静态结构分析</span></h1><p><img src="/Upload/EditorImage/image/android/201205/6347304922669992121337424203_2408.png" alt="MediaScanner_ClassDiagram" /><br /></p><p><ul><li>&nbsp;MediaScannerService是一个Service，并实现Runnable，实现工作线程。</li><li>&nbsp;MediaScannerService通过ServiceHandler这个Handler把主线程需要大量计算的工作放到工作线程中去做。</li></ul></p><p>在Runnable.run()中执行消息循环，把通过Handler发送过来的消息在工作线程中执行。</p><p><br /></p><h1><span style="font-size:18px;">二、MediaScannerService的动态分析</span></h1><p>&nbsp; &nbsp; &nbsp; &nbsp; 在MediaScannerService被通过startService启动的过程中，其实包含了创建时的工作。下面分别分析创建时和启动时所完成的工作。</p><h2><span style="font-size:16px;">2.1 创建之时#0nCreate()</span></h2><p>Service对象在被创建的时候，onCreate()会被调用，看一下MediaScannerService的onCreate()里面做了什么：</p><p style="background:#F2F2F2;"></p><pre name="code" class="brush:java">PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,TAG);
 
Thread thr = new Thread(null, this, “MediaScannerService”);
Thr.start();</pre><br /><p style="background:#F2F2F2;"></p><p>MediaScannerService创建就是为了扫描Media的，这一过程是非常费时费力的。所以：</p><p><ul><li>&nbsp;为了防止在媒体扫描过程中，CPU睡死过去，用PowerManager的WakeLock告诉PowerManager，我这边还在忙，别睡死了[Line#1,2]；</li><li>&nbsp;在Android的主线程中要快速返回，大量的计算任务交给工作线程去做，这里启了一个工作线程，而这个线程的执行体就是MediaScannerService所实现Runnable的run()方法，用Handler发消息之前，一定要先启动该线程的[Line#4,5]。</li></ul></p><h2><span style="font-size:16px;">2.2 Service启动时#onStartCommand()</span></h2><p>&nbsp; &nbsp; &nbsp; &nbsp; Service对象在被启动的时候，onStartCommand()会被调用，看一下MediaScannerService的onStartCommand()里面做了什么。</p><p><br /></p><p>&nbsp; &nbsp; &nbsp; &nbsp; 下图是MediaScannerService#onStartCommand()中完成的工作：</p><p><img src="/Upload/EditorImage/image/android/201205/6347304922694256671337424252_6901.png" alt="MediaScannerService_StartSequence" /><br /></p><ul><li>&nbsp;通过参数startId和intent获得的Bundle，通过mServiceHandler发送到工作线程中去执行[Line#1~5]；</li><li>&nbsp;ServiceHandler的handleMessage()中，根据传进来不同的“filepath”、“volume”以及“folder”参数，执行不同的扫描工作[Line#6~11]；</li><li>&nbsp;扫描结束，MediaScannerService本次的使命也就完成，可以stop自身了[Line#12]。</li><p><br /></p><p>可以结合<a href="http://todo/">MediaScannerReceiver中启动方式</a>的不同来看传入的参数：</p><li>&nbsp;如果有“filepath”，是要扫描某个文件，调用scanFile()。扫描单个文件如何实现，在<a href="http://todo/">Android MediaScanner：（四）MediaScanner之scanSingleFile</a>中讲解。</li><li>&nbsp;否则，无论是针对整个volume还是某个folder的扫描，都可归结为对目录的扫描：对内部volume，扫描”system/media”；对外部volume，扫描整个“/mnt/sdcard”。</li></ul><h1><span style="font-size:16px;">三、小结</span></h1><p>&nbsp; &nbsp; &nbsp; &nbsp; 本文对MediaScannerService的类结构进行了静态分析，对创建时和启动时的工作进行了动态分析，分析过程中看MediaScannerService如何响应MediaScannerReceiver所接收到的各种扫描请求。</p><p><br /></p><p>与其他文章的关系：</p><ul><li>&nbsp;向前看<a href="http://todo/">MediaScannerReceiver</a>，来自外部的扫描请求，启动MediaScannerService，由Service来具体负责实现；</li><li>&nbsp;向后看MediaScanner才是真正的扫描实现，分<a href="http://todo/">扫描文件</a>和<a href="http://todo/">扫描路径</a>来讲解。</li></ul><p><br /></p>
            
                    <div>来源：http://blog.csdn.net/thl789/article/details/7583365</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/19/634730472416318569.html]]></link>
<title><![CDATA[Android MediaScanner：（二）MediaScannerReceiver]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Sat, 19 May 2012 18:47:01 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p><a href="http://blog.csdn.net/thl789/">田海立@csdn</a></p><p>2012-05-19</p><p><br /></p><p>本文是笔者的分析归纳，并用UML图（ClassDiagram/Sequence Diagram）来呈现。虽然来源于对Android源码的分析，但文中不会占用大量篇幅罗列源码，所以读者在阅读本文时，手头最好有Android源码，结合源码来解读。本文讲述MediaScanner的入口MediaScannerReciever针对不同Broadcast的请求所做的处理。</p><p>在<a href="http://blog.csdn.net/thl789/article/details/7583352">上文中</a>的图中可以讲到，MediaScannerReceiver处理三种Broardcast请求：</p><ul><li>&nbsp;BOOT_COMPLETED 系统启动之后，扫描内部Media文件；</li><li>&nbsp;MEDIA_MOUNTED 外部存储卡挂载之后，扫描外部Media；</li><li>&nbsp;MEDIA_SCANNER_SCAN_FILE 扫描外部存储器上的一个媒体文件。</li></ul><p>下图MediaScanner针对每一种请求的处理：</p><p><img src="/Upload/EditorImage/image/android/201205/6347304877670215731337423734_6284.png" alt="MediaScannerReceiver" /><br /></p><ul><li>&nbsp;如果收到的是BOOT_COMPLETED，设置参数“<strong>volume</strong>”为“internal”，通过startService()启动MediaScannerService开始<span style="color:red;">内部</span>Media文件扫描；</li><li>&nbsp;如果收到的是MEDIA_MOUNTED 并且path是“/mnt/sdcard”，设置参数“<strong>volume</strong>”为“external”，通过startService()启动MediaScannerService开始<span style="color:red;">外部整个</span>Media文件扫描；</li><li>&nbsp;如果收到的是MEDIA_MOUNTED 并且path<em>不</em>是“/mnt/sdcard”，设置参数“<strong>volume</strong>”为“external”，“<strong>folder</strong>”为所要扫描的路径，通过startService()启动MediaScannerService开始对<span style="color:red;">外部某个路径</span>进行Media文件扫描；</li><li>&nbsp;如果收到的是MEDIA_SCANNER_SCAN_FILE ，设置参数“<strong>filepath</strong>”为获取到的文件，通过startService()启动MediaScannerService开始对<span style="color:red;">外部某个文件</span>进行扫描。</li></ul><p>【<strong>小结</strong>】本文讲述MediaScanner的入口MediaScannerReciever针对不同Broadcast的请求（BOOT_COMPLETED/MEDIA_MOUNTED/ MEDIA_SCANNER_SCAN_FILE）所做的处理。</p><p>扫描如何实现的，接下来看<a href="http://todo/">MediaScannerService中的实现</a>。</p><p><br /></p>
            
                    <div>来源：http://blog.csdn.net/thl789/article/details/7583358</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/19/634730467878155125.html]]></link>
<title><![CDATA[Android MediaScanner：（一）MediaScanner总体架构]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Sat, 19 May 2012 18:39:04 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p><a href="http://blog.csdn.net/thl789/">田海立@csdn</a></p><p>2012-05-19</p><p>本文是笔者的分析归纳，并用UML图（Class Diagram/Sequence Diagram）来呈现。虽然来源于对Android源码的分析，但文中不会占用大量篇幅罗列源码，所以读者在阅读本文时，手头最好有Android源码，结合源码来解读。本文讲述MediaScanner的架构。</p><p>MediaScanner是Android系统Media的基础，系统启动之初，就扫描出Media文件供后续使用，有新媒体加入或者删除掉媒体文件，也需要更新相应的媒体库。Android的Music、Gallery等播放或呈现媒体文件的程序也都基于稳定的MediaScanner扫描媒体文件的结果，否则，会发现程序操作的Media文件的URI根本不是实际对应的Media文件，或者甚至来电铃声和闹铃等都会有问题。</p><p>MediaScanner位于packages/providers/MediaProvider下，包含MediaScannerReceiver、MediaScannerService以及MediaProvider。</p><p>下图是packages/providers/MediaProvider下的AndroidManifest的内容：</p><p><img src="/Upload/EditorImage/image/android/201205/6347304832281407731337423526_4133.png" alt="MediaScanner Architecture" /><br /></p><p><ul><li>&nbsp;MediaScannerReceiver是一个BroadcastReceiver，接收广播，进行媒体扫描，这也是MediaScanner提供给外界的接口之一。收到广播之后启动MediaScannerService具体执行扫描工作。</li><li>&nbsp;MediaScannerService是一个Service，负责媒体扫描，它还要用到Framework中的MediaScanner来共同完成具体扫描工作，扫描的结果在MediaProvider提供的数据库中。</li><li>&nbsp;MediaProvider是一个ContentProvider，媒体库（Images/Audio/Video/Playlist等）的数据提供者。负责操作数据库，并提供给别的程序insert、query、delete、update等操作。</li></ul></p><p>另外，IMediaScannerService和IMediaScannerListenter这两个Interface提供给其他程序通过AIDLIPC调用扫描单个文件的能力。定义在framework中，Service中实现接口。</p><p>下面针对MediaScanner中的各个部分，分别讲解：</p><p>Android MediaScanner：（一）MediaScanner总体架构</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 讲述MediaScanner的架构。</p><p>Android MediaScanner：（二）MediaScannerReceiver</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 讲述MediaScannerReceiver针对来自Broadcast的不同请求所做的处理。</p><p>Android MediaScanner：（三）MediaScannerService</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对MediaScannerService的类结构进行静态分析，对创建时和启动时的工作进行动态分析，分析过程中来看MediaScannerService如何处理MediaScannerReceiver所接收到的各种扫描请求。</p><p>Android MediaScanner：（四）MediaScanner之scanSingleFile</p><p>Android MediaScanner：（五）MediaScanner之scanDirectories</p><p>Android MediaScanner：（六）MediaScanner之Native实现</p><p>Android MediaScanner：（七）MediaScanner完整过程总结</p><p>Android MediaScanner：（八）IMediaScannerService接口实现</p><p><br /></p>
            
                    <div>来源：http://blog.csdn.net/thl789/article/details/7583352</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/19/634730231470872508.html]]></link>
<title><![CDATA[Native Apps就像CD-ROM，只是发展过渡？]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Sat, 19 May 2012 11:44:42 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[<p><a href="/Upload/EditorImage/image/android/201205/634730246778354597mobile-web.jpg"><img class="aligncenter size-full wp-image-3072" title="mobile-web" src="/Upload/EditorImage/image/android/201205/634730246778354597mobile-web.jpg" alt="" height="525" width="350" /></a></p>
<p>Jay Sullivan是Mozilla的产品副总裁，也是Open Web的代言人，他现在红的发紫。</p>
<p>“如果你想拥有各种各样的Apps，将需要大笔的费用……因为有太多应用可以去构建”。Jay Sullivan在最近的VentureBeat采访中说。</p>
<p>Sullivan强烈反对native App，并且赞成将移动互联网作为取代其它所有平台的新平台。</p>
<p>现在，事态的发展使他的话显得格外合乎时宜。Yahoo刚刚发布了Yahoo Cocktails工具，该工具可以让Web Apps更像native Apps。Mozilla正在致力于开发一套工具，可以将web Apps卖给移动设备用户，帮助web Apps开发商像iTunes App Store和Android Market上的开发人员一样获得利润。</p>
<p>甚至Adobe取消了移动手机上的Flash功能，将希望寄托于移动互联网平台的HTML 5。“除了少数情况，基本上现在大多数移动设备都支持HTML 5，”兼任Adobe 副总裁和交互式开发总经理的Danny Winokur写道。</p>
<p>“这使得HTML 5成为了在移动平台上创建和部署内容的最好方法。”</p>
<p>似乎移动Apps正朝着多媒体CD-ROM十年前的方向在前进。可悲的mobile apps,正在步CD-ROM的后尘。</p>
<p>也有人反对这种看法，认为现在为apps鸣哀还为时过早。App的拥护者说即使移动互联网热衷者正沉溺于那些不切实际的想法，但是其他的人仍然在使用现在成熟的技术。尽管他们承认使用HTML5构建mobile web apps最终会更便宜、更快和更容易，但是这至少在近几年实现不了。</p>
<p>在Mozilla Foundation的新办公室楼可以俯瞰旧金山湾跨海大桥，Sullivan——这个HTML5拥护者——坐在会议室快速解读了关于“想要在移动手机上发布软件，不得不首先建立一个native App”的设想。</p>
<p>他没有依靠那些陈旧的意识形态，说一些将企业从技术依赖中解放出来的陈词滥调，这种依赖性在Mozilla的广告活动中得到充分体现。相反，他完全从实际出发。</p>
<p>首先，Sullivan解释：显然每一个移动生态圈都需要有自己的成熟技术，自己的操作系统和开发语言。这就意味着每一个生态圈都要求各自不同的技能和独立开发过程。</p>
<p>总而言之，相比于native apps需要两个、三个或者四个构建技术，只需一种构建技术的Web App将更具有经济价值。“使用HTML 5会更加便宜。”Sullivan说。“相对于使用七种不同的语言开发，HTML5是值得拥有的，虽然总有一些边缘的东西不能很好的运作”。</p>
<p>对于开发者来说，打造一个mobile web app比开发半打或者甚至只是两个native apps从技术层面上都要容易的多。而且，鉴于移动互联网标准，很快地最终用户将区别不了mobile web apps和native apps。Sullivan 认为，剩下来需要做的事就是为mobile web apps建立一种商业模式。</p>
<p>“当开发者可以更容易进入商业圈，mobile web 将变得更有吸引力。”</p>
<h2>一套更好的措施</h2>
<p>在与Mozilla和Yahoo这些组织交谈中，了解到基本没有移动开发商对于<a href="/Upload/EditorImage/image/android/201205/634730246794678345appcelerator1.jpg"><img class="alignright size-full wp-image-3077" title="appcelerator" src="/Upload/EditorImage/image/android/201205/634730246794678345appcelerator1.jpg" alt="" height="200" width="320" /></a></p>
<p>推进一个单独的移动操作系统如Android或Ios有明显的兴趣——因此，如下的趋势变得格外明显：</p>
<ul>
<li>Apps已经奄奄一息了。</li>
<li>Apps像CD一样，正日益成为一套不必要的过时的数字信息包。</li>
<li>正如CD一样，我们正等待一种更好的解决方法来替代它。</li>
</ul>
<div>
<p>这是从技术层面和文化层面发起的挑战。为此，Mobile Web Apps首先必须满足用户高品质高性能的需求，其次，如前面所提到的，开发者需要有销售Apps的市场。</p>
<p>Yahoo正对第一个挑战发起进攻（致力于开发高品质高性能的应用）。Bruno Fernandez-Ruiz是Yahoo平台副总裁，他将他所做的工作描述为“采用一系列措施让web apps体验可媲美native app”。</p>
<p>“我们不想模仿native app，web Apps有它独有的模式。我们想为Web Apps创建新的用户体验，使其可以跨越电话、电视和平板电脑——互联网是可以跨平台的典范。”</p>
<p>虽然，Mozilla或者Yahoo会很想看到移动互联网应用赶超本地应用，但是实际上此时此刻他们仍然必须处理本地和栈的问题。</p>
<p>“我完全相信移动网络会继续快速增长”，Jeff Haynie说，Jeff Haynie与人共同创办的Appcelerator，是一家专门从事培养Web开发人员和运行移动操作系统平台的公司。</p>
<p>同时Haynie认为，现在低估移动App所带来的机会还为时过早。</p>
<p>“这是全球开发者的机遇，”谈论到mobile web Apps，他继续说道，“但是在多种平台上构建和native apps一样的Web Apps所带来的机遇是短暂的。消费者已经对用户体验有了相当高的标准，如Filpboards和Instagrams这些native app的体验在Web app上是无法实现的。</p>
<p>谈到Mozilla等公司，Haynie说道，“这些公司有大量的Web开发者——他们的基础都是web。怎么基于Web进行开发，是他们梦寐以求的。”</p>
<p>“但真正的问题是，怎么样让web开发者基于Web开发具有native apps体验的应用程序？”</p>
<p>毫无疑问，web apps拥护者的答案是：可以通过新的技术和新的市场从web app中获取利润。</p>
<h2>移动互联网新技术：Javescripe和Node</h2>
<p>JavaScript和Node.js是使native apps向Web apps转型的两项关键技术。</p>
<p>“JaveScript是伪LISP，它比任何函数编程语言功能都强大。”Yahoo的&nbsp;Fernandez-Ruiz说。<a href="/Upload/EditorImage/image/android/201205/634730246801416527mobile-web-21.jpg"><img class="alignright size-full wp-image-3074" title="mobile-web-2" src="/Upload/EditorImage/image/android/201205/634730246801416527mobile-web-21.jpg" alt="" height="327" width="250" /></a></p>
<p>对于基于JavaScript的Node.js，他说，“说不定这就是下一个Ruby on Rails。”（Ruby on Rails是一个近几年广受欢迎的Web应用开发平台，开发人员可以在上面快速的创建网站和应用程序。）</p>
<p>JaveScript和Node是Yahoo Cocktails工具的核心组件，这套新工具帮助开发人员构建的mobile Web apps在外观和感觉无异与于高品质的native apps。Fernandez-Ruiz提到，对于前期的试用版，移动开发者对这套工具反映出了极大的兴趣与热情，每个人都希望能使用到它。</p>
<p>事实上，使内容兼容所有移动设备平台，是一项艰巨的任务。目前，许多公司正在设法采用将一种操作系统语言翻译成另一个操作系统的语言的方式来解决这个难题，例如将开发iPhone应用的Objective C语言翻译成进行Android开发Java。</p>
<p>但是，通过这种方式翻译出来的代码往往是混乱不堪的，而且试图采用这种方法去解决兼容性问题也不是长久之计。</p>
<p>相反，Fernandez-Ruiz说，“我们准备要解决未来3年内的可能出现的问题，而不是仅仅是现在存在的一些问题。”</p>
<p>理想的情况下，雅虎试图不再使用多语言进行开发，因为多语言使开发工作变的复杂无比。这也是Cocktail的目标所在。Cocktail其中一个称作Mojito的工具，就使用JavaScript和Node让同一套代码可以同时在客户端和服务器端运行。</p>
<p>“我们没有将前端和后端进行区分，”Fernandez-Ruiz说，“对于我们来说，前后端采用的是完全相同的代码。”</p>
<p>另一种Cocktail工具Manhattan是Mojito的Node.js托管环境。应用程序可以在本地的shell中进行打包，然后送到iTunes App Store或Android Market上发布，或是浏览器上运行。Manhattan作用在于加快网络速度不稳定的用户的访问速度，并且让那些不完全支持HTML5/CSS3的平台正常运行各种应用。</p>
<p>虽然Node已被证实有许多疯狂的性能优势，Fernandez-Ruiz说道，“我们并没有使用这些功能，因为它的事件驱动、低延时功能。而我们使用Node的原因在于它是在服务器端运行JaveScript”</p>
<p>JavaScript是逐步发展的，他说，“下一代的JavaScript将是一种引人注目的、令人兴奋的高性能的Web编程语言。这将使Web apps拥有跨平台的、连续的、流畅的全新用户体验。”</p>
<p>作为终端用户，Fernandez-Ruiz says提到，从TV的使用界面跳转到平板电脑或是智能手机或是PC上的另外一种界面是非常郁闷的事情。“但是，HTML5，CSS3和JavaScript，可以让应用在所有平台上都拥有同样的外观和使用感受。”</p>
<p>以下是我们在查看最新的LinkedIn mobile web apps时的所见，这些应用由Node驱动和使网络负荷重。虽然iOS和Android的native apps由于其大量的网页功能和网页，而使移动网络负荷非常重，但是移动互联网版本在外观和功能上和native版本完全一样。</p>
<p>谈及Yahoo的最终目标，Fernandez-Ruiz继续下去，“为了在服务器端执行代码，Node.js只是解决了难题的一部分。不管怎样，所有问题的先决条件是相同的：不是在本地，而是在Web上解决问题”。</p>
<p>在不久的将来，雅虎还会引入其他的Cocktails工具，如Windjammer和Screwdriver等。</p>
<p>但是Haynie认为需要慎重的对待web-app-in-a-native-wrapper模型。</p>
<p>“现在几乎没有人使用这样的混合应用。web-app-in-a-native-wrapper模型只是一个桥梁，让native apps展示网页内容，但如果你查看LinkedIn的新应用，会发觉这些应用几乎与native apps无异。”Haynie说道。</p>
<p>Dmitry Dragile在Zurb工作，该公司刚刚发布了设计应用程序的基础框架，按照这个框架设计的web apps可以同时在移动设备和桌面电脑上运行。这个框架让人觉得有点不可思议。随着窗口、设备屏幕分辨率的变化，链接可以变成按钮，图像会自动改变尺寸大小，布局也自动进行调整。</p>
<p>既然是Web技术，就没必要基于设备进行定制。“这个框架会搞定一切”Dragilev说，“人们再不必担心不同分辨率这些问题了”。</p>
<p>该技术的目的是可以使用在任何一种设备上，不管是移动设备或者其它设备，Dragilev说，“这是至关重要的，因为现在移动互联网的使用率已开始赶超桌面电脑。”</p>
<h2>Mobile Web Apps市场</h2>
<p>Mozilla团队正致力于研究使mobile apps运作模式转变的工具，向第二个挑战发起进攻：如何在大众市场里出售mobile web apps？<a href="/Upload/EditorImage/image/android/201205/634730246807417685nightingale.jpg"><img class="alignright size-full wp-image-3079" title="nightingale" src="/Upload/EditorImage/image/android/201205/634730246807417685nightingale.jpg" alt="" height="200" width="320" /></a></p>
<p>对于消费者而言，Mozilla的计划包括您可以在所有设备上使用您购买过的每一个应用。也就是说，所有的应用程序可以在所有的设备上运行。如果您在智能手机上购买过一个应用，那么您不必为您新买的平板电脑重新购买相同的应用程序。</p>
<p>“我们的想法是，任何人只要一个电子邮件地址就可以开始使用免费或付费的应用程序，该应用程序是为你所有，”Sullivan解释说，“在电脑上购买了一款游戏，你同样可以在手机上使用。因为这款游戏已经属于你了，而不是属于你的设备。”</p>
<p>在这种模式下，消费者可以在大量的虚拟商店中购买信誉良好的应用程序，这些虚拟商店构成了空中购物中心。或者，通过其他途径与开发者直接联系。</p>
<p>或许你，我亲爱的读者，觉得这只是乐观派想法的，Sullivan却认为，Mozilla带来了一种具有操作性的方法。</p>
<p>“我们在运营浏览器时采用了这种模式”他说，“我们将为WebApps开设一个市场。几年来，我们通过市场分销Firefox附加组件。我们已经为市场的管理、策略方针制定以及合法运作建立了一套系统——并且通过严厉的考验来验证它，我们得到了一个相当不错的结果”。</p>
<p>谷歌和苹果这些公司在市场以外的应用周围制造了一种FUD(恐惧，不确定和怀疑)气氛。作为消费者，我们被告知在非公司授权的应用商店上销售的应用程序，在安全和质量上都没有保证。</p>
<p>不过，Sullivan说FUD确实存在，特别是涉及到隐私和应用使用权时。Sullivan认为，事实上web apps要求更加透明的个人使用权，同时使用web“sandbox”模式更好的阻止恶意程序的发布。</p>
<p>Johnathan Nightingale是Mozilla公司Firefox项目的负责人，他也在房间里。当我们开始谈论的FUD时，他就精神起来了。</p>
<p align="left">“如果你回到90年代末，美国在线曾经说过同样的话：‘如果你把它发布在网上，谁也不知道你会得到什么？’”</p>
<p align="left">他继续谈到Mozilla建立的mobile web商业组织。“这并不是说我们要脱离应用商店。如果你是一名开发人员，你会想要进入尽可能多的商店；但是如果你建立了一个成功的商店，你将获得更高的权限。但是我们并不会阻止用户安装他们所需要的东西。”</p>
<h2>停止Native Apps的开发</h2>
<p align="left">因此，如果以上措施联合运作起来——更好的移动互联网开发工具，更好的mobile web apps市场——完全有理由相信mobile web apps将成为创建智能手机、平板电脑和其他设备上应用的主导模式。</p>
<p align="left">“最终，Web的将是可以构建新应用的唯一地方。” Nightingale说。<a href="/Upload/EditorImage/image/android/201205/634730246813740307linkedin-mobile-web.jpg"><img class="alignright size-full wp-image-3081" title="linkedin-mobile-web" src="/Upload/EditorImage/image/android/201205/634730246813740307linkedin-mobile-web.jpg" alt="" height="200" width="320" /></a></p>
<p align="left">“如果现在说到App 开发商，他们正试图雇用顶尖的HTML5编码人员。他们不想使用四种或者五种不同的技术来进行开发。”</p>
<p align="left">由于硬件的特定功能和native apps访问硬件的能力，Nightingale说，开发商仍然可以进行native apps的开发。“但我们停止了”，他说，为了给Mozilla的mobile web开发工具计划做铺垫。</p>
<p align="left">但是也存在一些质疑的声音，当前native模式背后的支持势力——原始设备制造商和操作系统厂商——当涉及到访问硬件时，是否会给移动互联网一个公平的机会呢。</p>
<p align="left">“我们正在努力使这些使Web开发商同时拥有硬件功能”，Haynie说，“但你认为苹果会得到所有kumbaya产品，并且进入到硬件行业？不可能。网络公司当然会非常高兴，但我们传统互联网上没有实现这一点，怎么会在移动互联网上做到呢？”</p>
<p align="left">事实上，Sullivan的预测过于保守。他回想在软盘或者CD-ROM的时代，他指出大约他使用过的程序80%是桌面软件和20%是Web程序。</p>
<p align="left">“随着功能的增加，80/20规则被颠覆了。现在，几乎所有的东西都已转移到网上。”</p>
<p align="left">“我没有看出native apps是领先了许多，在某种意义上看，它只是从未离开过PC。但我认为也将会有一个移动互联网的80/20法则。”</p>
<p align="left">同样，Zurb的设计总监，Jonathan Smiley认为，最终，我们将完全地停止区分web和native apps。我问他，是否他认为两者会一样好；他说，“绝对正确，届时native和web apps之间的界线会变的模糊不清。随着设备通过硬件来激活和加快访问web apps功能，而native apps也使用越来越多的web服务，两者有可能融合为一体称为‘Apps’”。</p>
<p align="left">“我们的目标始终是要设计优秀的UI”，Kiran Prasad说，他是LinkedIn移动项目总监。“优秀的UI意味着简单。简单就意味着快速，简便和可靠的用户体验。”</p>
<p align="left">Prasad说，手机的Web apps“的确是未来的”，但他指出，机会仍然摆在我们面前。如今，技术人员需要“在正确的时候使用正确的技术……现在的问题不是native apps与web apps的分庭对抗。而是在显示和交互层面：是选择本地显示或是网页显示。我们始终专注于最佳的用户体验，而今天这就意味着利用mobile web apps以及native apps的用户体验优势。”</p>
</div>
<div>来源：http://www.webapptrend.com/2012/05/3059.html</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/18/634729782402031914.html]]></link>
<title><![CDATA[浅学设计模式之观察者模式及在android中的应用]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Fri, 18 May 2012 23:52:09 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p>&nbsp; &nbsp; &nbsp; &nbsp; <span style="font-size:16px;">最近在学习下设计模式，而加深学习的不错的方法就是把心得写出来吧。记录下自己的理解。现在自己看的书是《head.Frist设计模式》这本书。比较不错，想看的朋友可以看下。</span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">&nbsp; &nbsp; &nbsp; &nbsp; 观察者&lt;Observer&gt;模式（有时又被称为发布-订阅&lt;Publish/Subscribe&gt;模式、模型-视图&lt;Model/View&gt;模式、源-收听者&lt;Source/Listener&gt;模式或从属者&lt;Dependents&gt;模式）是</span><a target="_blank" href="http://baike.baidu.com/view/117325.htm" style="color: rgb(19, 110, 194); font-family: arial, 宋体, sans-serif; line-height: 25px; ">软件设计模式</a><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">的一种。在此种模式中，一个目标物件管理所有相依于它的观察者物件，并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。（源自百度百科）</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">&nbsp; &nbsp; &nbsp; &nbsp; 举个例子，张三从邮局订阅了《南方周末》，李四从邮局订阅了《新京报》，王五从邮局里面订阅了《南方都市报》。当报纸抵达邮局的时候，邮局就会把报纸送递订阅者。而不需要订阅者天天到邮局询问报纸是否到达邮局。</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">&nbsp; &nbsp; &nbsp; &nbsp;下面开始代码：首先应该是个订阅者接口：</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:java">package cn.demo;

public interface ISubscribe {
	//从邮局订阅报纸
	public void registered(PostOffice postOffice);
	//从邮局退订报纸
	public void unregistered(PostOffice postOffice);
	//获取报纸名称
	public void getNewsPaper();
}</pre><br />第三个方法非必须，前两个方法必须要有。</p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">然后有三个订阅者类：</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">张三：</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:java">package cn.demo;

public class ZhangSan implements ISubscribe{
	private String mName;
	private String mNewsPaperName;
	
	public ZhangSan(String mName, String mNewsPaperName) {
		this.mName = mName;
		this.mNewsPaperName = mNewsPaperName;
	}
	
	public String getName() {
		return mName;
	}

	public String getNewsPaperName() {
		return mNewsPaperName;
	}
	
	@Override
	public void registered(PostOffice postOffice){
		postOffice.registeredNewsPaper(this);
	}
	
	@Override
	public void unregistered(PostOffice postOffice){
		postOffice.unregisteredNewsPaper(this);
	}

	@Override
	public void getNewsPaper() {
		// TODO Auto-generated method stub
		System.out.println(&quot;我是&quot;+getName()+&quot;,我收到我订阅的&quot;+getNewsPaperName());
	}

}
</pre><br />李四：</p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:java">package cn.demo;

public class Lisi implements ISubscribe{
	private String mName;
	private String mNewsPaperName;
	
	public Lisi(String mName, String mNewsPaperName) {
		this.mName = mName;
		this.mNewsPaperName = mNewsPaperName;
	}
	
	public String getName() {
		return mName;
	}

	public String getNewsPaperName() {
		return mNewsPaperName;
	}
	
	@Override
	public void unregistered(PostOffice postOffice){
		postOffice.unregisteredNewsPaper(this);
	}
	
	@Override
	public void registered(PostOffice postOffice){
		postOffice.registeredNewsPaper(this);
	}

	@Override
	public void getNewsPaper() {
		// TODO Auto-generated method stub
		System.out.println(&quot;我是&quot;+getName()+&quot;,我收到我订阅的&quot;+getNewsPaperName());
	}

}</pre><br />王五：</p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:java">package cn.demo;

public class Wangwu implements ISubscribe{
	private String mName;
	private String mNewsPaperName;
	
	public Wangwu(String mName, String mNewsPaperName) {
		this.mName = mName;
		this.mNewsPaperName = mNewsPaperName;
	}
	
	public String getName() {
		return mName;
	}

	public String getNewsPaperName() {
		return mNewsPaperName;
	}
	
	@Override
	public void registered(PostOffice postOffice){
		postOffice.registeredNewsPaper(this);
	}
	
	@Override
	public void unregistered(PostOffice postOffice){
		postOffice.unregisteredNewsPaper(this);
	}


	@Override
	public void getNewsPaper() {
		// TODO Auto-generated method stub
		System.out.println(&quot;我是&quot;+getName()+&quot;,我收到我订阅的&quot;+getNewsPaperName());
	}

}
</pre></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">三个订阅者，都有方法订阅报纸，或者取消订阅。其实关于订阅者的信息，是存储在邮局类里面。</span></span></p><p><br /></p>邮局类：<p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:java">import java.util.ArrayList;
import java.util.List;

public class PostOffice {
	private List&lt;ISubscribe&gt; SubscribeList = new ArrayList&lt;ISubscribe&gt;();
	
	public void registeredNewsPaper(ISubscribe subscribe) {
		SubscribeList.add(subscribe);
	}
	
	public void unregisteredNewsPaper(ISubscribe subscribe) {
		if (subscribe != null) {
			SubscribeList.remove(subscribe);
		}
		
	}
	
	public void getNewsPaper(boolean bool) {
		if (bool) {
			sendNewsPaper();
		}
	}
	
	public void sendNewsPaper() {
		for(ISubscribe subscribe : SubscribeList) {
			subscribe.getNewsPaper();
		}
	}
}
</pre>在这个类里面，有变化通知是使用的sendNewsPaper()这个方法，遍历所有的订阅者。<br />测试类：</p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:java">public static void main(String[] args) {
		// TODO Auto-generated method stub
		PostOffice mPostOffice = new PostOffice();
		ISubscribe zhangsan = new ZhangSan(&quot;张三&quot;, &quot;《南方周末》&quot;);
		ISubscribe lisi = new Lisi(&quot;李四&quot;, &quot;《新京报》&quot;);
		ISubscribe wangwu = new Wangwu(&quot;王五&quot;, &quot;《南方都市报》&quot;);
		
		//开始订阅报纸
		zhangsan.registered(mPostOffice);
		lisi.registered(mPostOffice);
		wangwu.registered(mPostOffice);
		
		//邮局收到报纸，开始发放
		mPostOffice.getNewsPaper(true);
		
		//李四退订
		lisi.unregistered(mPostOffice);
		//邮局收到报纸，开始发放
		mPostOffice.getNewsPaper(true);
	}</pre><br />打印结果：</p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">&nbsp; &nbsp;&nbsp;</span></span><pre name="code" class="brush:html">我是张三,我收到我订阅的《南方周末》
我是李四,我收到我订阅的《新京报》
我是王五,我收到我订阅的《南方都市报》
我是张三,我收到我订阅的《南方周末》
我是王五,我收到我订阅的《南方都市报》
</pre><br /></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">这里只是提供了一个简单的例子，而且代码你会发现有冗余，三个订阅者类，几乎是一样，因为没有在类里面添加他们独自的属性，可以用一个Person类来替代。这里写这三个类是为了显示清晰。</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; ">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;在Android中，button.setOnclickListener()这个方式是比较常见的观察者模式：当然，众所周知，onClick是著名的回调方法，在这里不会研究回调，不用太在意。</span></span></p><p><span style="font-family:arial, 宋体, sans-serif;font-size:16px;"><span style="line-height: 25px;">看下代码：</span></span></p><p><span style="font-family:arial, 宋体, sans-serif;font-size:16px;"><span style="line-height: 25px;"></span></span><pre name="code" class="brush:java">Button button1 = (Button)findViewById(R.id.button1);
        Button button2 = (Button)findViewById(R.id.button2);
        Button button3 = (Button)findViewById(R.id.button3);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
    }

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()) {
		case R.id.button1 :
//			do some thing		
		case R.id.button2 :
//			do some thing
		case R.id.button3 :
//			do some thing
		}
	}</pre><br />先button.setOnclickListener()进行注册。相当于邮局中的lisi.registered(mPostOffice)。onclick响应事件相当于邮局中的</p><p><span style="font-family:arial, 宋体, sans-serif;font-size:16px;"><span style="line-height: 25px;"></span></span><pre name="code" class="brush:html">public void sendNewsPaper() {
		for(ISubscribe subscribe : SubscribeList) {
			subscribe.getNewsPaper();
		}
	}</pre><br />这个中的subscribe.getNewsPaper()这个方法。View.onClickListener相当于邮局。View也就是button是我们的订阅者，也就相当于张三。我们也可以在getNewsPaper中加一些自己的switch判断。</p><p><span style="font-family:arial, 宋体, sans-serif;font-size:16px;"><span style="line-height: 25px;">&nbsp; &nbsp; &nbsp; &nbsp;最后，如果我们的邮局要实现类似button这样的回调这么实现呢？</span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "></span></span><pre name="code" class="brush:html">ISubscribe isubscribe;

	@Override
	public void getNewsPaper() {
		// TODO Auto-generated method stub
		System.out.println(&quot;我是&quot;+getName()+&quot;,我收到我订阅的&quot;+getNewsPaperName());
		isubscribe.getNewsPaper();
	}</pre><br />在这里，弄的有点绕，其实可以另起一个接口。不知道是否能够明白，不明白欢迎留言探讨。谢谢，今天就到此，周末愉快！</p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "><br /></span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "><br /></span></span></p><p><span style="font-size:16px;"><span style="font-family: arial, 宋体, sans-serif; line-height: 25px; "><br /></span></span></p>
            
                    <div>来源：http://blog.csdn.net/aomandeshangxiao/article/details/7581394</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/18/634729001394603597.html]]></link>
<title><![CDATA[Xamarin为Mono for Android提供了一个可视化设计器]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Fri, 18 May 2012 01:21:06 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <span style="color: rgb(204, 0, 0); font-family: Arial; font-size: 14px; line-height: 24px; text-align: left; text-indent: 28px; ">本文来源于我在InfoQ中文站翻译的文章，原文地址是：<a href="http://www.infoq.com/cn/news/2012/05/Mono-for-Android-Designer">http://www.infoq.com/cn/news/2012/05/Mono-for-Android-Designer</a></span><p>近日，Xamarin为其集成到Visual Studio或MonoDevelop的<a href="http://xamarin.com/monoforandroid">Mono for Android</a>开发工具发布了一款<a href="http://docs.xamarin.com/android/tutorials/Designer_Overview">可视化设计器</a>。</p><p><a href="http://docs.xamarin.com/android/tutorials/Designer_Overview">Xamarin Designer for Android</a>是个可用于创建Android应用界面的拖拽开发工具。该工具以Visual Studio或MonoDevelop插件的形式提供。该设计器可用于对所有原生Widget与控件进行布局，包括布局容器、图片与媒体，还可以修改其属性、生成.axml文件。同时，该设计器支持基于语言、区域、国家与手机运营商的自定义布局。</p><p>该设计器具有如下组成部分：</p><ul><li>设计界面——以预览的形式展示了界面在目标设备上运行时的样子。</li><li>工具箱——包含了一系列Widget与布局，可以拖拽到设计界面上。</li><li>属性面板——展示了所选Widget的属性。</li><li>大纲视图——以树状结构展示Widget，可以查看层级关系。</li></ul><p>Xamarin Designer可用于Android 2.2到4.0.3，可以针对各种屏幕尺寸、分辨率、布局（portrait或landscape）以及设备配置（如物理键盘或附加的硬件按钮）来创建和编辑界面。</p><p>更新的<a href="http://docs.xamarin.com/android/Releases/Mono_For_Android_4/Mono_For_Android_4.2">Mono for Android 4.2</a>带有一个设备工具栏，可以将使用设计器编辑的应用部署到默认设备中。Xamarin的Android工具的最新版提供了针对Honeycomb与Ice Cream Sandwich的项目模板、签名向导、集成的Logcat、Java Binding库工具、大小降低一半的共享运行时以及一些Bug修复。</p><p>Xamarin并未单独提供该设计器而是将其集成到了Mono for Android中，用户可以使用其每年的订阅下载。</p><p><strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2012/05/Mono-for-Android-Designer">Xamarin’s Mono for Android Now Includes a Visual Designer</a></p>
            
                    <div>来源：http://blog.csdn.net/ricohzhanglong/article/details/7578527</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/17/634728678509199257.html]]></link>
<title><![CDATA[安卓应用程序加密，签名和发布]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Thu, 17 May 2012 16:51:39 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p>1.加密，也就是代码混淆，目的呢，就是防止别人使用反编译工作破解。什么是反编译呢，对于安卓来说，就是你把源代码编译成ＡＰＫ，这ＡＰＫ别人能使用，但就是不明白你怎么做出来的，这时他使用反编译，把ＡＰＫ变成源代码，他一读源代码，就可以做出来一个和你一模一样的程序，从而抢了你风头。如果你研究了什么比较牛Ｂ的数学算法，开发了什么人人称好的游戏，只希望这份荣耀自己一直占有用，不希望这么快就和别人分享，你希望这个秘密能够保存的更持久一些，或者一些其他的原因，反正就是不希望别人快速山寨出你的软件，这时你就可以使用加密。但加密和反编译是相对的，加密只能减慢别人山寨的速度，但对于我们聪明的中国人来说，只要有时间，山寨出来是迟早的事，所以呢，不要太迷信加密，加密只能使你的产品保持新鲜那么一小会儿。如果真有什么厉害的创意需要保密，那就申请专利吧。</p><p>安卓对于ＡＰＫ软件的加密，在2.3版的时候引入了<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">proguard</span>，如果你的工程是2.3，可以在你的工程目录下找到一个名为<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">proguard</span>目录。这目录会对你的代码做一定程度的混淆，要使用<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">proguard</span>混淆代码，只需要在项目根目录下的文件<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255); display: inline ! important; float: none;">default.properties 里添加一行代码：</span></p><p><span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; "><span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">proguard.config=proguard.cfg</span></span></p><p>如下，就是一个完整的<span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255); display: inline ! important; float: none;">default.properties</span>内容</p><p># This file is automatically generated by Android Tools.<br /># Do not modify this file -- YOUR CHANGES WILL BE ERASED!<br />#<br /># This file must be checked in Version Control Systems.<br />#<br /># To customize properties used by the Ant build system use,<br /># &quot;ant.properties&quot;, and override values to adapt the script to your<br /># project structure.<br /><br /># Project target.<br />target=android-10<br />proguard.config=proguard.cfg</p><p><span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; "><span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">但安卓默认不混淆&nbsp;Activity 、Service ... 类的 子类,核心代码不要写在这些类里。</span></span>如果你希望更深一层加密，那就把核心代码使用Ｃ，Ｃ＋＋来写的，使用jni技术，因为用C或C++编写的代码相对于Java来说很难被反编译。<br /></p><span style="font-family:Helvetica, Tahoma, Arial, sans-serif;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; "></span><p>2。签名：</p><p>要发布应用程序，从安全角度来说，签名是必不可少的，防伪，防替。特别在当前中国手机软件业乱象纷呈，吸流量吸费软件横行的年代，如果你开发一个牛Ｂ软件，别人做一个相同名字相同功能的山寨吸费吸流量软件，你可就惨了。恶名远播不说，说不定还要吃官司。有了签名，就能帮你洗清冤曲，还以清白。安卓没有第三方答名授权中心，只在发生纠纷时，可以通过第三方机构仲裁。<span style="font-family:Arial;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255); display: inline ! important; float: none;"><br /></span></p><p><span style="font-family:Arial;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255); display: inline ! important; float: none;">创建key，需要用到keytool (位于jdk1.6.0_24\jre\bin目录下)，使用产生的key对apk签名用到的是jarsigner (位于jdk1.6.0_24\bin目录下)，安装了ＪＤＫ后，如果设置了路径，打开cmd或者终端，输入keytool，就能看到他的帮助信息，在ubuntu下和win下一样。</span></p><p><span style="font-family:Arial;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255); display: inline ! important; float: none;"></span><pre class="brush:brush:fsharp;gutter:false;" style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; margin-right: 0px; margin-left: 22px; font-size: 14px; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">a,生成签名：
keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*说明：-genkey 产生密钥
       -alias demo.keystore 别名 demo.keystore
       -keyalg RSA 使用RSA算法对签名加密
       -validity 40000 有效期限4000天
       -keystore demo.keystore */
b,签名：
&nbsp;jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明：-verbose 输出签名的详细信息
       -keystore  demo.keystore 密钥库位置
       -signedjar demor_signed.apk demo.apk demo.keystore 正式签名，三个参数中依次为签名后产生的文件demo_signed，要签名的文件demo.apk和密钥库demo.keystore.*/</pre>&nbsp;&nbsp;&nbsp; c.查看签名：</p><p><span style="font-family:Arial;color:#000000;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">　　<span style="font-family:Arial;font-size:12px;color:#000000;font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(243, 250, 253); display: inline !important; float: none; ">jarsigner -verify -verbose -certs demo_signed.apk</span><br /></span></p><p>安卓调试的软件，都有测试的自签名，不能再签名，可以右健点击选择export导出应用程序签名，别人的博客有介绍，感兴趣的可以去看看，</p><p><a href="http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html">http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html</a>，</p><p>　d.签名之后，<span style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255);">签名之后，用zipalign(压缩对齐)优化你的APK文件</span><strong style="color: rgb(0, 0, 0); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">。</strong><br /></p><p><pre class="brush:brush:fsharp;gutter:false;" style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; word-wrap: break-word; margin-right: 0px; margin-left: 22px; font-size: 14px; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 25px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">zipalign -v 4 demo_signed.apk final.apk<span style="font-family:Arial,Helvetica,sans-serif;">
</span><span style="font-family: Arial,Helvetica,sans-serif;">

３。发布，找一个用户多的应用程序的网站，注册帐号，上传你的程序，现在国内很多网站都可以免费发布，如安智市场，注册也很快，一会儿就注册完成了。也可以注册<span style="font-family:sans-serif;color:#000000;font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgba(255, 255, 255, 0.933594); display: inline !important; float: none; ">Android Market</span>吧，听说需要几十美金就可以注册一个开发者帐号，上传应用程序，以前听说我们大陆不支持收费软件，不知道现在开通了没有。这个市场是相对全球的，最好开发的软件支持英语。我注册了一个安智市场的开发者帐号，也就几分钟就完成了，<span style="font-family: monospace;">android marker可能会需要更多的时间，呵呵。公布下国内目前的安卓发布网站。
</span></span><p style="word-wrap: break-word; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); line-height: 26px; text-align: left; "><span style="color:#464646;word-wrap: break-word; "><span style="font-family:Arial,宋体,Helvetica,sans-serif;word-wrap: break-word; "><span style="word-wrap: break-word; font-size: 14px; "><strong style="word-wrap: break-word; font-weight: 700; ">1.Google Market&nbsp;&nbsp;</strong></span></span></span></p><p style="word-wrap: break-word; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); line-height: 26px; text-align: left; "><span style="color:#464646;word-wrap: break-word; "><span style="font-family:Arial,宋体,Helvetica,sans-serif;word-wrap: break-word; "><span style="word-wrap: break-word; font-size: 14px; ">&nbsp; &nbsp;&nbsp; &nbsp;谷歌官方市场，你可以注册成为开发者，来上传自己的应用；但目前谷歌官方市场的英文用户大于中文用户，如果你可以同时上传中文和英文，应该更加符合用户需求；开发者账号审核周期大约1-2天，你上传的应用只要符合要求可以立即被发布。</span></span></span></p><p style="word-wrap: break-word; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); line-height: 26px; text-align: left; "><span style="color:#464646;word-wrap: break-word; "><span style="font-family:Arial,宋体,Helvetica,sans-serif;word-wrap: break-word; "><span style="word-wrap: break-word; font-size: 14px; "><br style="word-wrap: break-word; " /></span></span></span></p><strong style="word-wrap: break-word; font-weight: 700; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">2.运营商移动应用商店（排名不分先后） ：</strong><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 中国移动MM：</span><a href="http://mm.10086.cn/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://mm.10086.cn/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 中国联通WoStore：</span><a href="http://store.wo.com.cn/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://store.wo.com.cn/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 中国电信189Store：</span><a href="http://www.189store.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.189store.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><strong style="word-wrap: break-word; font-weight: 700; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">3.独立电子市场（排名不分先后）：</strong><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 亿优市场：</span><a href="http://www.eoemarket.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.eoemarket.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 木蚂蚁：</span><a href="http://www.mumayi.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.mumayi.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; N多网：</span><a href="http://www.nduoa.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.nduoa.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 魅族市场：</span><a href="http://app.meizu.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://app.meizu.com</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 机锋市场：</span><a href="http://apk.gfan.com/Index/Index.html" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://apk.gfan.com/Index/Index.html</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安卓市场：</span><a href="http://sc.hiapk.com/himarket" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://sc.hiapk.com/himarket</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安卓星空：</span><a href="http://www.starandroid.com/apkclient" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.starandroid.com/apkclient</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 应用汇：</span><a href="http://www.appchina.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.appchina.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安智市场：</span><a href="http://market.goapk.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://market.goapk.com/</a><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">（不支持软件墙）</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; XDA软件市场：</span><a href="http://android.xda.cn/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://android.xda.cn/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 历趣市场：</span><a href="http://an.liqucn.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://an.liqucn.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 网易市场：</span><a href="http://m.163.com/android/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://m.163.com/android/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 爱米软件商店：</span><a href="http://www.aimi8.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.aimi8.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 开齐应用商店：</span><a href="http://market.kaiqi.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://market.kaiqi.com/</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安丰网：</span><a href="http://www.anfone.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.anfone.com/</a><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">（不支持软件墙）</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 喜游游：</span><a href="http://www.seyoyo.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.seyoyo.com/</a><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; "></span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 优优网：</span><a href="http://www.uooyoo.com/soft/9716.shtml" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.uooyoo.com/soft/9716.shtml</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 酷派：</span><a href="http://www.coolmart.net.cn/developer/coolmart/index.jsp" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.coolmart.net.cn/developer/coolmart/index.jsp</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; TOMPDA市场：</span><a href="http://www.tompda.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.tompda.com</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 飞鹏：</span><a href="http://www.fpwap.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.fpwap.com</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 非凡软件站：</span><a href="http://www.crsky.com/default.html" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.crsky.com/default.html</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; ZOL：</span><a href="http://xiazai.zol.com.cn/download_cate_android/android_page_1.html" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://xiazai.zol.com.cn/downloa ... android_page_1.html</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安卓星空：</span><a href="http://www.starandroid.com/dev/index" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.starandroid.com/dev/index</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; APK小游戏：</span><a href="http://www.apkxyx.com/" target="_blank" style="word-wrap: break-word; color: rgb(51, 102, 153); text-decoration: underline; font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">http://www.apkxyx.com</a><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><strong style="word-wrap: break-word; font-weight: 700; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">方式二、Android手机论坛的合作　　类型：极少费用</strong><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp; 按照第一种方式仅仅是提交到下载平台是远远不够的，基本上中国Android手机用户都会泡论坛；因为有太多需要沟通和交流的，而论坛也是一些国外最新应用首先发布的集散地。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp; 和论坛的合作方式有两种：1，建立官方账号，有新版或升级，或意见反馈可以直接于用户接触； 2，于论坛官方合作活动，活动是带动安装量，以及收集用户反馈的最好方式，一般一次好的活动策划，可以为一个应用带来几千至上万的安装；成本仅仅是活动奖 品的赞助，大约每次活动几千元。（当然目前一些相对商业化的论坛已经开始针对活动收取广告费，那就另当别论了）。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">目前国内比较火排名前7位的Android手机论坛的推荐：</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安致论坛</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; AVAV安卓论坛</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 木蚂蚁手机乐园</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安智论坛</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 摩托罗拉手机论坛</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 风暴数码</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; 安卓论坛</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp; ZOL应用下载</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">小评：论坛的用户忠诚度高，如果活动成功会行成较好的口碑传播。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><strong style="word-wrap: break-word; font-weight: 700; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); ">方式三、寻找第三方ROM（定制操作系统）合作内置　　类型：免费</strong><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp;目前国内的用户在拿到手机，除了到论坛去交流问题，寻找资源，也会寻找更加符合国人使用习惯的第三方ROM进行刷机；目前人气比较高的几款第三方ROM都是以论坛进行发源地。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">MIUI ROM</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp; 由小米出品的MIUI ROM，因为其美化的效果在初期吸引了众多追随者，但随之也暴露了一些例如太过于耗电、更新频繁等弊端；但仍然不影响初级用户对它的喜爱。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp; 因为小米除了MIUI ROM做了众多周边应用，据了解至少有上百款应用，因此想植入的最基本前提是你的应用是否和他目前已开发的上百款应用没有竞争关系。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">点心OS</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp; 由创新工场的点心团队推出的点心OS，目前不对用户开放；为一些国产手机厂商例如，夏普，提供手机系统方案。优势在于如果能够被点心内置，就有机会直接 在这些国产手机中出现，预计使用点心OS的手机在2011年下旬应该会面世；但和点心的合作，需要有对时间周期有较强的心里准备，因为从一款手机的操作系 统定制到手机面世大概也需要一年多的时间。</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">木蚂蚁ROM</span><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><br style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); " /><span style="font-family:Tahoma, 'Microsoft Yahei', Simsun;color:#444444;font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none; ">&nbsp; &nbsp;&nbsp; &nbsp; 木蚂蚁的ROM目前还未行成品牌系统化，但木蚂蚁联合民间高手推出的木蚂蚁ROM，在众多Android的用户中获得一致口碑，尤其是木蚂蚁HTC DHD ROM，被成为目前国内DHD ROM中性能最强的一款，因此获得了众多追随者；并且其推出的一些列一键ROOT等工具也帮它吸引了一批ROM爱好者。并且相对来说，木蚂蚁目前更关注在 Market和论坛而没有开发过多应用，相对与合作伙伴会发生的竞争关系及冲突较少。其王牌主打功能以 省电、透明、高效为主。</span>

参考文章：
<a href="http://erbo2008.iteye.com/blog/1326786">http://erbo2008.iteye.com/blog/1326786</a>
<a href="http://ictch.iteye.com/blog/1045194">http://ictch.iteye.com/blog/1045194</a>
<a href="http://hi.baidu.com/lvqiyong/blog/item/ef8a8657da8491deb645ae12.html">http://hi.baidu.com/lvqiyong/blog/item/ef8a8657da8491deb645ae12.html</a>
<a href="http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html">http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html</a>
<a href="http://www.eoeandroid.com/forum.php?mod=viewthread&amp;tid=154655">http://www.eoeandroid.com/forum.php?mod=viewthread&amp;tid=154655</a>
</pre></p>
            
                    <div>来源：http://blog.csdn.net/blogercn/article/details/7576612</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/17/634728641183109176.html]]></link>
<title><![CDATA[android中ADT版本问题： java.lang.NoClassDefFoundError和conversion to dalvik format failed with error 1错误]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Thu, 17 May 2012 15:46:14 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p>&nbsp;<span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;最近在ubuntu上面配置android开发环境时候出现n多错误，把心得说一下，如果遇到类似错误，修改下就好了，到目前为止，ADT的版本已经升级到18了。当SDK版本升级到4.0.3的时候，会要求ADT版本是17或者更高的版本，当升级以后，如果出现问题，有可能是JDK版本的问题，注意一下，ADT17要求JDK版本必须在JDK1.6或者更高版本。</span></p><p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;当ADT的版本是17或者更高的时候，如果项目中引用了第三方jar包，会出现java.lang.NoClassDefFoundError这个错误，发现不了jar包里面被引用的类。如何修改呢？在eclipse中，引用的第三方jar包都放在lib下，把lib修改成libs，就可以了，有人可能会问，没有lib文件夹，那就新建一个libs文件夹，把第三方类库放到该文件夹中，这时候会报错，需要重新build path下，</span></p><p><span style="font-size:16px;"><img src="/Upload/EditorImage/image/android/201205/6347286567374876711336578180_2299.jpg" alt="" /><br /></span></p><p><span style="font-size:16px;"><br /></span></p><p><span style="font-size:16px;">clean下代码，应该就可以了。</span></p><p><span style="font-size:16px;">如果对这个文章不太满意，建议搜索的时候搜一下关键字：</span></p><p><span style="font-size:16px;">android adt &nbsp;java.lang.NoClassDefFoundError</span></p><p><span style="font-size:16px;">而非直接&nbsp;java.lang.NoClassDefFoundError</span></p><p><span style="font-size:16px;">因为后者搜索大部分内容是讲的j2se和j2ee里面的问题。</span></p><p><br /></p><p><span style="font-size:16px;">今天早晨继续编译，发现出现conversion to dalvik format failed with error 1错误，如果遇到此问题，先clean下，如果没有解决，打开build path的 configure build path ,如上图，看看有没有重复的jar包，有的话，删除重复包。就可以了。<br /></span></p><p><span style="font-size:16px;">有问题欢迎留言探讨。</span></p>
            
                    <div>来源：http://blog.csdn.net/aomandeshangxiao/article/details/7552109</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/14/634726364560611776.html]]></link>
<title><![CDATA[webOS失败了，Boot2Gecko可以成功吗？]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Mon, 14 May 2012 23:55:02 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[<p>背景：“一款新的移动操作系统诞生了。Telefonica和Mozilla联手推出了Open Web Devices。并发豪言，将取代苹果/谷歌双寡头垄断和商品化的应用程序生态系统。他们会比以前的webOS做得更好吗？VisionMobile的业务分析师Stijn Schuermans将就这一问题进行详细阐述。”</p>
<h2> <a href="/Upload/EditorImage/image/android/201205/634726358031286147VM_Boot2Gecko.jpg"><img class="alignnone size-full wp-image-2823" title="VM_Boot2Gecko" src="/Upload/EditorImage/image/android/201205/634726358031286147VM_Boot2Gecko.jpg" alt="" width="500" height="420" /></a></h2>
<p><em>“</em><em>人们说我是个梦想家，其实我并不是孤身一人。”<br />
</em>John Lennon</p>
<p><span id="more-2822"></span></p>
<p>Mozilla和Telefonica正在合作开发一款新的移动操作系统。该项目由Mozilla命名为Boot2Gecko，而Telefonica将运行该系统的设备称为Open Web Devices。其目标是：手机完全依赖于web技术，并且手机中的所有应用（从拨号到游戏）都用HTML5开发。</p>
<p>于2012年在巴塞罗那召开的MWC会议上，Mozilla 在高端智能手机Samsung Galaxy II上演示了Boot2Gecko。同在这场会议上，Telefonica在一款由高通公司提供的低端参考设计上展示了新操作系统，该参考设计将来可以在经济型智能手机（比Android还要便宜）上运行。Mozilla还宣布了Mozilla Marketplace（web app商店）的开张。</p>
<p><a href="/Upload/EditorImage/image/android/201205/634726358076612989tested.png"><img class="alignnone size-full wp-image-2824" title="tested" src="/Upload/EditorImage/image/android/201205/634726358076612989tested.png" alt="" width="250" height="270" /></a></p>
<p><strong>表面上看，这是大型电信运营商和大型互联网公司的联合行动，意义重大。<strong>Mozilla </strong></strong><strong>和 Telefonica</strong><strong>打算从低端做起，试图颠覆Apple/Google</strong><strong>的</strong><strong>双寡头垄断局面。</strong>Telefonica专注于为低端设备提供良好的用户体验，想以此来抢占新兴市场。Telefonica打算推出直接支付功能（当用户购买移动app时），但在新兴市场上信用卡还不够普通。<strong></strong></p>
<p>正如《创新者的困境》中所说，从低端市场入手是明智的选择：Android设备制造商要想持续盈利，最简单的办法就是远离Open Web Devices这样的低端市场，而专注于那些真正持有信用卡的Android高端用户群。这是击退Android的最好方式。Google对此也不会做出太大的反应，因为他们的主要盈利点是广告，而广告在任何平台上都可以做得很好。</p>
<p>Telefonica这样的破坏性战略可以给Google一点颜色看看。Apple和Google的app市场给了电信运营商很大的压力，因为Apple和Google拥有庞大的用户群，而使电信公司沦为了“哑管道”。既然电信运营商不是app生态系统中的正式参与者，那么为什么不把app全部商业化呢？Telefonica推出Open Web Devices试图削弱主流平台的势力，同时将app开发和部署转移到更“中立”的web环境，以打击主流平台app的垂直发展。如果app一开始是在跨平台环境下开发的，那么平台的势力将被削弱。要实现这一目标，Mozilla是电信公司的理想搭档，因为Mozilla是一个非盈利性组织，他们的使命是保持互联网的开放和免费。</p>
<p>作为Apple/Google的竞争者，Mozilla 和 Telefonica总体上来说是一个不错的B2G组合；Mozilla可以提供软件基础（APIs）以及相应的开发环境，而Telefonica负责OEM（原始设备厂家）交易、货币化及app商店。</p>
<p><strong>作为一种新的web</strong><strong>平台，从理论上讲Boot2Gecho</strong><strong>是可以在webOS</strong><strong>失败地方取得成功的；</strong>Boot2Gecho是开源的（这不同于当时webOS的模式），拥有多个感兴趣的OEM合作商，有名列前5的电信公司作后盾，并且刚好处于HTML5时代，HTML5已经在技术上有了很大的发展并且受到了工业界广泛的支持。实际上，B2G有望作为倡导者而带领HTML5从使能技术发展到全平台应用，但实现起来还有很长的路要走。</p>
<p><strong>其实，Telefonica</strong><strong>还没有足够的实力来赢得消费者和开发者的青睐。</strong></p>
<p>— 开源能够降低开发者的开发成本，但对于用户来讲无足轻重。</p>
<p>—     Web并不是良好用户体验的代名词，对游戏开发者的吸引力也很有限。</p>
<p>—     安装web操作系统的移动设备可以与Apple/Google抗衡，但是在操作系统成熟之前、在拥有大规模的潜在市场之前，Telefonica和OEM合作商要做出巨大的投资。注意到没有，Microsoft为了进入其潜在市场而每年向Nokia支付约10亿美金。</p>
<p>Boot2Gecko要想成功，需要在五个关键方面与其它平台相竞争：</p>
<ol>
<li>软件基础—要具有丰富的APIs并且管理得当。Telefonica已经向Boot2Gecko(以WAC中的早期成果为基础)贡献了很多设备API粘合代码。但是，要想与iOS、Android、WP7竞争还需要付出相当大的努力。</li>
<li>开发者生态系统—以促进创新、迎合多样化的用户需求。有数百万的Web开发者需要用到B2G，例如，使用其特定的APIs及app分销系统。</li>
<li>设备和销售，例如，数千万手机销售量的巨大潜在市场。作为名列前5的电信公司，Telefonica有很大的优势，但是需要将设备提供商的注意力（尤其是LG这样的早期合作商）转移到项目投资和产量保证上。积极因素之一是，B2G运行于相同的参考设计、基于同一套核心库，因此，可以比Windows Phone更快地进入市场。</li>
<li>货币化。为了营造一个健康的开发者生态系统，货币化起着至关重要的作用，而Telefonica计划推出运营商计费功能。</li>
<li>零售。将来由哪家合作商来负责提供app(在移动设备上的)店面、零售、推销，目前尚不清楚。</li>
</ol>
<p>值得称赞的是，Telefonica和Mozilla在Boot2Gecho项目上进展迅速。该项目于2010年10月份进行首次试验，于2011年3月份正式启动。于2012年2月份进行了手机演示，该手机拥有所有核心app，而且据称，其UI体验胜过了最低端的Android手机。据我们所知，Telefonica所演示的手机与新款iPhone 3G的硬件是一样的，而价格却只有后者的1/10。</p>
<p>这就是说，<strong>HTML5</strong><strong>平台强力</strong><strong>竞争者（像Facebook Platform</strong><strong>和Google Chrome</strong><strong>）在构建开发者生态系统方面已经远远走在了前头</strong>。Facebook和Chrome(浏览器、操作系统、尤其是网上商店)都已经在跨屏幕方面取得了不错的成果 ，并且已经解决了部分推销、零售、货币化问题。Mozilla的Marketplace是迈向成功的关键一步，但该组织还需要努力追赶其竞争对手。</p>
<p>此外，如果Telefonica和其它电信公司的目标是打垮Apple/Google的双寡头垄断局面的话，很显然有一个很廉价的替代方法，而不一定要构建web-app开发平台。通过使用跨平台开发工具（请考考我们的完整报告- <a href="http://www.CrossPlatformTools.com" target="_blank">www.CrossPlatformTools.com</a>），开发者可以很容易地将应用发布到多个平台，也可以扁平化Apple/Google开发生态系统的竞争格局。</p>
<p>总之，为了颠覆iOS/Android双寡头垄断局面，Telefonica和Mozilla正在付出巨大的努力。他们专注于低端设备，并且试图降低app与平台之间的依赖程度，这些都做得很好。但是对HTML5技术的应用及开放程度方面做得还不到位。尤其是Mozilla，它必须要证明新平台对web开发者的吸引力，并构建一个充满活力的开发生态系统。Telefonica不仅要使设备供应商保持热情，还要保证手机的产量。最后，<strong>这一计划如何在竞争中取得成功尚不清楚，</strong><strong>Facebook</strong><strong>和Chrome</strong><strong>又或者是Telefonica</strong><strong>和Mozilla</strong><strong>应该投入精力来探索跨平台开发工具的替代方法。</strong></p>


<p>作者：Stijn Schuermans ，发表于2012年3月27日</p>
<p>译者：林建光</p>

<p>原文链接：</p>
<p><a href="http://www.visionmobile.com/blog/2012/03/boot2gecko-can-the-new-html5-champion-succeed-where-webos-failed/">http://www.visionmobile.com/blog/2012/03/boot2gecko-can-the-new-html5-champion-succeed-where-webos-failed/</a></p>

<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="HTML5游戏开发之将Easel.js和Box2d在画布中结合起来" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2712.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2822.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635807825353224868941.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTML5游戏开发之将Easel.js和Box2d在画布中结合起来</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011回顾：五大失败的web案例" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2011%2F12%2F1175.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2822.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635807948214713493639.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011回顾：五大失败的web案例</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="移动web设计&amp;开发45大实用指南" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F01%2F1606.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2822.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/634726358082542830wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">移动web设计&amp;开发45大实用指南</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="在PhoneGap1.2版本中有什么新特性？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2011%2F11%2F294.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2822.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635808631969113493931.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">在PhoneGap1.2版本中有什么新特性？</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table><div>来源：http://www.webapptrend.com/2012/05/2822.html</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/14/634726364437394003.html]]></link>
<title><![CDATA[跨平台领域的淘金潮——为什么跨平台开发工具会改变现状]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Mon, 14 May 2012 23:54:49 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[<h4><a href="http://www.webapptrend.com/wp-content/uploads/2012/05/112.jpg"><img class="alignright size-medium wp-image-2976" title="1" src="/Upload/EditorImage/image/android/201205/634726357631865744112-300x252.jpg" alt="" width="300" height="252" /></a>本文来自国外知名调查分析机构Vision Mobile数月前发布的2012跨平台开发工具报告，报告专业而具洞见地对当前跨平台工具市场现状和未来做了调查分析，强烈推荐给关注此领域的开发者。</h4>
<h4>跨平台的淘金</h4>
<p>2012<span style="font-family: 宋体;">年标志着移动平台领域的一个拐点。</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">iOS</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Google</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">平台已经推进到以前无法想象的高度，截至</span><span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年年底，在这两个平台上，分别有超过</span>540,000和350,000种应用程序，这些应用程序来自成百上千的开发者。正因为所谓的网络效应（network effects），<span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Google</span><span style="font-family: 宋体;">对竞争者已经建立起巨大的壁垒，即使是像微软这样花费超过</span><span style="font-family: 'Times New Roman';">10</span><span style="font-family: 宋体;">亿美元进行营销的竞争对手，仍然远远落后于</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Google</span><span style="font-family: 宋体;">。</span></p>
<p>然而，正当Apple/Google的双寡头垄断看起来似乎坚不可摧之时，对诸如Microsoft的 WP7 以及 Samsung的Bada这样的竞争者来说，前进道路上的障碍正在被扫除：跨平台的工具让开发者可以针对多个平台进行开发，让代码有较高的重用率，从而让增长的开销较小。</p>
<p><span id="more-2940"></span>简言之，跨平台的开发工具（<span style="font-family: 'Times New Roman';">CPTs</span><span style="font-family: 宋体;">）允许开发人员</span>开发针对多个平台的应用，针对各个平台的开发可以基于相同的核心代码库，或使用相同的设计工具。CPTs<span style="font-family: 宋体;">的影响是两方面的，它们可以减少移动开发进入壁垒，又使得开发者转向新的开发平台更容易，从而对某个平台的黏度降低了。 </span></p>
<p>开发的民主化 首先，跨平台的工具允许开发人员为他们之前所不能进行开发的平台进行开发。<span style="font-family: 'Times New Roman';"> CPTS</span>使得进入门槛降低了，例如，现在Web<span style="font-family: 宋体;">开发人员仅使用</span><span style="font-family: 'Times New Roman';">HTML</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">JavaScript</span>就能够创建本地智能手机应用程序。<span style="font-family: 'Times New Roman';">CPTS</span><span style="font-family: 宋体;">可以提供易于使用的语言和开发工具，并</span>便于模块化开发和软件组件重用。有些工具还允许开发人员使用相同的代码库来针对多种屏幕进行开发—— 并且，这种开发不止局限于手机，还针对平板电脑、游戏机、台式电脑和电视机。这便是软件开发的<span style="font-family: 'Times New Roman';">“</span><span style="font-family: 宋体;">民主化</span><span style="font-family: 'Times New Roman';">”</span><span style="font-family: 宋体;">，</span>即平台可以开放给所有类型的开发者。</p>
<p>减少开发者的平台固化 跨平台工具的第二个影响是战略性的。CPTs减少了平台的退出壁垒，也即“开发者平台固化（developer lock-in）”。例如，<span style="font-family: 'Times New Roman';">CPTs</span><span style="font-family: 宋体;">让开发者在为</span><span style="font-family: 'Times New Roman';">iPhone</span><span style="font-family: 宋体;">开发的同时也可以为</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Windows Phone 7</span><span style="font-family: 宋体;">开发。在</span><span style="font-family: 'Times New Roman';">App</span><span style="font-family: 宋体;">的生态系统中，竞争体现在四个方面：</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">的数量，</span><span style="font-family: 'Times New Roman';">top app</span><span style="font-family: 宋体;">的可用性，</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">投入市场的时间（一个</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">很难同时出现在所有平台的</span><span style="font-family: 'Times New Roman';">app stores</span><span style="font-family: 宋体;">中）以及总体的</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">质量。在理论上讲，跨平台的工具使得网络效应减小了，从而使非</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Google</span><span style="font-family: 宋体;">平台更容易参与竞争，比如现在</span><span style="font-family: 'Times New Roman';">Bada</span><span style="font-family: 宋体;">平台就更容易参与竞争了，因为</span><span style="font-family: 'Times New Roman';">CPTs</span><span style="font-family: 宋体;">允许开发者在为</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">开发的同时也能为</span><span style="font-family: 'Times New Roman';">Bada</span><span style="font-family: 宋体;">开发。换句话说，跨平台的工具让小的平台不仅可以在数量方面与大的平台竞争，也能在</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">的可用性、到达市场的时间和质量方面进行竞争。</span></p>
<p>众所周知，<span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">试图通过在</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">的设备上禁止</span><span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">Flash</span> runtime<span style="font-family: 宋体;">来增加开发者对于</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">XCode</span><span style="font-family: 宋体;">工具以及</span><span style="font-family: 'Times New Roman';">iOS API</span><span style="font-family: 宋体;">的黏度——它成功做到了。然而，跨平台工具让打破</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">的限制更为容易，它们可以将</span><span style="font-family: 'Times New Roman';">runtime</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">进行打包，或者在编译连接的时候将与平台无关的代码翻译成本地代码。</span></p>
<p>正如我们将要看到的那样，2012<span style="font-family: 宋体;">标志着跨平台工具在技术上的成熟</span>。使用<span style="font-family: 'Times New Roman';">Flash</span><span style="font-family: 宋体;">或者</span><span style="font-family: 'Times New Roman';">Java</span><span style="font-family: 宋体;">这种通用的方法已经失去了其吸引力，新的基于</span>thin runtimes、cross-compilers 以及 hybrid web apps的方法更为喜闻乐见。<span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年在初创阶段受到批评的工具现在要么获得了</span><span style="font-family: 'Times New Roman';">VC</span><span style="font-family: 宋体;">，要么被收购，要么发布了主要的产品。例如，</span>MoSync 2.7使得网络编码变为可能，并且它和Marmalade一起增加了实时本地<span style="font-family: 'Times New Roman';">UI</span><span style="font-family: 宋体;">元素。此外，</span><span style="font-family: 'Times New Roman';">Sencha</span><span style="font-family: 宋体;">已经准备发布</span>Touch version 2.0，在该版本中，<span style="font-family: 'Times New Roman';">Sencha</span><span style="font-family: 宋体;">推出了自己的</span><span style="font-family: 'Times New Roman';">web</span><span style="font-family: 宋体;">打包方法（</span><span style="font-family: 'Times New Roman';">web wrapper solution</span><span style="font-family: 宋体;">）以及流水线式的构建流程。其他的，比如</span>LiveCode Android deployment pack以及Mono for Android，都是在<span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年才正式发布的。</span></p>
<p>与此同时，<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">系列的技术已经过了狂热的高峰期正在慢慢走向低谷（此观点来源于</span>Gartner’s Hype Cycle）。HTML5<span style="font-family: 宋体;">还没有真正成为一个平台</span>；它缺乏一些必要的元素，比如实施的一致性、主流的发布渠道（也即<span style="font-family: 'Times New Roman';">app stores</span><span style="font-family: 宋体;">）以及除</span><span style="font-family: 'Times New Roman';">mobile ads</span><span style="font-family: 宋体;">以外的盈利模式。然而，因为跨平台工具的存在，</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">（包括</span><span style="font-family: 'Times New Roman';">Javascript</span><span style="font-family: 宋体;">）正让</span><span style="font-family: 'Times New Roman';">mobile app</span><span style="font-family: 宋体;">逐步发展。有好几十个工具致力于让</span><span style="font-family: 'Times New Roman';">web</span><span style="font-family: 宋体;">开发者使用现有的技术构建</span>‘native’ 或者 ‘hybrid’的手机应用，这其中包括Appcelerator, PhoneGap, Rhodes, Sencha 2.0 以及Worklight。同时，mobile frameworks在致力于让<span style="font-family: 'Times New Roman';">web apps</span><span style="font-family: 宋体;">能提供一个</span>“near native”的用户体验，这其中包括jQuery Mobile, Sencha, iUI, 以及适用于游戏的Impact.js.。<span style="font-family: 'Times New Roman';">CPTs</span><span style="font-family: 宋体;">以及为</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">扫清了道路，不仅让它可以成为一个平台，而且会成为智能手机</span><span style="font-family: 'Times New Roman';">apps</span><span style="font-family: 宋体;">的主流开发技术。</span></p>
<h4>跨平台领域的赢家与输家</h4>
<p>在写这份报告的时候，跨平台开发正十分流行，随处可见收购、资产剥离和融资。<span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">Flash</span><span style="font-family: 宋体;">，曾经作为跨平台解决方案的经典方法，正面临退出，</span><span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">在</span><span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年</span><span style="font-family: 'Times New Roman';">11</span><span style="font-family: 宋体;">月，宣布了将会停止为</span><span style="font-family: 'Times New Roman';">mobile browser</span><span style="font-family: 宋体;">开发</span><span style="font-family: 'Times New Roman';">Flash</span><span style="font-family: 宋体;">插件。同时，</span><span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">会同时终止</span><span style="font-family: 'Times New Roman';">Flex SDK</span><span style="font-family: 宋体;">，而将力量集中于</span>ActionScript-only开发。从<span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年中期起，跨平台工具提供商方面的收购包括</span>RhoMobile, Metismo, Aptana, ParticleCode, Nitobi, Strobe和Worklight。另外，Alcatel Lucent在<span style="font-family: 'Times New Roman';">2010</span><span style="font-family: 宋体;">年收购的</span>Open-Plug因为资金缺乏而不得不停止它的产品（本章后面的案例研究将会谈到这一点）。同时，<span style="font-family: 'Times New Roman';">Sencha</span><span style="font-family: 宋体;">，一个高调的开发</span><span style="font-family: 'Times New Roman';">native</span><span style="font-family: 宋体;">、</span><span style="font-family: 'Times New Roman';">touchscreen UI</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">Javascript</span><span style="font-family: 宋体;">框架，在</span><span style="font-family: 'Times New Roman';">2010</span><span style="font-family: 宋体;">年和</span><span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年完成了两轮融资，筹到了</span><span style="font-family: 'Times New Roman';">2900</span><span style="font-family: 宋体;">万美元。下面的三个表列出了跨平台工具领域主要的收购、退出以及</span><span style="font-family: 'Times New Roman';">VC</span><span style="font-family: 宋体;">融资。 </span></p>

<h4><a href="/Upload/EditorImage/image/android/201205/634726357731830955图片1.png"><img class="size-full wp-image-2945 aligncenter" title="图片1" src="/Upload/EditorImage/image/android/201205/634726357731830955图片1.png" alt="" width="443" height="316" /></a>投资涌入</h4>
<p>正当投资者们正在寻找下一个经济增长点时，跨平台工具出现在他们的视野，在这个领域，筹集到超过两亿美元。在主要风投资金的支持下，Appcelerator扮演了中间人的角色，它自己在试图<span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">的生态周期中提供更为端到端的解决方案，收购了</span>Particlecode, Aptana 和Cocoafish。Worklight在被卖到<span style="font-family: 'Times New Roman';">IBM</span><span style="font-family: 宋体;">之前，获得了</span><span style="font-family: 'Times New Roman';">2100</span><span style="font-family: 宋体;">万美元的投资，而</span>Pyxis在筹到<span style="font-family: 'Times New Roman';">100</span><span style="font-family: 宋体;">万美元以后，重命名为</span>Verivo。</p>
<h4><a href="/Upload/EditorImage/image/android/201205/634726357792736465图片2.png"><img class="size-full wp-image-2946 aligncenter" title="图片2" src="/Upload/EditorImage/image/android/201205/634726357792736465图片2.png" alt="" width="443" height="310" /></a></h4>
<h4><a href="/Upload/EditorImage/image/android/201205/634726357864331877图片3.png"><img class="size-full wp-image-2947 aligncenter" title="图片3" src="/Upload/EditorImage/image/android/201205/634726357864331877图片3.png" alt="" width="443" height="383" /></a>CPT<span style="font-family: 黑体;">中的资产剥离：</span>OpenPlug案例</h4>
<p>在一片大好的投资环境下，跨平台工具的竞争中也出现了一些失败的例子。<span style="font-family: 'Times New Roman';">2010</span><span style="font-family: 宋体;">年</span><span style="font-family: 'Times New Roman';">9</span><span style="font-family: 宋体;">月，</span>Alcatel-Lucent收购了<span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">。这个电信基础设施供应商，希望建立一个电信运营商和开发者之间的战略平台。然而一年以后，在</span><span style="font-family: 'Times New Roman';">2012</span><span style="font-family: 宋体;">年</span><span style="font-family: 'Times New Roman';">12</span><span style="font-family: 宋体;">月，</span><span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">宣布终止运营，因为它吸引不到足够的开发者。</span></p>
<p>这个公司最初是有着嵌入式软件背景的公司，曾经为非智能手机（feature phones）开发过名为ELIPS Suite的操作系统，这个系统在<span style="font-family: 'Times New Roman';">2008</span><span style="font-family: 宋体;">年大量生产，尤以和</span>Sony Ericsson的结合最为出名。那时候，手持设备代工生产商（handset OEMs）将注意力从非智能机转向了在智能机中采用<span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">以对抗</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">iPhone</span><span style="font-family: 宋体;">带来的竞争压力。</span></p>
<p>结果，<span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">转向了生产跨平台的</span><span style="font-family: 'Times New Roman';">runtime</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">toolset</span><span style="font-family: 宋体;">，并于</span>Adobe MAX 2009会议上发布了<span style="font-family: 'Times New Roman';">beta</span><span style="font-family: 宋体;">版，该版本以</span>ELIPS Studio冠名。它的目标用户群是那些想要从桌面端拓展到智能机的<span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">开发者。这样是不合时宜的，因为这个时候恰逢</span><span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">为</span><span style="font-family: 'Times New Roman';">iPhone</span><span style="font-family: 宋体;">推出了</span>Flash packager，为<span style="font-family: 'Times New Roman';">Mobile</span><span style="font-family: 宋体;">推出了</span><span style="font-family: 'Times New Roman';">AIR</span><span style="font-family: 宋体;">。</span>ELIPS Studio那时候使用的还是Adobe丰富的应用框架（<span style="font-family: 'Times New Roman';">Flex</span><span style="font-family: 宋体;">以及</span><span style="font-family: 'Times New Roman';">MXML</span><span style="font-family: 宋体;">），这个框架很快便受到</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">的挑战，并最终被</span><span style="font-family: 'Times New Roman';">Adobe</span><span style="font-family: 宋体;">所淘汰。</span><span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">还被指责说不能让</span><span style="font-family: 'Times New Roman';">toolset</span><span style="font-family: 宋体;">和</span>Adobe的MXML 和AIR APIs更为兼容。</p>
<p>最终<span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">没能找到一个盈利模式</span>，它面临的最主要的问题是劝说习惯了免费增值产品的用户付费试用它的支持功能和专业服务。它的竞争对手Appcelerator让这一问题更为严重，因为Appcelerator有丰富的<span style="font-family: 'Times New Roman';">VC</span><span style="font-family: 宋体;">资金，因此</span>Appcelerator的产品都是免费的。和其他产品不同，OpenPlug没有任何云服务产品，也就没有其他销售来源。</p>
<p>OpenPlug的母公司Alcatel-Lucent，作为一个运营商，显然不能帮助<span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">找到开发者。相反，这个公司发现，开发者们都没有把运营商看做</span><span style="font-family: 'Times New Roman';">mobile app</span><span style="font-family: 宋体;">生态系统中的一个重要部分。在终止运营以前，</span><span style="font-family: 'Times New Roman';">OpenPlug</span><span style="font-family: 宋体;">聚集了</span>22,000注册开发者，但只有少量是活跃用户，大多数人只是尝试写过“<span style="font-family: 'Times New Roman';">Hello World</span><span style="font-family: 宋体;">”后便不了了之了。</span></p>
<h4>跨越赶时髦的阶段</h4>
<p>跨平台工具已经度过了“赶时髦”的阶段，而成为现今的主流了。一个工具提供商——Sencha——声称有<span style="font-family: 'Times New Roman';">160</span><span style="font-family: 宋体;">万开发者，并且有</span><span style="font-family: 'Times New Roman';">30</span><span style="font-family: 宋体;">万注册社区用户。游戏开发平台</span>Unreal声称有<span style="font-family: 'Times New Roman';">100</span><span style="font-family: 宋体;">万的</span><span style="font-family: 'Times New Roman';">SDK</span><span style="font-family: 宋体;">安装量。</span>Unity在<span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年有很大增长，它有</span><span style="font-family: 'Times New Roman';">80</span><span style="font-family: 宋体;">万注册开发者，其中有</span><span style="font-family: 'Times New Roman';">20</span><span style="font-family: 宋体;">万是活跃用户。</span>Appcelerator原本有<span style="font-family: 'Times New Roman';">25</span><span style="font-family: 宋体;">万用户，现在随着它收购</span>Aptana并将它的“Titanium”技术整合到流行了Aptana IDE中，它的用户猛然增加了<span style="font-family: 'Times New Roman';">160</span><span style="font-family: 宋体;">万。</span>PhoneGap已经被下载<span style="font-family: 'Times New Roman';">60</span><span style="font-family: 宋体;">万次，并且被整合到几十个移动应用平台以及</span>App builders中。跨平台工具对于消费者也有影响。Corona声称用它的工具创建的应用已经有<span style="font-family: 'Times New Roman';">6000</span><span style="font-family: 宋体;">多种，这些应用在</span><span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年的下载量有</span><span style="font-family: 'Times New Roman';">3500</span><span style="font-family: 宋体;">万次。</span>Appcelerator声称用它创建的应用有<span style="font-family: 'Times New Roman';">35000</span><span style="font-family: 宋体;">种，并且有</span><span style="font-family: 'Times New Roman';">4000</span><span style="font-family: 宋体;">万设备部署</span><span style="font-family: 'Times New Roman';">(</span>device deployments)<span style="font-family: 宋体;">。  </span></p>
<h4>在跨平台工具出现的背后</h4>
<p>跨平台工具的出现主要是为了处理在<span style="font-family: 'Times New Roman';">mobile apps</span><span style="font-family: 宋体;">开发中出现的三个市场上主要的障碍：平台碎片、进入新平台的壁垒以及管理开发资源。</span></p>
<h4>处理平台碎片</h4>
<p>跨平台的工具出现之初便是为了解决设备和平台的碎片化。Java ME可以处理几十种<span style="font-family: 'Times New Roman';">2000s</span><span style="font-family: 宋体;">系列的由定制操作系统驱动的手机——但是开发者需要能支持超过</span><span style="font-family: 'Times New Roman';">200</span><span style="font-family: 宋体;">种设备，以便能为在任何一个国家内的</span><span style="font-family: 'Times New Roman';">80%</span><span style="font-family: 宋体;">的设备做开发。</span><span style="font-family: 'Times New Roman';">Mobile web</span><span style="font-family: 宋体;">站点也是因为浏览器对标准执行很差而很难找到通用解决方法；即使在现在，</span><span style="font-family: 'Times New Roman';">Windows Phone</span><span style="font-family: 宋体;">上的</span><span style="font-family: 'Times New Roman';">IE</span><span style="font-family: 宋体;">对</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">的支持度只比得上</span><span style="font-family: 'Times New Roman';">Apple</span><span style="font-family: 宋体;">的</span><span style="font-family: 'Times New Roman';">Safari</span><span style="font-family: 宋体;">所能支持的一半。另外，要能够发布类似于</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">感觉的应用，</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">还有很长一段路要走，还需要不菲的调整。为</span><span style="font-family: 'Times New Roman';">iPad</span><span style="font-family: 宋体;">以及</span><span style="font-family: 'Times New Roman';">Android tablets</span><span style="font-family: 宋体;">开发了</span>Financial Times HTML5 app的Assanka，说它为了开发iPad 版本的Financial Times HTML5 app<span style="font-family: 宋体;">，花了</span><span style="font-family: 'Times New Roman';">24</span><span style="font-family: 宋体;">人月（估计为</span>US$400,000），然后又花了另外<span style="font-family: 'Times New Roman';">12</span><span style="font-family: 宋体;">人月将这个</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">移植到</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">上去。</span></p>
<p>除了设备间的碎片，平台碎片也是很严重的。<span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">因为它的运行时碎片而臭名昭著；在</span><span style="font-family: 'Times New Roman';">2012</span><span style="font-family: 宋体;">年</span><span style="font-family: 'Times New Roman';">2</span><span style="font-family: 宋体;">月，有三个不同版本的</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">平台（</span>API levels 7,8 and 10），互相之间只有超过2%<span style="font-family: 宋体;">的相同点。所有这三个版本都落后于最新发布的版本，这个版本是</span>API level 15的，前面过渡性的API levels (11-14)是针对平板电脑的（由Gingerbread发布）。</p>
<p>对了应对碎片化问题，跨平台工具提供商在云中提供了一些设备相关优化手段以及<span style="font-family: 'Times New Roman';">web</span><span style="font-family: 宋体;">资源重新表现方法。数据库中的设备详细参数和性能可以帮助优化图像大小、重新确定布局以及用户界面、实施一些折中而非强迫开发者一定要找到通用的方法。从传统上讲，设备性能数据库（</span>device capability databases）是由像Wurlf, DotMobi 以及 DetectRight.这样的专营公司提供的。慢慢的，device databases有了更多来源，比如通信架构公司（如WDS, Ericsson, mFormation, Ascom），通信公司本身（如AT&amp;T device capabilities API），以及已有的跨平台工具（如Netbiscuits, Mobile Distillery, Sevenval）。BKRender，另外一个跨平台解决方案，提供了含<span style="font-family: 'Times New Roman';">6000</span><span style="font-family: 宋体;">种设备的数据库以及一个</span>HTTP<span style="font-family: 宋体;">反向代理</span>（an HTTP reverse proxy）来优化移动在站点。</p>
<p>一些<span style="font-family: 'Times New Roman';">CPTs</span><span style="font-family: 宋体;">因为内部咨询项目的碎片化问题需求而成长起来。</span>其中的一个例子是Enough Software，，它是给<span style="font-family: 'Times New Roman';">Java ME apps</span><span style="font-family: 宋体;">提供优化工具的。</span>Enough Software走的是跨平台工具领域中的典型路线——先解决他们在自己的项目中遇到的碎片化问题，然后将解决方案转化为一个商业工具。这条路随后被Pyxis (Verivo),、Netbiscuits、Marmalade 以及 DragonRad所模仿。</p>
<p>尽管CPTs开始解决一些平台碎片化问题，但是又出现了新维度的碎片化。Handy Games的<span style="font-family: 'Times New Roman';">CEO</span> Christopher Kassulke说，“现在的碎片化已经是4D matrix的了”。他提示开发者要处理平台间的碎片化，如软件平台，计费平台（以及定价模型），广告平台以及社交平台。</p>
<h4><strong>让为新平台以及设备开发成为可能</strong></h4>
<p>对于参与到我们的在线调查的<span style="font-family: 'Times New Roman';">2500</span><span style="font-family: 宋体;">位开发者来说，我们发现影响跨平台工具选择的最重要的因素是该工具支持的平台广泛程度。除了占统治地位的</span><span style="font-family: 'Times New Roman';">iOS</span><span style="font-family: 宋体;">平台以及</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">平台，</span>许多平台都在争夺亚军位置——包括Windows Phone 7, Bada以及BlackBerry，更不用说针对各式屏幕的平台了，比如针对桌面机屏幕、游戏机屏幕和机顶盒平台屏幕。我们发现开发者都将<span style="font-family: 'Times New Roman';">iOS</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">作为起跳板，并在随后拓展到新的平台。现今非常流行的</span>Appcelerator 和Marmalade工具的用户中有超过<span style="font-family: 'Times New Roman';">90%</span><span style="font-family: 宋体;">是定位在</span><span style="font-family: 'Times New Roman';">iOS</span><span style="font-family: 宋体;">，有超过</span><span style="font-family: 'Times New Roman';">80%</span><span style="font-family: 宋体;">是定位在</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">。而</span><span style="font-family: 'Times New Roman';">CPT</span><span style="font-family: 宋体;">的整个用户群中有超过</span><span style="font-family: 'Times New Roman';">70%</span><span style="font-family: 宋体;">是定位在</span><span style="font-family: 'Times New Roman';">iOS</span><span style="font-family: 宋体;">，有超过</span><span style="font-family: 'Times New Roman';">60%</span><span style="font-family: 宋体;">是定位在</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">。</span></p>
<p>在VisionMobile Developer Economics 2011<span style="font-family: 宋体;">年度报告中，我们发现开发者平均关注的平台个数为</span><span style="font-family: 'Times New Roman';">3.2</span><span style="font-family: 宋体;">个。大概过了一年，在跨平台工具报告中所作的调查里，我们发现开发者平均关注的平台个数变成了人均</span><span style="font-family: 'Times New Roman';">3.8</span><span style="font-family: 宋体;">个平台——而对于跨平台工具活跃用户而言，这个数字增长到</span><span style="font-family: 'Times New Roman';">4.5.</span>换句话说，跨平台工具让开发者可以同时使用的平台数目增加了。</p>
<p>从经济角度来说，开发者可以同时使用的平台数据增加是有利于节省开销的。对于一个开发者而言，针对另外一个平台重写一个应用耗时耗力。通常要为一个新平台再做开发需要增加超过初次开发开销的<span style="font-family: 'Times New Roman';">50%</span><span style="font-family: 宋体;">。两外，由于各个平台和不同</span><span style="font-family: 'Times New Roman';">app stores</span><span style="font-family: 宋体;">相对应，</span><span style="font-family: 'Times New Roman';">app</span><span style="font-family: 宋体;">的提交和宣传开销也会增加。</span></p>
<p>我们同时还发现<span style="font-family: 'Times New Roman';">CPTs</span><span style="font-family: 宋体;">被用来处理新屏幕，也即新的联网设备、台式机、机顶盒和游戏机。在我们的调查中，</span><span style="font-family: 'Times New Roman';">27%</span><span style="font-family: 宋体;">的人提到他们还会应用他们主要的跨平台工具去处理</span>Windows PC，另外有<span style="font-family: 'Times New Roman';">24%</span><span style="font-family: 宋体;">人会借用跨平台工具处理</span><span style="font-family: 'Times New Roman';">Mac</span><span style="font-family: 宋体;">台式机。由于</span>Eric Schmidt预言说<span style="font-family: 'Times New Roman';">2012</span><span style="font-family: 宋体;">年中期在北美有超过半数的电视机将使用</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">驱动，对新屏幕的处理能力将会成为跨平台工具的一个主要的增长点。由于我们的调查时间稍微靠前，在</span><span style="font-family: 'Times New Roman';">2011</span><span style="font-family: 宋体;">年底才出现的智能电视，没有表现出多大的势头。只有一个被调查者希望能有对智能电视的支持，还有一些人提到了智能电视平台，比如</span>Google TV 和 LG TV。另外有一些开发者希望能有对Playstation3 和Vita、 Xbox 以及 MS Surface Table的支持。<span style="font-family: 'Times New Roman';">Linux</span><span style="font-family: 宋体;">被证明是最流行的备选平台，这是我们之前没</span>有看到的，有<span style="font-family: 'Times New Roman';">76</span><span style="font-family: 宋体;">个受访者指出他们在处理嵌入式、服务器以及台式机问题时会应用</span><span style="font-family: 'Times New Roman';">Linux</span><span style="font-family: 宋体;">平台。</span></p>
<h4>管理开发资源</h4>
<p>跨平台工具出现的第三个重要原因是开发者资源管理问题。不管是单人开发还是顶级的五个游戏软件供应商联合开发，在为移动端进行开发时，都要面临这样的问题。</p>
<p style="text-align: center;">每一种主要的智能机、<span style="font-family: 'Times New Roman';">PC</span><span style="font-family: 宋体;">或游戏平台都有它自己的指定语言、它自己的</span><span style="font-family: 'Times New Roman';">API</span><span style="font-family: 宋体;">集、它自己的开发环境和它自己的</span><span style="font-family: 'Times New Roman';">app store</span><span style="font-family: 宋体;">。下面的表展示了主要的智能机平台的区别。 <a href="/Upload/EditorImage/image/android/201205/634726357954159621图片4.png"><img class="size-full wp-image-2950 aligncenter" title="图片4" src="/Upload/EditorImage/image/android/201205/634726357954159621图片4.png" alt="" width="443" height="394" /></a></span></p>
<p>假设一个例子，有一个小的<span style="font-family: 'Times New Roman';">apps</span><span style="font-family: 宋体;">公司，它为</span><span style="font-family: 'Times New Roman';">iOS</span><span style="font-family: 宋体;">，</span><span style="font-family: 'Times New Roman';">Android</span><span style="font-family: 宋体;">以及</span><span style="font-family: 'Times New Roman';">Windows Phone7</span><span style="font-family: 宋体;">开发。他们需要雇佣三个团队，这三个团队擅长的技能都不一样。他们需要维护三套不同的代码库，并在功能增加或者修复</span><span style="font-family: 'Times New Roman';">bug</span><span style="font-family: 宋体;">时同时对这三套代码库进行操作。这是一个很大的挑战，也是为什么很多</span><span style="font-family: 'Times New Roman';">apps</span><span style="font-family: 宋体;">在不同</span><span style="font-family: 'Times New Roman';">stores</span><span style="font-family: 宋体;">的发布时间有几个月的延迟。另外，随着各个团队的工作进行，质量以及设计的一致性都会发生改变，尤其是将对新平台的开发外包给第三方的时候。为多个平台开发时，后期维护也很困难，因为三个平台需要各自建立开发文档，内部用户支持文档也需要三份。</span></p>
<p>因此，跨平台工具能为软件工作室提供产品投入市场时间的优势、为其节约开销。“我们发现通过使用跨平台工具，我们的产品投入市场的时间平均减少了<span style="font-family: 'Times New Roman';">70%</span><span style="font-family: 宋体;">。”</span> InRuntime的<span style="font-family: 'Times New Roman';">CEO </span>Paulius Uza如是评价。他接着说：“即使我们只是要为单个平台构建单个应用，我们也会选择跨平台工具。”</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢：</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Firefox上Web开发工具库一览" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2011%2F12%2F589.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2940.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635795759401613493795.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Firefox上Web开发工具库一览</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="开发杀手级企业应用10规则" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2911.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2940.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635795887274826142508.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">开发杀手级企业应用10规则</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="如何开发实用的企业级应用？" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2838.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2940.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635796037518725916540.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">如何开发实用的企业级应用？</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="PhoneGap开发初体验：用HTML5技术开发本地应用" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.webapptrend.com%2F2011%2F11%2F274.html&from=http%3A%2F%2Fwww.webapptrend.com%2F2012%2F05%2F2940.html">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="/Upload/EditorImage/image/android/201205/63472635796220859013493621.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">PhoneGap开发初体验：用HTML5技术开发本地应用</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table><div>来源：http://www.webapptrend.com/2012/05/2940.html</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/14/634726358280823317.html]]></link>
<title><![CDATA[Android培训班(108)start_kernel函数5]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Mon, 14 May 2012 23:44:01 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">tick_init()</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">这个函数主要作用是初始化时钟事件管理器的回调函数，比如当时钟设备添加时处理。在内核里定义了时钟事件管理器，主要用来管理所有需要周期性地执行任务的设备。</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">boot_cpu_init()</span></span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是设置当前引导系统的</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">在物理上存在，在逻辑上可以使用，并且初始化准备好。在多</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">的系统里，内核需要管理多个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">，那么就需要知道系统有多少个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">，在内核里使用</span><span style="font-family:永中宋体;">cpu_present_map</span><span style="font-family:永中宋体;">位图表达有多少个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">，每一位表示一个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">的存在。如果是单个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">，就是第</span><span style="font-family:永中宋体;">0</span><span style="font-family:永中宋体;">位设置为</span><span style="font-family:永中宋体;">1</span><span style="font-family:永中宋体;">。虽然系统里有多个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">存在，但是每个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">不一定可以使用，或者没有初始化，在内核使用</span><span style="font-family:永中宋体;">cpu_online_map</span><span style="font-family:永中宋体;">位图来表示那些</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">可以运行内核代码和接受中断处理。随着移动系统的节能需求，需要对</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">进行节能处理，比如有多个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">运行时可以提高性能，但花费太多电能，导致电池不耐用，需要减少运行的</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">个数，或者只需要一个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">运行。这样内核又引入了一个</span><span style="font-family:永中宋体;">cpu_possible_map</span><span style="font-family:永中宋体;">位图，表示最多可以使用多少个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">。在本函数里就是依次设置这三个位图的标志，让引导的</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">物理上存在，已经初始化好，最少需要运行的</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">。</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">page_address_init()</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是初始化高端内存的映射表。在这里引入了高端内存的概念，那么什么叫做高端内存呢？为什么要使用高端内存呢？其实高端内存是相对于低端内存而存在的，那么先要理解一下低端内存了。在</span><span style="font-family:永中宋体;">32</span><span style="font-family:永中宋体;">位的系统里，最多能访问的总内存是</span><span style="font-family:永中宋体;">4G</span><span style="font-family:永中宋体;">，其中</span><span style="font-family:永中宋体;">3G</span><span style="font-family:永中宋体;">空间给应用程序，而内核只占用</span><span style="font-family:永中宋体;">1G</span><span style="font-family:永中宋体;">的空间。因此，内核能映射的内存空间，只有</span><span style="font-family:永中宋体;">1G</span><span style="font-family:永中宋体;">大小，但实际上比这个还要小一些，大概是</span><span style="font-family:永中宋体;">896M</span><span style="font-family:永中宋体;">，另外</span><span style="font-family:永中宋体;">128M</span><span style="font-family:永中宋体;">空间是用来映射高端内存使用的。因此</span><span style="font-family:永中宋体;">0</span><span style="font-family:永中宋体;">到</span><span style="font-family:永中宋体;">896M</span><span style="font-family:永中宋体;">的内存空间，就叫做低端内存，而高于</span><span style="font-family:永中宋体;">896M</span><span style="font-family:永中宋体;">的内存，就叫高端内存了。如果系统是</span><span style="font-family:永中宋体;">64</span><span style="font-family:永中宋体;">位系统，当然就没未必要有高端内存存在了，因为</span><span style="font-family:永中宋体;">64</span><span style="font-family:永中宋体;">位有足够多的地址空间给内核使用，访问的内存可以达到</span><span style="font-family:永中宋体;">10G</span><span style="font-family:永中宋体;">都没有问题。在</span><span style="font-family:永中宋体;">32</span><span style="font-family:永中宋体;">位系统里，内核为了访问超过</span><span style="font-family:永中宋体;">1G</span><span style="font-family:永中宋体;">的物理内存空间，需要使用高端内存映射表。比如当内核需要读取</span><span style="font-family:永中宋体;">1G</span><span style="font-family:永中宋体;">的缓存数据时，就需要分配高端内存来使用，这样才可以管理起来。使用高端内存之后，</span><span style="font-family:永中宋体;">32</span><span style="font-family:永中宋体;">位的系统也可以访问达到</span><span style="font-family:永中宋体;">64G</span><span style="font-family:永中宋体;">内存。在移动操作系统里，目前还没有这个必要，最多才</span><span style="font-family:永中宋体;">1G</span><span style="font-family:永中宋体;">多内存。</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">printk(KERN_NOTICE)</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">这行代码主要作用是在输出终端上显示注意信息。</span><span style="font-family:永中宋体;">printk</span><span style="font-family:永中宋体;">是内核格式化输出函数，宏</span><span style="font-family:永中宋体;">KERN_NOTICE</span><span style="font-family:永中宋体;">定义如下：</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">#define	KERN_NOTICE	&quot;&lt;5&gt;&quot;</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">因此在调试输出窗口上就会显示</span><span style="font-family:永中宋体;">&quot;&lt;5&gt;&quot;</span><span style="font-family:永中宋体;">字符串。</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">printk(linux_banner)</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">这行代码主要作用是在输出终端上显示版本信息、编译的电脑用户名称、编译器版本、编译时间。如下所示：</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">Linuxversion 2.6.37+ (tony@tony-desktop) (gcc version 4.3.3 (Sourcery G++Lite 2009q1-203) ) #40 Tue Mar 20 17:49:58 CST 2012</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">linux_banner</span><span style="font-family:永中宋体;">是在文件</span><span style="font-family:永中宋体;">kernel/init/version.c</span><span style="font-family:永中宋体;">里定义，这个字符串是由编译脚本自动生成。</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">setup_arch(&amp;command_line)</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是对内核架构进行初始化。再次获取</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">类型和系统架构，分析引导程序传入的命令行参数，进行页面内存初始化，处理器初始化，中断早期初始化等等。</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-family:永中宋体;"><span style="font-size:18px;">mm_init_owner(&amp;init_mm,&amp;init_task)</span></span></p><p lang="zh-CN" style="margin-left: 1.27cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是设置最开始的初始化任务属于</span><span style="font-family:永中宋体;">init_mm</span><span style="font-family:永中宋体;">内存。在</span><span style="font-family:永中宋体;">ARM</span><span style="font-family:永中宋体;">里，这个函数为空。</span></span></p>
            
                    <div>来源：http://blog.csdn.net/caimouse/article/details/7561840</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/10/634722053547194274.html]]></link>
<title><![CDATA[Android 4.0通过新的特性统一了平板电脑与手机]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Thu, 10 May 2012 01:14:41 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <span style="font-family: Arial; font-size: 14px; line-height: 24px; "><span style="color:#ff0000;">本文来源于我在InfoQ中文站翻译的文章，原文地址是：<a href="http://www.infoq.com/cn/news/2012/02/Android-4-Ice-Cream-Sandwich">http://www.infoq.com/cn/news/2012/02/Android-4-Ice-Cream-Sandwich</a></span></span><p><a href="http://android-developers.blogspot.com/2011/10/android-40-platform-and-updated-sdk.html">Android 4.0</a>可以运行在平板电脑与手机上，并且提供了一些针对UI、通信、共享、媒体、连接、输入类型与企业的新特性。</p><p>Google于2011年2月发布了<a href="http://www.infoq.com/news/2011/01/Android-3-Honeycomb">Android 3.0</a>（Honeycomb），但该版本只面向平板电脑，提供了新的“全息”用户界面，这并不适合于智能电话等小屏幕。但Google说他们将会发布新版的移动OS，可以运行在平板电脑与智能电话上。于<a href="http://allthingsd.com/conferences/asiad/about/">AsiaD</a>发布的Android 4.0（Ice Cream Sandwich）证实了这一点，来自三星的<a href="http://www.google.com/nexus/">Galaxy Nexus</a>使用了它，这款手机很快就会面世。</p><p>Android 4.0包含的UI widgets与APIs在使用了Android 3.x的平板电脑中已经提供了：</p><ul><li><strong>UI：</strong>Fragments与内容加载器、动作栏、可缩放的主屏幕widgets、丰富的通知、多点选择拖拽剪贴板</li><li><strong>图形与动画：</strong>硬件加速的2D图形、基于属性的动画、3D图形</li><li><strong>通信：</strong>HTTP实时流、支持蓝牙<a href="http://en.wikipedia.org/wiki/A2DP#Advanced_Audio_Distribution_Profile_.28A2DP.29">A2DP</a>与<a href="http://en.wikipedia.org/wiki/A2DP#Headset_Profile_.28HSP.29">HSP</a>设备、支持<a href="http://developer.android.com/reference/android/net/rtp/package-summary.html">RTP</a>（Real-time Transport Protocol）、<a href="http://developer.android.com/reference/android/mtp/package-summary.html">MTP/PTP</a>（Media/Photo Transfer Protocol）与<a href="http://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>（Digital Rights Management），可以接收来自于键盘、鼠标、游戏手柄与摇杆的输入</li></ul><p>Ice Cream Sandwich增加了一些新特性与APIs，如下所示。</p><p><strong>UI。</strong>增加了新的GridLayout以实现更快的布局与渲染。通过TextureView，你可以像一般对象那样操纵OpenGL ES渲染，该特性非常适合于相机预览、视频解码与游戏场景等。现在可以硬件加速2D绘制了，这样就能以更加吸引人的方式对文本施加缩放、旋转或是其他变换了。</p><p><strong>通信与共享。</strong>现在，所有应用都可以共享信息了，可以集成联系人与档案数据，还可以使用Social与Calendar APIs从网络与日历事件中更新状态。如果应用运行在开启了NFC的电话上，那么你只需触摸屏幕就能通过Android Beam实现应用间的通信。开发者可以凭借ShareActionProvider widget向应用中添加共享功能。</p><p><strong>媒体。</strong>添加了一个新的基于<a href="http://www.khronos.org/openmax/al/">Khronos OpenMAX AL 1.0.1</a>的API以实现流式多媒体，为流式内容提供了更多的控制。相机支持ZSL曝光、连续对焦、图片缩放，在拍摄视频时能够捕获到全分辨率的快照、还支持人脸识别等功能。</p><p>用于转换图片与视频的新媒体效果可运行在GPU上：调整颜色级别与对比度、改变背景、锐化、剪裁、旋转、添加了光学变形等。</p><p>支持<a href="http://www.infoq.com/news/2010/10/WebP">WebP</a>、VP8、HTTP Live streaming v.3与Matroska容器。</p><p><strong>连接。</strong>应用可以通过WiFi Direct直接与附近的电话通信而无需使用Internet连接或是热点，支持Bluetooth <a href="http://en.wikipedia.org/wiki/A2DP#Health_Device_Profile_.28HDP.29">HDP</a>（Health Device Profile），可以与相应的健康设备与传感器通信。</p><p><strong>输入类型：</strong>Android 4.0支持新的手写笔输入事件，如压、倾斜与距离轴等。它与手写笔、手指、鼠标等不同，支持多种按钮设备。</p><p><strong>企业。</strong>可从VPN API获益，与之相关的安全存储与内建的VPN客户端可以访问L2TP与IPsec网络。Device Policy Manager可用于远程控制Android设备，包括在敏感环境下禁用照相机等。</p><p>API Level 13（Android 3.2）与14（Android 4.0）之间大约有<a href="http://developer.android.com/sdk/api_diff/14/changes.html">4%的变化</a>，14中新增了804处（属性、方法、类等），有370处变更并删除了45处。该<a href="http://developer.android.com/sdk/api_diff/14/changes.html">API Differences Report</a>展示了5个新包。</p><p>Google更新了<a href="http://developer.android.com/sdk/tools-notes.html">SDK Tools</a>（revision 14）、<a href="http://developer.android.com/sdk/compatibility-library.html">Support Package</a>（r4）与<a href="http://developer.android.com/sdk/eclipse-adt.html">ADT plug-in for Eclipse</a>（r14）以支持Android 4.0 API。</p><p><strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2011/10/Android-4-Ice-Cream-Sandwich">Android 4.0 Unifies Tablets and Phones with New Features</a></p>
            
                    <div>来源：http://blog.csdn.net/ricohzhanglong/article/details/7237626</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/10/634722053544512635.html]]></link>
<title><![CDATA[Oracle与Google走上法庭]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Thu, 10 May 2012 01:14:41 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <span style="font-family: Arial; font-size: 14px; line-height: 24px; text-align: left; text-indent: 28px; "><span style="color:#ff0000;">本文来源于我在InfoQ中文站翻译的文章，原文地址是：<a href="http://www.infoq.com/cn/news/2012/05/oracle-google">http://www.infoq.com/cn/news/2012/05/oracle-google</a></span></span><p>Oracle收购Sun Microsystems的一个目的就是控制Java语言，而更为重要的则是其专利。在众多的大公司中，Oracle的一个眼中钉就是Google，其针对Android（及其Dalvik VM）的类Java编程语言导致其被Oracle指控，控告其违背了Oracle的专利与版权，甚至发现Oracle测试套件中的测试代码出现在了Google的仓库中。</p><p>这场争论由来已久，从最开始的132个声明<a href="http://www.infoq.com/news/2011/05/google-oracle">降到了3个</a>，接下来又进一步降到了<a href="http://www.h-online.com/open/news/item/Oracle-s-trial-against-Google-set-to-begin-in-mid-April-1471885.html">仅仅2个专利</a>，其中一个专利将于今年12月到期。</p><p>上个月，法官Paul Grewal<a href="http://www.h-online.com/open/news/item/Google-and-Oracle-to-hold-another-round-of-settlement-talks-1479841.html">让这两家公司尝试通过协商来解决问题</a>。如果Oracle能够证明Google侵犯了其专利，那么Google将会<a href="http://www.scribd.com/doc/87156701/Oracle-vs-Google-pretrial-joint-statement-27-3-12">支付280万美金</a>。然而Oracle拒绝了，认为Google支付的太少。</p><p>这个数字是根据到今年底（<a href="http://worldwide.espacenet.com/publicationDetails/biblio?DB=worldwide.espacenet.com&amp;II=0&amp;ND=3&amp;adjacent=true&amp;locale=en_EP&amp;FT=D&amp;date=20030429&amp;CC=US&amp;NR=RE38104E1&amp;KC=E1">RE38104</a>到期日）Android收益的0.5%及到2018年4月（专利<a href="http://worldwide.espacenet.com/publicationDetails/biblio?DB=worldwide.espacenet.com&amp;II=0&amp;ND=3&amp;adjacent=true&amp;locale=en_EP&amp;FT=D&amp;date=20000509&amp;CC=US&amp;NR=6061520A&amp;KC=A">6061520</a>的到期日）Android收益的0.015%计算出来的。值得注意的是，USPTO已经判定RE38104<a href="http://www.h-online.com/news/item/US-Patent-Office-invalidates-fifth-Oracle-patent-1442234.html">无效</a>，但Oracle还会继续上诉。</p><p>最后一个专利（6061520）被USPTO判定为有效。由于这两家公司无法达成和解，因此Oracle期望证明Android违背了该专利，如果证实确实如此，那么Oracle会要求法庭确定赔偿额。该专利涉及到静态数组初始化的性能改进：</p><blockquote>该专利表示了对传统的静态数组初始化的改进，这是通过减少虚拟机执行的代码量以静态地初始化数组来实现的。为了实现代码量的减少，在联合类文件时，预加载器会识别出所有方法并执行这些方法以确定他们所执行的静态初始化。接下来，预加载器会创建出一个表达式以标明方法所执行的静态初始化并将该表达式存储到.mclass文件中，然后替换掉该方法。这样，该方法的代码（包含了很多指令）就会被一个单独的表达式所替代，该表达式会指示虚拟机执行静态初始化，这样就会节省大量内存。虚拟机会被修改以识别出该表达式并对数组执行恰当的静态初始化。</blockquote><p>这场官司一个有趣的副作用是它暴露出了Google在2008年到2011年间已经从Android上获得了<a href="http://www.guardian.co.uk/technology/2012/mar/29/google-earns-more-iphone-android">5.5亿美元</a>的收益。这表明截至到2011年底激活的<a href="http://www.asymco.com/2012/02/29/when-will-android-reach-one-billion-users">2亿台Android设备</a>帮助Google每年从每台Android设备上获得了超过10美元的收益。然而<a href="http://seekingalpha.com/article/299518-google-management-discusses-q3-2011-results-earnings-call-transcript">去年十月</a>，Google的电话会议表明其移动平台产品（包括iOS的Google Maps）价值25亿美元。如果除去Android收益，那么Google从其他渠道所获得的收益只有不到20亿美元，比如说向Apple许可iOS平台的Maps数据。</p><p>这场官司从4月16日开始，预计将会持续8周时间。</p><p><strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2012/04/oracle-google">Oracle and Google go to Court</a></p>
            
                    <div>来源：http://blog.csdn.net/ricohzhanglong/article/details/7549624</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/9/634722010478374248.html]]></link>
<title><![CDATA[android中ADT版本问题： java.lang.NoClassDefFoundError错误]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Wed, 09 May 2012 23:59:12 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p>&nbsp;<span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;最近在ubuntu上面配置android开发环境时候出现n多错误，把心得说一下，如果遇到类似错误，修改下就好了，到目前为止，ADT的版本已经升级到18了。当SDK版本升级到4.0.3的时候，会要求ADT版本是17或者更高的版本，当升级以后，如果出现问题，有可能是JDK版本的问题，注意一下，ADT17要求JDK版本必须在JDK1.6或者更高版本。</span></p><p><span style="font-size:16px;">&nbsp; &nbsp; &nbsp; &nbsp;当ADT的版本是17或者更高的时候，如果项目中引用了第三方jar包，会出现java.lang.NoClassDefFoundError这个错误，发现不了jar包里面被引用的类。如何修改呢？在eclipse中，引用的第三方jar包都放在lib下，把lib修改成libs，就可以了，有人可能会问，没有lib文件夹，那就新建一个libs文件夹，把第三方类库放到该文件夹中，这时候会报错，需要重新build path下，</span></p><p><span style="font-size:16px;"><img src="/Upload/EditorImage/image/android/201205/6347220246234405441336578180_2299.jpg" alt="" /><br /></span></p><p><span style="font-size:16px;"><br /></span></p><p><span style="font-size:16px;">clean下代码，应该就可以了。</span></p><p><span style="font-size:16px;">如果对这个文章不太满意，建议搜索的时候搜一下关键字：</span></p><p><span style="font-size:16px;">android adt &nbsp;java.lang.NoClassDefFoundError</span></p><p><span style="font-size:16px;">而非直接&nbsp;java.lang.NoClassDefFoundError</span></p><p><span style="font-size:16px;">因为后者搜索大部分内容是讲的j2se和j2ee里面的问题。</span></p><p><span style="font-size:16px;">有问题欢迎留言探讨。</span></p>
            
                    <div>来源：http://blog.csdn.net/aomandeshangxiao/article/details/7552109</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/9/634721656404150629.html]]></link>
<title><![CDATA[Oracle与Google走上法庭]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Wed, 09 May 2012 13:38:36 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <span style="font-family: Arial; font-size: 14px; line-height: 24px; text-align: left; text-indent: 28px; "><span style="color:#ff0000;">本文来源于我在InfoQ中文站翻译的文章，原文地址是：<a href="http://www.infoq.com/cn/news/2012/05/oracle-google">http://www.infoq.com/cn/news/2012/05/oracle-google</a></span></span><p>Oracle收购Sun Microsystems的一个目的就是控制Java语言，而更为重要的则是其专利。在众多的大公司中，Oracle的一个眼中钉就是Google，其针对Android（及其Dalvik VM）的类Java编程语言导致其被Oracle指控，控告其违背了Oracle的专利与版权，甚至发现Oracle测试套件中的测试代码出现在了Google的仓库中。</p><p>这场争论由来已久，从最开始的132个声明<a href="http://www.infoq.com/news/2011/05/google-oracle">降到了3个</a>，接下来又进一步降到了<a href="http://www.h-online.com/open/news/item/Oracle-s-trial-against-Google-set-to-begin-in-mid-April-1471885.html">仅仅2个专利</a>，其中一个专利将于今年12月到期。</p><p>上个月，法官Paul Grewal<a href="http://www.h-online.com/open/news/item/Google-and-Oracle-to-hold-another-round-of-settlement-talks-1479841.html">让这两家公司尝试通过协商来解决问题</a>。如果Oracle能够证明Google侵犯了其专利，那么Google将会<a href="http://www.scribd.com/doc/87156701/Oracle-vs-Google-pretrial-joint-statement-27-3-12">支付280万美金</a>。然而Oracle拒绝了，认为Google支付的太少。</p><p>这个数字是根据到今年底（<a href="http://worldwide.espacenet.com/publicationDetails/biblio?DB=worldwide.espacenet.com&amp;II=0&amp;ND=3&amp;adjacent=true&amp;locale=en_EP&amp;FT=D&amp;date=20030429&amp;CC=US&amp;NR=RE38104E1&amp;KC=E1">RE38104</a>到期日）Android收益的0.5%及到2018年4月（专利<a href="http://worldwide.espacenet.com/publicationDetails/biblio?DB=worldwide.espacenet.com&amp;II=0&amp;ND=3&amp;adjacent=true&amp;locale=en_EP&amp;FT=D&amp;date=20000509&amp;CC=US&amp;NR=6061520A&amp;KC=A">6061520</a>的到期日）Android收益的0.015%计算出来的。值得注意的是，USPTO已经判定RE38104<a href="http://www.h-online.com/news/item/US-Patent-Office-invalidates-fifth-Oracle-patent-1442234.html">无效</a>，但Oracle还会继续上诉。</p><p>最后一个专利（6061520）被USPTO判定为有效。由于这两家公司无法达成和解，因此Oracle期望证明Android违背了该专利，如果证实确实如此，那么Oracle会要求法庭确定赔偿额。该专利涉及到静态数组初始化的性能改进：</p><blockquote>该专利表示了对传统的静态数组初始化的改进，这是通过减少虚拟机执行的代码量以静态地初始化数组来实现的。为了实现代码量的减少，在联合类文件时，预加载器会识别出所有方法并执行这些方法以确定他们所执行的静态初始化。接下来，预加载器会创建出一个表达式以标明方法所执行的静态初始化并将该表达式存储到.mclass文件中，然后替换掉该方法。这样，该方法的代码（包含了很多指令）就会被一个单独的表达式所替代，该表达式会指示虚拟机执行静态初始化，这样就会节省大量内存。虚拟机会被修改以识别出该表达式并对数组执行恰当的静态初始化。</blockquote><p>这场官司一个有趣的副作用是它暴露出了Google在2008年到2011年间已经从Android上获得了<a href="http://www.guardian.co.uk/technology/2012/mar/29/google-earns-more-iphone-android">5.5亿美元</a>的收益。这表明截至到2011年底激活的<a href="http://www.asymco.com/2012/02/29/when-will-android-reach-one-billion-users">2亿台Android设备</a>帮助Google每年从每台Android设备上获得了超过10美元的收益。然而<a href="http://seekingalpha.com/article/299518-google-management-discusses-q3-2011-results-earnings-call-transcript">去年十月</a>，Google的电话会议表明其移动平台产品（包括iOS的Google Maps）价值25亿美元。如果除去Android收益，那么Google从其他渠道所获得的收益只有不到20亿美元，比如说向Apple许可iOS平台的Maps数据。</p><p>这场官司从4月16日开始，预计将会持续8周时间。</p><p><strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2012/04/oracle-google">Oracle and Google go to Court</a></p>
            
                    <div>来源：http://blog.csdn.net/ricohzhanglong/article/details/7549624</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/9/634721571695675680.html]]></link>
<title><![CDATA[Windows Phone 7: MVVM之命令绑定]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Wed, 09 May 2012 11:10:08 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p>5月21号有幸去望京的微软大厦做了题为&quot;Windows Phone 7 中的MVVM架构&quot;的技术演示，现将演示中提到的两种命令绑定方式再谈一下。演示中使用了如下图所示的demo:</p>

<p><img src="/Upload/EditorImage/image/android/201205/6347215858382215520_1306291736NAAB.gif" alt="" />
&nbsp;&nbsp; <img src="/Upload/EditorImage/image/android/201205/6347215858453185660_1306293513Y3e1.gif" alt="" /></p>

<p>方式1: ApplicationBarButton的命令绑定</p>

<p>ApllicationBarButton 本身不提供Command属性供绑定命令使用，但是Prism for Windows Phone 7中提供了一个behavior ApplicationBarButtonCommand可用于命令邦定：</p>

<p>首先应用程序需要引用如下两个dll:</p>
<p>Microsoft.Practices.Prism.Interactivity.dll (来自Prism for windows phone)</p>
<p>System.Windows.Interactivity.dll (来自Blend for Windows Phone sdk)</p>

<p>Xaml中引用两个dll如今下：</p>
<p>xmlns:i=&quot;clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity&quot;<br />
xmlns:pi=&quot;clr-namespace:Microsoft.Practices.Prism.Interactivity;assembly=Microsoft.Practices.Prism.Interactivity&quot;</p>

<p>命令绑定代码如下：</p>

<p><textarea cols="50" rows="15" name="code" class="xhtml">&lt;phone:PhoneApplicationPage.ApplicationBar&gt;
        &lt;shell:ApplicationBar IsVisible=&quot;True&quot; IsMenuEnabled=&quot;True&quot;&gt;
            &lt;shell:ApplicationBarIconButton IconUri=&quot;/Assets/icons/yes.png&quot; Text=&quot;turn on&quot;&gt;
                
            &lt;/shell:ApplicationBarIconButton&gt;
            &lt;shell:ApplicationBarIconButton IconUri=&quot;/Assets/icons/no.png&quot; Text=&quot;turn off&quot;
                                           /&gt;
            
        &lt;/shell:ApplicationBar&gt;
    &lt;/phone:PhoneApplicationPage.ApplicationBar&gt;
    &lt;i:Interaction.Behaviors&gt;
        &lt;pi:ApplicationBarButtonCommand ButtonText=&quot;turn on&quot; CommandBinding=&quot;{Binding TurnOnCommand}&quot;/&gt;
        &lt;pi:ApplicationBarButtonCommand ButtonText=&quot;turn off&quot; CommandBinding=&quot;{Binding TurnOffCommand}&quot;/&gt;
    &lt;/i:Interaction.Behaviors&gt;</textarea>
 </p>

<p>其中ApplicationBarIconButtonCommand是通过ButtonText的值与ApplicationBarButton建立关联的</p>

<p>方式2：自定义attached behavior</p>

<p>Silverlight for Desktop中的ButtonBase控件是直接支持命令绑定的，他们提供了一个Command属性。Silverlight for Windows Phone 目前的版本上Button控件是没有Command属性的，那其他控件就更不支持了。实现命令绑定的方法就是以前的blog曾多次介绍过的Silverlight中的<a href="http://blog.csdn.net/jameszhou/archive/2009/08/11/4435375.aspx">attached behavior</a>
.</p>

<p>在demo中使用了一个来自Windows Phone toolkit的 ToggleSwitch控件，下面是实现该控件的命令绑定代码：</p>

<p>首先需要自定义一个attached behavior可用来扩展ToggleSwitch控件使之支持命令绑定：</p>
<p><textarea cols="50" rows="15" name="code" class="c-sharp">using System;
using System.Windows;
using Microsoft.Practices.Prism.Commands;
using Microsoft.Phone.Controls;
namespace WP7Demo.Behavior
{
    public class ToggleSwitchCheckChangedBehavior
    {
        public static readonly DependencyProperty CommandProperty =
            DependencyProperty.RegisterAttached(
                &quot;Command&quot;, typeof(DelegateCommand&lt;object&gt;), typeof(ToggleSwitchCheckChangedBehavior), new PropertyMetadata(OnCommandChanged));
        public static DelegateCommand&lt;object&gt; GetCommand(ToggleSwitch control)
        {
            return control.GetValue(CommandProperty) as DelegateCommand&lt;object&gt;;
        }
        public static void  SetCommand(ToggleSwitch control, DelegateCommand&lt;object&gt; command)
        {
            control.SetValue(CommandProperty, command);
        }
        private static void OnCommandChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ToggleSwitch control = d as ToggleSwitch;
            if (control != null)
            {
                control.Checked += new EventHandler&lt;RoutedEventArgs&gt;(control_Checked);
                control.Unchecked += new EventHandler&lt;RoutedEventArgs&gt;(control_Unchecked);
            }   
        }
        static void control_Unchecked(object sender, RoutedEventArgs e)
        {
            ToggleSwitch control = sender as ToggleSwitch;
            DelegateCommand&lt;object&gt; command = GetCommand(control);
            if (command != null)
            {
                command.Execute(false);
            }
        }
        static void control_Checked(object sender, RoutedEventArgs e)
        {
            ToggleSwitch control = sender as ToggleSwitch;
            DelegateCommand&lt;object&gt; command = GetCommand(control);
            if (command != null)
            {
                command.Execute(true);
            }
        }
        
    }
}</textarea>
</p>

<p>以上代码通过订阅ToggleSwith的Checked与Unchecked事件，来触发ToggleSwitch控件所绑定的命令，并传递相应参数。所以此类没有单独实现CommandParameter属性，如果你的命令绑定需要用到参数绑定，在此类上实现一个类似Command的CommandParameter依赖属性即可。</p>

<p>Xaml中使用命令绑定如下：</p>
<p><textarea cols="50" rows="15" name="code" class="xhtml">&lt;toolkit:ToggleSwitch Grid.Row=&quot;2&quot; Content=&quot;Status&quot;
             behavior:ToggleSwitchCheckChangedBehavior.Command=&quot;{Binding ElementName=page, Path=DataContext.ToggleCommand}&quot;/&gt;</textarea>
</p>
            
                    <div>来源：http://blog.csdn.net/jameszhou/article/details/6444335</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/9/634721557003437380.html]]></link>
<title><![CDATA[Android 4.0通过新的特性统一了平板电脑与手机]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Wed, 09 May 2012 10:44:22 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <span style="font-family: Arial; font-size: 14px; line-height: 24px; "><span style="color:#ff0000;">本文来源于我在InfoQ中文站翻译的文章，原文地址是：<a href="http://www.infoq.com/cn/news/2012/02/Android-4-Ice-Cream-Sandwich">http://www.infoq.com/cn/news/2012/02/Android-4-Ice-Cream-Sandwich</a></span></span><p><a href="http://android-developers.blogspot.com/2011/10/android-40-platform-and-updated-sdk.html">Android 4.0</a>可以运行在平板电脑与手机上，并且提供了一些针对UI、通信、共享、媒体、连接、输入类型与企业的新特性。</p><p>Google于2011年2月发布了<a href="http://www.infoq.com/news/2011/01/Android-3-Honeycomb">Android 3.0</a>（Honeycomb），但该版本只面向平板电脑，提供了新的“全息”用户界面，这并不适合于智能电话等小屏幕。但Google说他们将会发布新版的移动OS，可以运行在平板电脑与智能电话上。于<a href="http://allthingsd.com/conferences/asiad/about/">AsiaD</a>发布的Android 4.0（Ice Cream Sandwich）证实了这一点，来自三星的<a href="http://www.google.com/nexus/">Galaxy Nexus</a>使用了它，这款手机很快就会面世。</p><p>Android 4.0包含的UI widgets与APIs在使用了Android 3.x的平板电脑中已经提供了：</p><ul><li><strong>UI：</strong>Fragments与内容加载器、动作栏、可缩放的主屏幕widgets、丰富的通知、多点选择拖拽剪贴板</li><li><strong>图形与动画：</strong>硬件加速的2D图形、基于属性的动画、3D图形</li><li><strong>通信：</strong>HTTP实时流、支持蓝牙<a href="http://en.wikipedia.org/wiki/A2DP#Advanced_Audio_Distribution_Profile_.28A2DP.29">A2DP</a>与<a href="http://en.wikipedia.org/wiki/A2DP#Headset_Profile_.28HSP.29">HSP</a>设备、支持<a href="http://developer.android.com/reference/android/net/rtp/package-summary.html">RTP</a>（Real-time Transport Protocol）、<a href="http://developer.android.com/reference/android/mtp/package-summary.html">MTP/PTP</a>（Media/Photo Transfer Protocol）与<a href="http://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>（Digital Rights Management），可以接收来自于键盘、鼠标、游戏手柄与摇杆的输入</li></ul><p>Ice Cream Sandwich增加了一些新特性与APIs，如下所示。</p><p><strong>UI。</strong>增加了新的GridLayout以实现更快的布局与渲染。通过TextureView，你可以像一般对象那样操纵OpenGL ES渲染，该特性非常适合于相机预览、视频解码与游戏场景等。现在可以硬件加速2D绘制了，这样就能以更加吸引人的方式对文本施加缩放、旋转或是其他变换了。</p><p><strong>通信与共享。</strong>现在，所有应用都可以共享信息了，可以集成联系人与档案数据，还可以使用Social与Calendar APIs从网络与日历事件中更新状态。如果应用运行在开启了NFC的电话上，那么你只需触摸屏幕就能通过Android Beam实现应用间的通信。开发者可以凭借ShareActionProvider widget向应用中添加共享功能。</p><p><strong>媒体。</strong>添加了一个新的基于<a href="http://www.khronos.org/openmax/al/">Khronos OpenMAX AL 1.0.1</a>的API以实现流式多媒体，为流式内容提供了更多的控制。相机支持ZSL曝光、连续对焦、图片缩放，在拍摄视频时能够捕获到全分辨率的快照、还支持人脸识别等功能。</p><p>用于转换图片与视频的新媒体效果可运行在GPU上：调整颜色级别与对比度、改变背景、锐化、剪裁、旋转、添加了光学变形等。</p><p>支持<a href="http://www.infoq.com/news/2010/10/WebP">WebP</a>、VP8、HTTP Live streaming v.3与Matroska容器。</p><p><strong>连接。</strong>应用可以通过WiFi Direct直接与附近的电话通信而无需使用Internet连接或是热点，支持Bluetooth <a href="http://en.wikipedia.org/wiki/A2DP#Health_Device_Profile_.28HDP.29">HDP</a>（Health Device Profile），可以与相应的健康设备与传感器通信。</p><p><strong>输入类型：</strong>Android 4.0支持新的手写笔输入事件，如压、倾斜与距离轴等。它与手写笔、手指、鼠标等不同，支持多种按钮设备。</p><p><strong>企业。</strong>可从VPN API获益，与之相关的安全存储与内建的VPN客户端可以访问L2TP与IPsec网络。Device Policy Manager可用于远程控制Android设备，包括在敏感环境下禁用照相机等。</p><p>API Level 13（Android 3.2）与14（Android 4.0）之间大约有<a href="http://developer.android.com/sdk/api_diff/14/changes.html">4%的变化</a>，14中新增了804处（属性、方法、类等），有370处变更并删除了45处。该<a href="http://developer.android.com/sdk/api_diff/14/changes.html">API Differences Report</a>展示了5个新包。</p><p>Google更新了<a href="http://developer.android.com/sdk/tools-notes.html">SDK Tools</a>（revision 14）、<a href="http://developer.android.com/sdk/compatibility-library.html">Support Package</a>（r4）与<a href="http://developer.android.com/sdk/eclipse-adt.html">ADT plug-in for Eclipse</a>（r14）以支持Android 4.0 API。</p><p><strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2011/10/Android-4-Ice-Cream-Sandwich">Android 4.0 Unifies Tablets and Phones with New Features</a></p>
            
                    <div>来源：http://blog.csdn.net/ricohzhanglong/article/details/7237626</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/8/634721075402795212.html]]></link>
<title><![CDATA[Android培训班(107)start_kernel函数4]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Tue, 08 May 2012 21:54:41 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            <p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">cgroup_init_early()</span></span></span></p><p style="margin-left: 1.28cm; margin-bottom: 0cm"><span style="font-size:18px;"><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">这个函数主要作用是控制组进行早期的初始化。什么叫控制组（</span></span><span style="font-family:DejaVu Serif Condensed, serif;"><span style="font-family:永中宋体;">controlgroups)</span></span></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">呢？简单地说，控制组就是定义一组进程具有相同资源的占有程度。比如可以指定一组进程使用</span></span><span style="font-family:DejaVu Serif Condensed, serif;"><span style="font-family:永中宋体;">CPU</span></span></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">为</span></span><span style="font-family:DejaVu Serif Condensed, serif;"><span style="font-family:永中宋体;">30</span></span></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">％，磁盘</span></span><span style="font-family:DejaVu Serif Condensed, serif;"><span style="font-family:永中宋体;">IO</span></span></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">为</span></span><span style="font-family:DejaVu Serif Condensed, serif;"><span style="font-family:永中宋体;">40</span></span></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">％，网络带宽为</span></span><span style="font-family:DejaVu Serif Condensed, serif;"><span style="font-family:永中宋体;">50</span></span></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">％。因此通过控制组就可以把所有进程分配不同的资源。可以参考这个文档（</span></span></span><span style="font-family:DejaVu Serif Condensed, serif;"><a href="http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch01.html">http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch01.html</a></span><span style="color:#000000;"><span style="font-family:永中宋体;"><span lang="zh-CN">）。</span></span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">local_irq_disable()</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是关闭当前</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">的所有中断响应。在</span><span style="font-family:永中宋体;">ARM</span><span style="font-family:永中宋体;">体系里主要就是对</span><span style="font-family:永中宋体;">CPSR</span><span style="font-family:永中宋体;">寄存器进行操作。</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">early_boot_irqs_off()</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是标记内核还在早期初始化代码阶段，并且中断在关闭状态，如果有任何中断打开或请求中断的事情出现，都是会提出警告，以便跟踪代码错误情况。早期代码初始化结束之后，就会调用函数</span><span style="font-family:永中宋体;">early_boot_irqs_on</span><span style="font-family:永中宋体;">来设置这个标志为真。</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">early_init_irq_lock_class()</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是对中断请求描述符进行锁的早期初始化。在</span><span style="font-family:永中宋体;">ARM</span><span style="font-family:永中宋体;">里，这个函数没有任何代码。</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="font-size:18px;"><br /></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-family:永中宋体;"><span style="font-size:18px;">lock_kernel()</span></span></span></p><p lang="zh-CN" style="margin-left: 1.28cm; margin-bottom: 0cm; "><span style="color:#000000;"><span style="font-size:18px;"><span style="font-family:永中宋体;">这个函数主要作用是初始化大内核锁。在对称多处理器的系统里，每一个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">都可以运行内核的代码，但有时需要只能一个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">运行内核代码，那么怎么办呢？要解决这个问题，就需要给内核配备一把锁，只要拥有这把锁的</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">才可以运行内核的代码，并且同一个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">可以递归地运行内核。大内核锁显然有一个优点，就是同一个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">可以递归地运行，而自旋锁就不行了，一旦拥有，就不能跑掉了。不过大内核锁也有一个明显的坏处，就是多个</span><span style="font-family:永中宋体;">CPU</span><span style="font-family:永中宋体;">资源浪费，并不能并行地执行。因此，新版本的内核慢慢把可以并行的代码使用别的信号量锁来代替了，只有在某种特定的架构下才使用大内核锁，以便提高整个系统的并行性能。</span></span></span></p>
            
                    <div>来源：http://blog.csdn.net/caimouse/article/details/7547847</div>]]></description>
</item>

<item>
<link><![CDATA[http://www.itivy.com/android/archive/2012/5/8/634720869701982467.html]]></link>
<title><![CDATA[WindowsPhone是个奇迹：Windows Phone开发“文字+视频”教程（二）]]></title>
<author><![CDATA[android_boy]]></author>
<category><![CDATA[]]></category>
<pubDate>Tue, 08 May 2012 15:54:09 GMT</pubDate>
<guid><![CDATA[]]></guid>
<description><![CDATA[
            
<p>Windows Phone（WP7）演示第一部分</p>
<p>在线视频教程：<br>
http://v.youku.com/v_show/id_XMjg3MjI4MDQw.html<br>
</p>
<div id="cnblogs_post_body">
<p>注：这是<a href="http://net.itcast.cn/">传智播客.Net培训班</a>WindowsPhone课程的一部分。&nbsp;</p>
<p>在学习Windows Phone（WP7）开发之前我们要先了解一下Windows Phone的使用。Windows Phone的初始界面叫做Live Tile，也就是很多人戏称的“大色块”。</p>
<p><img alt="" src="/Upload/EditorImage/image/android/201205/6347208924733724112011072623462134.jpg"></p>
<p>&nbsp;&nbsp; 有很多微软的Hater都骂“Windows Phone大色块很难看”，Windows Phone采用的这种界面风&#26684;叫做MetroUI，微软已经在官网、Bing、Windows 8等微软主打产品上都采用这种风&#26684;，连腾讯的QQ音乐都采用MetroUI风&#26684;了，微软的UI设计理念岂是猫粉狗粉之类能够理解的，“微软不是你唱衰，你唱衰他就衰”，还是让市场去证明微软的正确吧，不再继续讨论。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Live Tile界面中每个方块就代表一个程序，点击方块就可以启动相应的程序。页面上的程序非常多，不可能在一个屏幕下放下所有的程序，可以通过手指在屏幕上的上下滑动来移动屏幕显示（详细见“传智播客Windows Phone视频教程中的Windows Phone演示1”这一节中的视频演示），这就是非常炫的触摸屏的操作。早期的智能手机只有键盘，如果用户想点击某个菜单项，必须按键盘上的方向键来控制菜单项的选择，用起来非常麻烦；后来出现了支持手写笔的触摸屏手机，用户可以使用手写笔来快速点击某个菜单项。</p>
<p><img alt="" src="/Upload/EditorImage/image/android/201205/6347208924799047842011072623464961.jpg"></p>
<p>&nbsp;&nbsp; 但是通过手写笔来进行操作最大的麻烦就是必须随身带着手写笔，如果忘带或者丢了手写笔，那么就杯具了。手写笔会丢，但是手指不会丢，如果能用手指来代替手写笔直接在屏幕上划来划去不就好了吗？但是使用手写笔的触摸屏采用的是电阻屏，电阻屏是无法使用手指直接操作的，只能使用手写笔。电容屏则解决了这个问题，电容屏就可以通过手指直接操作。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 电容屏和电阻屏是触摸屏实现的不同技术，具体原理是硬件层面的东西，这里不再讨论，但是一个需要注意的事情是手写笔的笔尖非常细，因此手机程序中的按钮等控件尺寸做的很小也能很容易的点击；但是由于手指非常粗，手机上的按钮必须做的比较大才能避免误碰。由于现在电容屏触摸屏已经是主流，因此后面我说的触摸屏一般都指的是电容屏触摸屏。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在触摸屏大部分都支持多点触摸，也就是可以感应到多个手指在屏幕上的操作。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 触摸屏的出现改变了手机的操作方式，想放大图片只要用两个手指在屏幕上做个“撑大”的动作就可以，想显示下一幅图片只要用手指在屏幕上向右滑动即可，想向下翻页只要快速的向下播屏幕即可。现在还有很多基于触摸屏的游戏，比如愤怒的小鸟、俗称“切西瓜”的水果忍者、切绳子，甚至在手机版的极品飞车中也可以通过手机上滑实现汽车加速的功能，非常炫。由于传智播客录制的Windows Phone视频教程中没有录制讲师的现场手机操作，所以无法像教室课堂现场的学生一样看到老师的操作，对这些触摸屏的操作没有深刻的印象，推荐大家找一个智能手机玩一玩体验一下，绝对会让你直呼过瘾。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows Phone手机有三个硬件按钮，分别是后退、首页和搜索。点击“后退”按钮可以实现页面后退等功能，点击“首页”按钮可以返回Live Tile页面，点击“搜索”按钮可以打开手机自带的搜索程序。</p>
<p><img alt="" src="/Upload/EditorImage/image/android/201205/6347208924834073812011072623470956.jpg"></p>
<p>有人看到Windows Phone手机有一个搜索按钮感觉很奇怪，为什么手机要把搜索功能作为一个基本的按键呢？用过Android手机的朋友也会发现Android也有搜索按钮，点击搜索按钮就可以启动搜索引擎。其实，手机系统生产厂商并没有从卖手机这个一锤子买卖上赚太多钱，甚至是赔钱，手机系统厂商是靠后续Marketplace卖软件、卖音乐，靠用户用他们内置的搜索引擎来持续不断的赚钱。所以智能手机系统厂商才这么重视搜索按钮。很多手机厂商修改android系统做自己手机系统的时候都把android内置的google搜索引擎改成了其他搜索引擎，谷歌才会急的要把android搞成闭源的，因为那些厂商动了谷歌的“来钱的道”。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows Phone下安装软件不是在网上下载软件然后安装的，而是用户直接到手机的Marketplace中进行软件的安装，除非在开发环境下，否则用户无法把电脑上的安装包安到手机上。而Windows Phone中安装游戏则需要打开XBox Live进行在线安装。</p>
<p><img alt="" src="/Upload/EditorImage/image/android/201205/6347208924904806402011072623473428.jpg"></p>
<p>提起XBox这个词喜欢玩游戏的人一定不陌生，XBox 360是微软推出的家庭游戏主机，XBox是家庭游戏主机的领头羊。XBox 360下有丰富的优质游戏资源，微软为了利用XBox的优势来推动Windows Phone的发展，微软把XBox 360中游戏开发的技术XNA一直到了Windows Phone上，这样XBox 360上的游戏就可以非常容易的移植到Windows Phone上，现在Windows Phone上游戏数量短时间内井喷就是因为这个原因。对于普通手机用户来讲，手机就是一个能打电话发短信的游戏机，微软正式抓住了这点来进行Windows
 Phone的推广，历史会证明微软这个策略的正确性。不管你信不信，反正我是信了。</p>
</div>
<br>


            
                    <div>来源：http://blog.csdn.net/cownew/article/details/6636360</div>]]></description>
</item>


</channel>
</rss>

