<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Love in coding...</title><subtitle type="text">Free and Susan</subtitle><id>http://feed.cnblogs.com/blog/u/16722/rss</id><updated>2012-06-01T09:07:29Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/16722/rss"/><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/06/01/2531085.html</id><title type="text">android 通过canvas旋转 绘制文字 竖直等不同方向的显示</title><summary type="text">效果如下：主体代码如下：packagecom.free.chart;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.view.SurfaceHolder;importandroid.view.SurfaceView;publicclassDrawTextStudyextendsSurfaceViewimplementsSurfaceHolder.Callback{SurfaceHo</summary><published>2012-06-01T09:07:00Z</published><updated>2012-06-01T09:07:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/06/01/2531085.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/06/01/2531085.html"/><content type="html">&lt;p&gt;效果如下：&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/freeliver54/helloFreeWorld.png" width="230" height="180" /&gt;&lt;/p&gt;&lt;p&gt;主体代码如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #0000ff"&gt;package&lt;/span&gt;&amp;nbsp;com.free.chart;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&amp;nbsp;android.content.Context;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&amp;nbsp;android.graphics.Canvas;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&amp;nbsp;android.graphics.Color;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&amp;nbsp;android.graphics.Paint;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&amp;nbsp;android.view.SurfaceHolder;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt;&amp;nbsp;android.view.SurfaceView;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;DrawTextStudy&amp;nbsp;&lt;span style="color: #0000ff"&gt;extends&lt;/span&gt;&amp;nbsp;SurfaceView&amp;nbsp;&lt;span style="color: #0000ff"&gt;implements&lt;/span&gt;&amp;nbsp;SurfaceHolder.Callback&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SurfaceHolder&amp;nbsp;holder;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;DrawTextStudy(Context&amp;nbsp;context)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;super&lt;/span&gt;(context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO&amp;nbsp;Auto-generated&amp;nbsp;constructor&amp;nbsp;stub&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;holder&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.getHolder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;holder.addCallback(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;surfaceChanged(SurfaceHolder&amp;nbsp;holder,&amp;nbsp;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;format,&amp;nbsp;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;width,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;height)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO&amp;nbsp;Auto-generated&amp;nbsp;method&amp;nbsp;stub&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;surfaceCreated(SurfaceHolder&amp;nbsp;holder)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO&amp;nbsp;Auto-generated&amp;nbsp;method&amp;nbsp;stub&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Thread(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MyThread()).start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;surfaceDestroyed(SurfaceHolder&amp;nbsp;holder)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO&amp;nbsp;Auto-generated&amp;nbsp;method&amp;nbsp;stub&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;drawText(Canvas&amp;nbsp;canvas&amp;nbsp;,String&amp;nbsp;text&amp;nbsp;,&amp;nbsp;&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;&amp;nbsp;x&amp;nbsp;,&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;&amp;nbsp;y,Paint&amp;nbsp;paint&amp;nbsp;,&lt;span style="color: #0000ff"&gt;float&lt;/span&gt;&amp;nbsp;angle){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(angle&amp;nbsp;!=&amp;nbsp;0){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.rotate(angle,&amp;nbsp;x,&amp;nbsp;y);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.drawText(text,&amp;nbsp;x,&amp;nbsp;y,&amp;nbsp;paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(angle&amp;nbsp;!=&amp;nbsp;0){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.rotate(-angle,&amp;nbsp;x,&amp;nbsp;y);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;MyThread&amp;nbsp;&lt;span style="color: #0000ff"&gt;implements&lt;/span&gt;&amp;nbsp;Runnable{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;run()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;TODO&amp;nbsp;Auto-generated&amp;nbsp;method&amp;nbsp;stub&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas&amp;nbsp;canvas&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas&amp;nbsp;=&amp;nbsp;holder.lockCanvas();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Paint&amp;nbsp;paint&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Paint();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setColor(Color.WHITE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setTextSize(20);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.drawLine(100,&amp;nbsp;100,&amp;nbsp;100,&amp;nbsp;400,&amp;nbsp;paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawText(canvas,"Hello",&amp;nbsp;80,&amp;nbsp;200,&amp;nbsp;paint,-90);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setColor(Color.RED);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setTextSize(40);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawText(canvas,"free",&amp;nbsp;150,&amp;nbsp;180,&amp;nbsp;paint,-45);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setColor(Color.BLUE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawText(canvas,"World",&amp;nbsp;150,&amp;nbsp;80,&amp;nbsp;paint,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;canvas.drawLine(100,&amp;nbsp;100,&amp;nbsp;400,&amp;nbsp;100,&amp;nbsp;paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;(Exception&amp;nbsp;e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span style="color: #0000ff"&gt;finally&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;holder.unlockCanvasAndPost(canvas);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;activity调用&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;onCreate(Bundle&amp;nbsp;savedInstanceState)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff"&gt;super&lt;/span&gt;.onCreate(savedInstanceState);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setContentView(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;DrawTextStudy(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;));&lt;br /&gt;}&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2531085.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/06/01/2531085.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/06/01/2529496.html</id><title type="text">[转]通过创建一个位图的XY Chart来学习Android绘图类Rect,Paint,Bitmap,Canvas（附源码）</title><summary type="text">本文转自：http://www.cnblogs.com/salam/archive/2010/11/10/1873437.html绘制一个XY集是一种很常见的任务,基于Android平台的绘制很简单，它让所有的GUI在XML中定义的（虽然它也可以通过代码创建）模型是相当不错的。大部分的图形处理一个样本查看，但在大多数情况下，图应该是一个部分的实施走上屏幕布局XML定义为一所以在这里展示我们ImageView布局对象。 在Android环境中，有一整套程序的图形通常是位图实现像素，Canvas是用来绘制位图的画布，通过这一点我们可以得出元（文字，线条等）它描述了漆的颜色，款式等。下面是效果..</summary><published>2012-06-01T01:11:00Z</published><updated>2012-06-01T01:11:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/06/01/2529496.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/06/01/2529496.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.cnblogs.com/salam/archive/2010/11/10/1873437.html" target="_blank"&gt;http://www.cnblogs.com/salam/archive/2010/11/10/1873437.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;　绘制一个XY集是一种很常见的任务,基于Android平台的绘制很简单，它让所有的GUI在XML中定义的（虽然它也可以通过代码创建）模型是相当不错的。&lt;span&gt;大部分的图形处理一个样本查看，但在大多数情况下，图应该是一个部分的实施走上屏幕布局XML定义为一所以在这里展示我们&lt;code&gt;ImageView&lt;/code&gt;布局对象。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span&gt;在Android环境中，有一整套程序的图形通常是&lt;em&gt;位图&lt;/em&gt;实现像素，Canvas是用来绘制位图的画布，通过这一点我们可以得出元（文字，线条等）它描述了&lt;em&gt;漆&lt;/em&gt;的颜色，款式等。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;下面是效果图&lt;/p&gt;&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto" alt="" src="http://pic002.cnblogs.com/images/2010/133128/2010111011261911.png" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;图形界面我们通过Xml定义。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1.XML的GUI布局&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;lt;TableLayout &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:android="http://schemas.android.com/apk/res/android"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="fill_parent" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="fill_parent"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:background="#4B088A"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TableRow android:layout_width="fill_parent" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:padding="20px"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:id="@+id/some" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="fill_parent" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="Some layout&amp;nbsp; items here"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginLeft="10px"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginRight="10px"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textColor="#ff8000"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textStyle="bold"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/TableRow&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;lt;View&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp; android:layout_width="fill_parent"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:layout_height="1dip"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:background="#FFE6E6E6"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TableRow&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ImageView&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:id="@+id/testy_img" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:layout_marginLeft="20px"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:padding="20px"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/TableRow&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;lt;View&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp; android:layout_width="fill_parent"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:layout_height="1dip"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:background="#FFE6E6E6" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TableRow android:layout_width="fill_parent" &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:padding="20px"&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;android:id="@+id/more" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="fill_parent" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content" &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="More layout items here"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginLeft="10px"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginRight="10px"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp; android:textColor="#ff8000"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textStyle="bold"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/TableRow&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;lt;/TableLayout&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;这个布局文件是TableLayout布局，它定义了三行，行之间通过一条线割开&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;2.图表的实现&lt;/span&gt;&lt;/p&gt;&lt;p&gt;为了实现我们的图表，我们首先创建一个位图，然后关联到我们的布局文件，有了位图，我们就可以绘制图表，做缩放，色彩和数据显示&amp;nbsp;等效果。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;2.1绘制位图&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;首先我们使布局连接到XML对象的，那么我们创建位图。我们通过quicky_XY方法来实现所有的绘制，最后显示在屏幕上。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;public void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;setContentView(R.layout.main);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;ImageView image = (ImageView) findViewById(R.id.testy_img);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Bitmap emptyBmap = Bitmap.createBitmap(250, 200, Config.ARGB_8888);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int width = emptyBmap.getWidth();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int height = emptyBmap.getHeight();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Bitmap charty = Bitmap.createBitmap(width, height,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bitmap.Config.ARGB_8888);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;charty = quicky_XY(emptyBmap);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;image.setImageBitmap(charty);&lt;/span&gt;&lt;br /&gt;&amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2.2绘制网格&lt;/p&gt;&lt;p&gt;有了位图后，将它与Canvas相关联&lt;/p&gt;&lt;p&gt;Canvas canvas = &lt;span class="code"&gt;new&lt;/span&gt; Canvas(bitmap)&lt;/p&gt;&lt;p&gt;然后将所有的元素绘制到Canvas上，我们需要定义一些用于放置标签和数据点空间的网格。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;public static void draw_the_grid(Canvas this_g, Vector these_labels) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double rounded_max = 0.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double rounded_min = 0.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double rounded_max_temp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Object curElt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String[] cur_elt_array;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int left_margin_d, right_margin_d;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (draw_only_this_idx == -1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = these_labels.elementAt(0); // default it to 1st one if non&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = these_labels.elementAt(draw_only_this_idx); // now just the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// 1st elt&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_elt_array = (String[]) curElt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;rounded_max = get_ceiling_or_floor(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Double.parseDouble(cur_elt_array[2]), true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;rounded_min = get_ceiling_or_floor(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Double.parseDouble(cur_elt_array[3]), false);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// ok so now we have the max value of the set just get a cool ceiling&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// and we go on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final Paint paint = new Paint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setTextSize(15);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;left_margin_d = getCurTextLengthInPixels(paint, Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.toString(rounded_max));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// keep the position for later drawing -- leave space for the legend&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int p_height = 170;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int p_width = 220;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int[] tmp_draw_sizes = { 2 + left_margin_d, 25,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_width - 2 - left_margin_d, p_height - 25 - 5 };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;drawSizes = tmp_draw_sizes; // keep it for later processing&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// with the mzrgins worked out draw the plotting grid&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setStyle(Paint.Style.FILL);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setColor(Color.WHITE);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// Android does by coords&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;this_g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.drawRect(drawSizes[0], drawSizes[1], drawSizes[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[2], drawSizes[1] + drawSizes[3], paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setColor(Color.GRAY);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// finally draw the grid&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setStyle(Paint.Style.STROKE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;this_g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.drawRect(drawSizes[0], drawSizes[1], drawSizes[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[2], drawSizes[1] + drawSizes[3], paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;for (int i = 1; i &amp;lt; 5; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawLine(drawSizes[0],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[1] + (i * drawSizes[3] / 5), drawSizes[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[2], drawSizes[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ (i * drawSizes[3] / 5), paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawLine(drawSizes[0] + (i * drawSizes[2] / 5),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[1], drawSizes[0] + (i * drawSizes[2] / 5),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[1] + drawSizes[3], paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// good for one value&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;print_axis_values_4_grid(this_g, cur_elt_array[1], Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.toString(rounded_max), Double.toString(rounded_min),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_elt_array[0], 2, 0);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;} // --- end of draw_grid ---&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;2.3绘图和缩放&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;这些数据点需要一到屏幕上的坐标数据范围正确的映射遍历数据点和调用&lt;code&gt;drawLine&lt;/code&gt;接连两个点会完成我们的图表。&lt;span&gt;数据点通过数据为载体，现在将调用&lt;strong&gt;&lt;code&gt;plot_array_list&lt;/code&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&lt;span&gt;&lt;strong&gt;&lt;code&gt;&lt;span class="code"&gt;private&lt;/span&gt; &lt;span class="code"&gt;static&lt;/span&gt; Point&amp;nbsp; scale_point(&lt;span class="code"&gt;int&lt;/span&gt; this_x , &lt;span class="code"&gt;double&lt;/span&gt; this_y&amp;nbsp; , Point drawPoint , &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; scr_x&amp;nbsp; , &lt;span class="code"&gt;int&lt;/span&gt; scr_y&amp;nbsp; , &lt;span class="code"&gt;int&lt;/span&gt; scr_width&amp;nbsp; , &lt;span class="code"&gt;int&lt;/span&gt; src_height&amp;nbsp; , &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;double&lt;/span&gt; maxX&amp;nbsp; , &lt;span class="code"&gt;double&lt;/span&gt; minX&amp;nbsp; , &lt;span class="code"&gt;double&lt;/span&gt;&amp;nbsp; maxY&amp;nbsp; , &lt;span class="code"&gt;double&lt;/span&gt; minY&amp;nbsp; )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; temp_x, temp_y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point temp = &lt;span class="code"&gt;new&lt;/span&gt; Point();&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;if&lt;/span&gt; (maxY == minY)&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;skip bad data&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;return&lt;/span&gt; null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;don't touch it if is nothing&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;try&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp_x = scr_x + (&lt;span class="code"&gt;int&lt;/span&gt;)( ((&lt;span class="code"&gt;double&lt;/span&gt;)this_x - minX) * &lt;br /&gt;((&lt;span class="code"&gt;double&lt;/span&gt;)scr_width / (maxX - minX)) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp_y = scr_y + (&lt;span class="code"&gt;int&lt;/span&gt;)( (maxY - this_y) * &lt;br /&gt;((&lt;span class="code"&gt;double&lt;/span&gt;)src_height / (maxY - minY)) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp.x = temp_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp.y= temp_y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drawPoint = temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;catch&lt;/span&gt;&amp;nbsp; (Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;return&lt;/span&gt; (null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;return&lt;/span&gt; temp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; --- end of scale_point --&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;public&lt;/span&gt; &lt;span class="code"&gt;static&lt;/span&gt; &lt;span class="code"&gt;boolean&lt;/span&gt; plot_array_list(Canvas this_g, Vector this_array_list , &lt;br /&gt;Vector these_labels , String this_title , &lt;span class="code"&gt;int&lt;/span&gt; only_this_idx ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; idx;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; lRow ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; nParms;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt;&amp;nbsp; i, points_2_plot, shifted_idx ; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; prev_x, prev_y ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; cur_x=0, cur_y=0 ; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;Dim ShowMarker As Object&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Point cur_point = &lt;span class="code"&gt;new&lt;/span&gt; Point();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_point.set(&lt;span class="code"&gt;0&lt;/span&gt;,&lt;span class="code"&gt;0&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;double&lt;/span&gt; cur_maxX, cur_minX, cur_maxY=20, cur_minY=0, cur_rangeY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; cur_start_x, cur_points_2_plot; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;int&lt;/span&gt; POINTS_TO_CHANGE = &lt;span class="code"&gt;30&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;double&lt;/span&gt; cur_OBD_val;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;Object curElt;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String curElt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] cur_elt_array;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object curElt2;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] cur_elt_array2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;final&lt;/span&gt; Paint paint = &lt;span class="code"&gt;new&lt;/span&gt; Paint();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;try&lt;/span&gt; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; catch in this block for some thing&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; points_2_plot = this_array_list.size();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_start_x = &lt;span class="code"&gt;0&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_points_2_plot = points_2_plot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_maxX = cur_points_2_plot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_minX = &lt;span class="code"&gt;0&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;'Create the plot points for this series from the ChartPoints array:&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curElt = (String)this_array_list.elementAt(&lt;span class="code"&gt;0&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;the lines have to come out good&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setStyle(Paint.Style.STROKE);&lt;br /&gt;&lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;for(&amp;nbsp; nParms = 0 ; nParms &amp;lt; cur_elt_array.length ; nParms++ )&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nParms = only_this_idx;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;get cur item labels&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curElt2 = these_labels.elementAt(nParms);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_elt_array2&amp;nbsp; = (String[]) curElt2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_maxY = get_ceiling_or_floor &lt;br /&gt;(Double.parseDouble(cur_elt_array2[&lt;span class="code"&gt;2&lt;/span&gt;]) , true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_minY = get_ceiling_or_floor &lt;br /&gt;(Double.parseDouble(cur_elt_array2[&lt;span class="code"&gt;3&lt;/span&gt;]) , false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_points_2_plot = this_array_list.size();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_maxX = cur_points_2_plot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curElt = (String)this_array_list.elementAt(&lt;span class="code"&gt;0&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_OBD_val = Double.parseDouble( curElt);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_point = scale_point(&lt;span class="code"&gt;0&lt;/span&gt;, cur_OBD_val, cur_point, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drawSizes[&lt;span class="code"&gt;0&lt;/span&gt;], drawSizes[&lt;span class="code"&gt;1&lt;/span&gt;], drawSizes[&lt;span class="code"&gt;2&lt;/span&gt;], drawSizes[&lt;span class="code"&gt;3&lt;/span&gt;], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_maxX, cur_minX, cur_maxY, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_minY); &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;'(CInt(curAxisValues.Mins(nParms - 2) / 5) + 1) * 5)&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_x = cur_point.x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_y = cur_point.y;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(Color.GREEN);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; the point is only cool when samples are low&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;if&lt;/span&gt; ( cur_points_2_plot &amp;lt; POINTS_TO_CHANGE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this_g.drawRect(cur_x-&lt;span class="code"&gt;2&lt;/span&gt;, cur_y-&lt;span class="code"&gt;2&lt;/span&gt;, cur_x-&lt;span class="code"&gt;2&lt;/span&gt; + &lt;span class="code"&gt;4&lt;/span&gt;,&lt;br /&gt;cur_y-2+ &lt;span class="code"&gt;4&lt;/span&gt; , paint); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_x = cur_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_y = cur_y;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;'go and plot point for this parm -- pont after the 1st one &lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;for&lt;/span&gt; (lRow = cur_start_x +1 ; lRow&amp;lt; cur_start_x + &lt;br /&gt;cur_points_2_plot -&lt;span class="code"&gt;1&lt;/span&gt; ; lRow++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; curElt = (String)this_array_list.elementAt(lRow);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_OBD_val = Double.parseDouble( curElt); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;'work out an approx if cur Y values not avail(e.g. nothing)&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; if (! (cur_elt_array[nParms ] == null ) )&amp;nbsp;&amp;nbsp; //skip bad one&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;if&lt;/span&gt;( cur_OBD_val == Double.NaN) &lt;span class="code"&gt;continue&lt;/span&gt;;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;skip bad one&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_point=scale_point(lRow, cur_OBD_val, cur_point,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; drawSizes[&lt;span class="code"&gt;0&lt;/span&gt;], drawSizes[&lt;span class="code"&gt;1&lt;/span&gt;], &lt;br /&gt;drawSizes[&lt;span class="code"&gt;2&lt;/span&gt;], drawSizes[&lt;span class="code"&gt;3&lt;/span&gt;], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_maxX, cur_minX, cur_maxY, cur_minY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_x = cur_point.x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cur_y = cur_point.y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;if&lt;/span&gt; ( cur_points_2_plot &amp;lt; POINTS_TO_CHANGE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this_g.drawRect(cur_x-&lt;span class="code"&gt;2&lt;/span&gt;, cur_y-&lt;span class="code"&gt;2&lt;/span&gt;, cur_x-&lt;span class="code"&gt;2&lt;/span&gt; +4, &lt;br /&gt;cur_y-&lt;span class="code"&gt;2&lt;/span&gt; + &lt;span class="code"&gt;4&lt;/span&gt;, paint ); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this_g.drawLine( prev_x, prev_y, cur_x, cur_y, paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_x = cur_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prev_y = cur_y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; ' if end of this_array(lRow, nParms - 1)&amp;lt;&amp;gt; nothing&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; end of for lrow&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; end of for nParmns&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt;this_g.invalidate();&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;return&lt;/span&gt;( true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;catch&lt;/span&gt; (Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="code"&gt;return&lt;/span&gt;( false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;span class="code"&gt;//&lt;/span&gt;&lt;span class="code"&gt; --- end of plot_array_list&amp;nbsp; --&lt;/span&gt;&lt;/code&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&lt;span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Java完整代码：&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;package com.wjq.chart;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;import java.util.Vector;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;import android.app.Activity;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Bitmap;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Canvas;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Color;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Paint;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Point;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Rect;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.RectF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Typeface;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Bitmap.Config;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.graphics.Paint.FontMetrics;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.os.Bundle;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;import android.widget.ImageView;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;public class Main extends Activity {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;static int draw_only_this_idx = -1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;static int[] drawSizes;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;@Override&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;public void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;setContentView(R.layout.main);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;ImageView image = (ImageView) findViewById(R.id.testy_img);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Bitmap emptyBmap = Bitmap.createBitmap(250, 200, Config.ARGB_8888);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int width = emptyBmap.getWidth();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int height = emptyBmap.getHeight();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Bitmap charty = Bitmap.createBitmap(width, height,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bitmap.Config.ARGB_8888);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;charty = quicky_XY(emptyBmap);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;image.setImageBitmap(charty);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;public static Bitmap quicky_XY(Bitmap bitmap) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// xode to get bitmap onto screen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.getHeight(), Config.ARGB_8888);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Canvas canvas = new Canvas(output);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final int color = 0xff0B0B61;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final Paint paint = new Paint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final RectF rectF = new RectF(rect);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final float roundPx = 12;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// get the little rounded cornered outside&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setAntiAlias(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;canvas.drawARGB(0, 0, 0, 0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setColor(color);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;canvas.drawRoundRect(rectF, roundPx, roundPx, paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// ---- NOw just draw on this bitmap&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// Set the labels info manually&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String[] cur_elt_array = new String[4];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_elt_array[0] = "Voltage";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_elt_array[1] = "volts";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_elt_array[2] = "93"; // max&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_elt_array[3] = "0"; // min&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Vector labels = new Vector();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;labels.add(cur_elt_array);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;draw_the_grid(canvas, labels);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// se the data to be plotted and we should on our way&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Vector data_2_plot = new Vector();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("0.2");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("1.2");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("9.6");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("83.2");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("44.2");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("20.2");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;data_2_plot.add("16.2");&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;plot_array_list(canvas, data_2_plot, labels, "the title", 0);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;canvas.drawBitmap(bitmap, rect, rect, paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;return output;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;public static void draw_the_grid(Canvas this_g, Vector these_labels) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double rounded_max = 0.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double rounded_min = 0.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double rounded_max_temp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Object curElt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String[] cur_elt_array;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int left_margin_d, right_margin_d;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (draw_only_this_idx == -1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = these_labels.elementAt(0); // default it to 1st one if non&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// set&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = these_labels.elementAt(draw_only_this_idx); // now just the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// 1st elt&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_elt_array = (String[]) curElt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;rounded_max = get_ceiling_or_floor(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Double.parseDouble(cur_elt_array[2]), true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;rounded_min = get_ceiling_or_floor(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Double.parseDouble(cur_elt_array[3]), false);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// ok so now we have the max value of the set just get a cool ceiling&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// and we go on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final Paint paint = new Paint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setTextSize(15);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;left_margin_d = getCurTextLengthInPixels(paint, Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.toString(rounded_max));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// keep the position for later drawing -- leave space for the legend&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int p_height = 170;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int p_width = 220;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int[] tmp_draw_sizes = { 2 + left_margin_d, 25,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p_width - 2 - left_margin_d, p_height - 25 - 5 };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;drawSizes = tmp_draw_sizes; // keep it for later processing&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// with the mzrgins worked out draw the plotting grid&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setStyle(Paint.Style.FILL);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setColor(Color.WHITE);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// Android does by coords&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;this_g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.drawRect(drawSizes[0], drawSizes[1], drawSizes[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[2], drawSizes[1] + drawSizes[3], paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setColor(Color.GRAY);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// finally draw the grid&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setStyle(Paint.Style.STROKE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;this_g&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.drawRect(drawSizes[0], drawSizes[1], drawSizes[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[2], drawSizes[1] + drawSizes[3], paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;for (int i = 1; i &amp;lt; 5; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawLine(drawSizes[0],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[1] + (i * drawSizes[3] / 5), drawSizes[0]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[2], drawSizes[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ (i * drawSizes[3] / 5), paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawLine(drawSizes[0] + (i * drawSizes[2] / 5),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[1], drawSizes[0] + (i * drawSizes[2] / 5),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[1] + drawSizes[3], paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// good for one value&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;print_axis_values_4_grid(this_g, cur_elt_array[1], Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.toString(rounded_max), Double.toString(rounded_min),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_elt_array[0], 2, 0);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;} // --- end of draw_grid ---&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;private static Point scale_point(int this_x, double this_y,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Point drawPoint, int scr_x, int scr_y, int scr_width,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int src_height, double maxX, double minX, double maxY, double minY) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int temp_x, temp_y;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Point temp = new Point();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (maxY == minY) // skip bad data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// don't touch it if is nothing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp_x = scr_x&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ (int) (((double) this_x - minX) * ((double) scr_width / (maxX - minX)));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp_y = scr_y&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ (int) ((maxY - this_y) * ((double) src_height / (maxY - minY)));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp.x = temp_x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;temp.y = temp_y;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawPoint = temp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;} catch (Exception e) {&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;return temp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;} // --- end of scale_point --&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;public static boolean plot_array_list(Canvas this_g,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vector this_array_list, Vector these_labels, String this_title,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int only_this_idx) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int idx;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int lRow;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int nParms;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int i, points_2_plot, shifted_idx;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int prev_x, prev_y;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int cur_x = 0, cur_y = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// Dim ShowMarker As Object&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Point cur_point = new Point();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;cur_point.set(0, 0);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double cur_maxX, cur_minX, cur_maxY = 20, cur_minY = 0, cur_rangeY;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int cur_start_x, cur_points_2_plot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int POINTS_TO_CHANGE = 30;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double cur_OBD_val;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// Object curElt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String curElt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String[] cur_elt_array;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Object curElt2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String[] cur_elt_array2;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final Paint paint = new Paint();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;try // catch in this block for some thing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;points_2_plot = this_array_list.size();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_start_x = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_points_2_plot = points_2_plot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_maxX = cur_points_2_plot;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_minX = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 'Create the plot points for this series from the ChartPoints&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// array:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = (String) this_array_list.elementAt(0);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the lines have to come out good&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setStyle(Paint.Style.STROKE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// for( nParms = 0 ; nParms &amp;lt; cur_elt_array.length ; nParms++ )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nParms = only_this_idx;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// get cur item labels&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt2 = these_labels.elementAt(nParms);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_elt_array2 = (String[]) curElt2;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_maxY = get_ceiling_or_floor(Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.parseDouble(cur_elt_array2[2]), true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_minY = get_ceiling_or_floor(Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.parseDouble(cur_elt_array2[3]), false);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_points_2_plot = this_array_list.size();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_maxX = cur_points_2_plot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = (String) this_array_list.elementAt(0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_OBD_val = Double.parseDouble(curElt);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_point = scale_point(0, cur_OBD_val, cur_point,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[0], drawSizes[1], drawSizes[2], drawSizes[3],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_maxX, cur_minX, cur_maxY, cur_minY); // '(CInt(curAxisValues.Mins(nParms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// - 2) / 5)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// + 1) * 5)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_x = cur_point.x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_y = cur_point.y;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;paint.setColor(Color.GREEN);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the point is only cool when samples are low&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (cur_points_2_plot &amp;lt; POINTS_TO_CHANGE)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawRect(cur_x - 2, cur_y - 2, cur_x - 2 + 4,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_y - 2 + 4, paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prev_x = cur_x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prev_y = cur_y;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 'go and plot point for this parm -- pont after the 1st one&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (lRow = cur_start_x + 1; lRow &amp;lt; cur_start_x&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ cur_points_2_plot - 1; lRow++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;curElt = (String) this_array_list.elementAt(lRow);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_OBD_val = Double.parseDouble(curElt);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 'work out an approx if cur Y values not avail(e.g.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// nothing)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// if (! (cur_elt_array[nParms ] == null ) ) //skip bad one&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (cur_OBD_val == Double.NaN)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue; // skip bad one&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_point = scale_point(lRow, cur_OBD_val, cur_point,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[0], drawSizes[1], drawSizes[2],&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawSizes[3], cur_maxX, cur_minX, cur_maxY,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_minY);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_x = cur_point.x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_y = cur_point.y;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (cur_points_2_plot &amp;lt; POINTS_TO_CHANGE)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawRect(cur_x - 2, cur_y - 2,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_x - 2 + 4, cur_y - 2 + 4, paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_g.drawLine(prev_x, prev_y, cur_x, cur_y, paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prev_x = cur_x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;prev_y = cur_y;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // ' if end of this_array(lRow, nParms - 1)&amp;lt;&amp;gt; nothing&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // end of for lrow&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} // end of for nParmns&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// this_g.invalidate();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;} catch (Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (false);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;} // --- end of plot_array_list --&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;public static void print_axis_values_4_grid(Canvas thisDrawingArea,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;String cur_units, String cur_max, String cur_min, String cur_label,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int x_guide, int this_idx) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;String this_str;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double delta = (Double.valueOf(cur_max).doubleValue() - Double.valueOf(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cur_min).doubleValue()) / 5;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;final Paint paint = new Paint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setColor(Color.WHITE);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setTypeface(Typeface.SANS_SERIF);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setTextSize(8);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;for (int i = 0; i &amp;lt; 6; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_str = Double&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.toString((Double.valueOf(cur_min).doubleValue() + delta&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;* i));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;final int point = this_str.indexOf('.');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (point &amp;gt; 0) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// If has a decimal point, may need to clip off after or force 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// decimal places&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_str = this_str + "00";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_str = this_str.substring(0, point + 3);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_str = this_str + ".00";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (i == 5) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisDrawingArea.drawText(this_str, x_guide - 2, drawSizes[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[3] - (i * drawSizes[3] / 5), paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisDrawingArea.drawText(this_str, x_guide - 2, drawSizes[1]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ drawSizes[3] - (i * drawSizes[3] / 5) - 3, paint);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;paint.setTextSize(10);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;switch (this_idx) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;case 0:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisDrawingArea.drawText("&amp;nbsp; " + cur_label + " - " + cur_units,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_guide - 2, drawSizes[1] - 15, paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;default:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;thisDrawingArea.drawText("&amp;nbsp; " + cur_label + " - " + cur_units,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x_guide - 2 - 30, drawSizes[1] - 15, paint);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;private static int getCurTextLengthInPixels(Paint this_paint,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;String this_text) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;FontMetrics fp = this_paint.getFontMetrics();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;Rect rect = new Rect();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;this_paint.getTextBounds(this_text, 0, this_text.length(), rect);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;return rect.width();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;public static double get_ceiling_or_floor(double this_val, boolean is_max) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double this_min_tmp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int this_sign;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;int this_10_factor = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;double this_rounded;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (this_val == 0.0) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_rounded = 0.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return this_rounded;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;this_min_tmp = Math.abs(this_val);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (this_min_tmp &amp;gt;= 1.0 &amp;amp;&amp;amp; this_min_tmp &amp;lt; 10.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else if (this_min_tmp &amp;gt;= 10.0 &amp;amp;&amp;amp; this_min_tmp &amp;lt; 100.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 10;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else if (this_min_tmp &amp;gt;= 100.0 &amp;amp;&amp;amp; this_min_tmp &amp;lt; 1000.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 100;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else if (this_min_tmp &amp;gt;= 1000.0 &amp;amp;&amp;amp; this_min_tmp &amp;lt; 10000.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 1000;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else if (this_min_tmp &amp;gt;= 10000.0 &amp;amp;&amp;amp; this_min_tmp &amp;lt; 100000.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 10000;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;// 'cover when min is pos and neg&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (is_max) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this_val &amp;gt; 0.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_sign = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_sign = -1;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;} else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this_val &amp;gt; 0.0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_sign = -1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_sign = 1;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (this_min_tmp &amp;gt; 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_rounded = (double) (((int) (this_min_tmp / this_10_factor) + this_sign) * this_10_factor);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;else {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_rounded = (int) (this_min_tmp * 100.0);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// ' cover same as above bfir number up to .001 less than tha it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// will skip&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (this_rounded &amp;gt;= 1 &amp;amp;&amp;amp; this_rounded &amp;lt; 9)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (this_rounded &amp;gt;= 10 &amp;amp;&amp;amp; this_rounded &amp;lt; 99)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 10;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (this_rounded &amp;gt;= 100 &amp;amp;&amp;amp; this_rounded &amp;lt; 999)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_10_factor = 100;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_rounded = (double) (((int) ((this_rounded) / this_10_factor) + this_sign) * this_10_factor);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_rounded = (int) (this_rounded) / 100.0;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;if (this_val &amp;lt; 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this_rounded = -this_rounded;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;&amp;nbsp;return this_rounded;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 10pt"&gt;&lt;span&gt;&lt;strong&gt;&lt;code&gt;&lt;span class="code"&gt;&lt;span style="font-size: 10pt"&gt;源码下载：&lt;/span&gt;&lt;a href="http://files.cnblogs.com/salam/XYChart.rar"&gt;&lt;span style="color: #6466b3"&gt;&lt;span style="font-size: 10pt"&gt;http&lt;/span&gt;://files.cnblogs.com/salam/XYChart.rar&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2529496.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/06/01/2529496.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/31/2528493.html</id><title type="text">[转]AchartEngineActivity引擎绘制柱状图、曲线图</title><summary type="text">本文转自：http://www.cnblogs.com/devinzhang/archive/2012/02/21/2360929.html1.简介 AChartEngine（简称ACE）是Google的一个开源图表库（for Android）。它功能强大，支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。该项目地址位于：http://code.google.com/p/achartengine/。关于里面类的具体使用，请下载响应的文档说明（主页上有）。2.开发步骤1）在工程中新建一个文件夹比如lib，用于存放ACE Libraries，把achartegine-0.5.0.</summary><published>2012-05-31T07:09:00Z</published><updated>2012-05-31T07:09:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/31/2528493.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/31/2528493.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.cnblogs.com/devinzhang/archive/2012/02/21/2360929.html" target="_blank"&gt;http://www.cnblogs.com/devinzhang/archive/2012/02/21/2360929.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;1.简介&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;AChartEngine（简称ACE）是Google的一个开源图表库（for Android）。它功能强大，支持散点图、折线图、饼图、气泡图、柱状图、短棒图、仪表图等多种图表。&lt;span&gt;该项目地址位于：&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span lang="EN-US"&gt;http://code.google.com/p/achartengine/。关于里面类的具体使用，请下载响应的文档说明（主页上有）。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2012/267603/2012022315254692.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;2.开发步骤&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1）在工程中新建一个文件夹比如lib，用于存放ACE Libraries，把achartegine-0.5.0.jar包复制到lib里面。然后把这个jar的路径添加到项目的Build Path中。&lt;/p&gt;&lt;p&gt;2）修改AndroidManifest.xml&lt;/p&gt;&lt;p&gt;主要是加入一个&amp;lt;activity&amp;gt;：&lt;/p&gt;&lt;p&gt;&amp;lt;&amp;nbsp;activity&amp;nbsp;android:name&amp;nbsp;=&amp;nbsp;&lt;em&gt;"org.achartengine.GraphicalActivity"&amp;nbsp;&lt;/em&gt;/&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;3）&lt;/span&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;绘制柱状图&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; main &lt;span style="color: #0000ff"&gt;extends&lt;/span&gt; ListActivity {&lt;br /&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; SERIES_NR = 2;&lt;br /&gt;    &lt;span style="color: #008000"&gt;/**&lt;/span&gt;&lt;span style="color: #008000"&gt; Called when the activity is first created. &lt;/span&gt;&lt;span style="color: #008000"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; ArrayList&amp;lt;Map&amp;lt;String,String&amp;gt;&amp;gt; maps = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArrayList&amp;lt;Map&amp;lt;String,String&amp;gt;&amp;gt;();&lt;br /&gt;    @Override&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) {&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;super&lt;/span&gt; .onCreate(savedInstanceState);&lt;br /&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;        setContentView(R.layout.main);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; 加入 ListItem &amp;#8220; 调度查询 &amp;#8221;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        HashMap&amp;lt;String,String&amp;gt; map= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; HashMap&amp;lt;String,String&amp;gt;();&lt;br /&gt;        map.put( "name" , " 柱状图 " );&lt;br /&gt;        map.put( "desc" , " 显示柱状图 " );&lt;br /&gt;        maps .add(map);&lt;br /&gt;        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; 构建 listView 的适配器&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        SimpleAdapter adapter= &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SimpleAdapter( &lt;span style="color: #0000ff"&gt;this&lt;/span&gt; , maps ,&lt;br /&gt;        android.R.layout. simple_list_item_2 , &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; SDK 库中提供的一个包含两个 TextView 的 layout&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; String[]{ "name" , "desc" }, &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; maps 中的两个 key&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; []{android.R.id. text1 ,android.R.id. text2 } &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; 两个 TextView 的 id      &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;        );&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt; .setListAdapter(adapter);&lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; ListItem 监听器方法&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; onListItemClick(ListView l, View v, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; position, &lt;span style="color: #0000ff"&gt;long&lt;/span&gt; id) {&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;super&lt;/span&gt; .onListItemClick(l, v, position, id);&lt;br /&gt;        XYMultipleSeriesRenderer renderer = getBarDemoRenderer();&lt;br /&gt;        Intent intent = ChartFactory.getBarChartIntent ( &lt;span style="color: #0000ff"&gt;this&lt;/span&gt; , getBarDemoDataset(), renderer, Type. DEFAULT );&lt;br /&gt;        startActivity(intent);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; XYMultipleSeriesDataset getBarDemoDataset() {&lt;br /&gt;        XYMultipleSeriesDataset dataset = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XYMultipleSeriesDataset();&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;final&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; nr = 10;&lt;br /&gt;        Random r = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Random();&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; ( &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = 0; i &amp;lt; SERIES_NR ; i++) {&lt;br /&gt;          CategorySeries series = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; CategorySeries( "Demo series " + (i + 1));&lt;br /&gt;          &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; ( &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; k = 0; k &amp;lt; nr; k++) {&lt;br /&gt;            series.add(100 + r.nextInt() % 100);&lt;br /&gt;          }&lt;br /&gt;          dataset.addSeries(series.toXYSeries());&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; dataset;&lt;br /&gt;      }&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; XYMultipleSeriesRenderer getBarDemoRenderer() {&lt;br /&gt;        XYMultipleSeriesRenderer renderer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XYMultipleSeriesRenderer();&lt;br /&gt;        SimpleSeriesRenderer r = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SimpleSeriesRenderer();&lt;br /&gt;        r.setColor(Color. BLUE );&lt;br /&gt;        renderer.addSeriesRenderer(r);&lt;br /&gt;        r = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SimpleSeriesRenderer();&lt;br /&gt;        r.setColor(Color. GREEN );&lt;br /&gt;        renderer.addSeriesRenderer(r);&lt;br /&gt;        setChartSettings(renderer);&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; renderer;&lt;br /&gt;      }&lt;br /&gt; &lt;br /&gt;       &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; setChartSettings(XYMultipleSeriesRenderer renderer) {&lt;br /&gt;        renderer.setChartTitle( "Chart demo" );&lt;br /&gt;        renderer.setXTitle( "x values" );&lt;br /&gt;        renderer.setYTitle( "y values" );&lt;br /&gt;        renderer.setXAxisMin(0.5);&lt;br /&gt;        renderer.setXAxisMax(10.5);&lt;br /&gt;        renderer.setYAxisMin(0);&lt;br /&gt;        renderer.setYAxisMax(210);&lt;br /&gt;      }&lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;代码解析：&lt;/span&gt;在&amp;nbsp;onListItemClick&amp;nbsp;方法中，当用户点击了&amp;#8220;显示图表&amp;#8221;之后，构造一个intent对象，然后用startActivity发送消息到前面AndroidManifest.xml申明的那个activity（&amp;nbsp;&lt;em&gt;&lt;/em&gt;&lt;em&gt;即&amp;nbsp;&lt;/em&gt;&lt;em&gt;GraphicalActivity&amp;nbsp;&lt;/em&gt;）。于是图表就显示出来了。关键是intent的构造方法 ChartFactory.getBarChartIntent。&lt;/p&gt;&lt;p&gt;ChartFactory提供了许多有用的工厂方法，如果你需要生成一个折线图，可以用它的 getLineChartIntent 方法。&lt;/p&gt;&lt;p&gt;getBarChartIntent 方法有点复杂，需要我们准备很多参数传入。其中一个是 XYMultipleSeriesDataset 类型的对象，用于提供图表需要表示的数据集，这里我们用 　 &amp;nbsp;&amp;nbsp;getBarDemoDataset 来得到它。另外一个是&amp;nbsp;XYMultipleSeriesRenderer 类型的对象，用于提供图表展现时的一些样式，这里我们用 getBarDemoRenderer 方法来得到它。&lt;/p&gt;&lt;p&gt;getLineChartIntent 方法很无聊，使用了一些随机数来作为图表数据。注意柱状图是支持多系列的，这里生成了两个系列的数据。&lt;/p&gt;&lt;p&gt;getBarDemoRenderer 方法构建了一个&amp;nbsp;XYMultipleSeriesRenderer 用来设置2个系列各自的颜色，然后调用 setChartSettings 方法设置了下坐标轴样式。&lt;/p&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;4）&lt;strong&gt;绘制曲线&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.ArrayList; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; java.util.List;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; org.achartengine.ChartFactory; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; org.achartengine.chart.PointStyle; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; org.achartengine.model.XYMultipleSeriesDataset; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; org.achartengine.model.XYSeries; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; org.achartengine.renderer.XYMultipleSeriesRenderer; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; org.achartengine.renderer.XYSeriesRenderer;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; android.app.Activity; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; android.graphics.Color; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; android.os.Bundle; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;import&lt;/span&gt; android.view.View;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; chartDemo &lt;span style="color: #0000ff"&gt;extends&lt;/span&gt; Activity { &lt;br /&gt;     &lt;br /&gt;    @Override &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; onCreate(Bundle savedInstanceState) { &lt;br /&gt;        &lt;span style="color: #0000ff"&gt;super&lt;/span&gt;.onCreate(savedInstanceState);&lt;br /&gt;&lt;br /&gt;        String[] titles = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; String[] { "First", "Second"};&lt;br /&gt;&lt;br /&gt;        List x = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArrayList(); &lt;br /&gt;        List y = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ArrayList();&lt;br /&gt;&lt;br /&gt;        x.add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt;[] { 1, 3, 5, 7, 9, 11} ); &lt;br /&gt;        x.add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt;[] { 0, 2, 4, 6, 8, 10} );&lt;br /&gt;&lt;br /&gt;        y.add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt;[] { 3, 14, 5, 30, 20, 25}); &lt;br /&gt;        y.add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;double&lt;/span&gt;[] { 18, 9, 21, 15, 10, 6});&lt;br /&gt;&lt;br /&gt;        XYMultipleSeriesDataset dataset = buildDataset(titles, x, y);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;[] colors = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;[] { Color.BLUE, Color.GREEN}; &lt;br /&gt;        PointStyle[] styles = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; PointStyle[] { PointStyle.CIRCLE, PointStyle.DIAMOND}; &lt;br /&gt;        XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles, &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        setChartSettings(renderer, "Line Chart Demo", "X", "Y", -1, 12, 0, 35 , Color.WHITE, Color.WHITE);&lt;br /&gt;&lt;br /&gt;        View chart = ChartFactory.getLineChartView(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;, dataset, renderer);&lt;br /&gt;&lt;br /&gt;        setContentView(chart); &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; XYMultipleSeriesDataset buildDataset(String[] titles, &lt;br /&gt;                                                   List xValues, &lt;br /&gt;                                                   List yValues) &lt;br /&gt;    { &lt;br /&gt;        XYMultipleSeriesDataset dataset = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XYMultipleSeriesDataset();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; length = titles.length;                  &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;有几条线 &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = 0; i &amp;lt; length; i++) &lt;br /&gt;        { &lt;br /&gt;            XYSeries series = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XYSeries(titles[i]);    &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;根据每条线的名称创建 &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;              &lt;span style="color: #0000ff"&gt;double&lt;/span&gt;[] xV = xValues.get(i);                 &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;获取第i条线的数据 &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;              &lt;span style="color: #0000ff"&gt;double&lt;/span&gt;[] yV = yValues.get(i); &lt;br /&gt;            &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; seriesLength = xV.length;                 &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;有几个点&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; k = 0; k &amp;lt; seriesLength; k++)        &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;每条线里有几个点 &lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;              { &lt;br /&gt;                series.add(xV[k], yV[k]); &lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            dataset.addSeries(series); &lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; dataset; &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; XYMultipleSeriesRenderer buildRenderer(&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;[] colors, PointStyle[] styles, &lt;span style="color: #0000ff"&gt;boolean&lt;/span&gt; fill) &lt;br /&gt;    { &lt;br /&gt;        XYMultipleSeriesRenderer renderer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XYMultipleSeriesRenderer(); &lt;br /&gt;        &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; length = colors.length; &lt;br /&gt;        &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; i = 0; i &amp;lt; length; i++) &lt;br /&gt;        { &lt;br /&gt;            XYSeriesRenderer r = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XYSeriesRenderer(); &lt;br /&gt;            r.setColor(colors[i]); &lt;br /&gt;            r.setPointStyle(styles[i]); &lt;br /&gt;            r.setFillPoints(fill); &lt;br /&gt;            renderer.addSeriesRenderer(r); &lt;br /&gt;        } &lt;br /&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; renderer; &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; setChartSettings(XYMultipleSeriesRenderer renderer, String title, &lt;br /&gt;                                String xTitle,String yTitle, &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; xMin, &lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; xMax, &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; yMin, &lt;span style="color: #0000ff"&gt;double&lt;/span&gt; yMax, &lt;br /&gt;                                &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; axesColor,&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; labelsColor) &lt;br /&gt;    { &lt;br /&gt;        renderer.setChartTitle(title); &lt;br /&gt;        renderer.setXTitle(xTitle); &lt;br /&gt;        renderer.setYTitle(yTitle); &lt;br /&gt;        renderer.setXAxisMin(xMin); &lt;br /&gt;        renderer.setXAxisMax(xMax); &lt;br /&gt;        renderer.setYAxisMin(yMin); &lt;br /&gt;        renderer.setYAxisMax(yMax); &lt;br /&gt;        renderer.setAxesColor(axesColor); &lt;br /&gt;        renderer.setLabelsColor(labelsColor); &lt;br /&gt;    } &lt;br /&gt;}&lt;/div&gt;&lt;p&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2528493.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/31/2528493.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/31/2527927.html</id><title type="text">[转]使用ANT打包Android应用</title><summary type="text">本文转自：http://blog.csdn.net/liuhe688/article/details/6679879大家好，今天来分享一下如何使用ANT打包Android应用。通常我们习惯用eclipse来开发Android程序，它会自动帮我们打包当前的应用程序。如果在Navigator视图下，我们可以看到以下几个文件：在上图中，com包放置的是我们的class文件，classes.dex是class文件经过转换后的可以在dalvik上跑的精简类文件，resources.ap_是经过打包的资源文件，ant.apk就是最终的打包文件。使用ANT来对应用打包，一般会经过以下几个步骤：1.用aapt</summary><published>2012-05-31T01:32:00Z</published><updated>2012-05-31T01:32:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/31/2527927.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/31/2527927.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://blog.csdn.net/liuhe688/article/details/6679879" target="_blank"&gt;http://blog.csdn.net/liuhe688/article/details/6679879&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div id="article_content" class="article_content"&gt;&lt;p&gt;大家好，今天来分享一下如何使用ANT打包Android应用。&lt;/p&gt;&lt;p&gt;通常我们习惯用eclipse来开发Android程序，它会自动帮我们打包当前的应用程序。如果在Navigator视图下，我们可以看到以下几个文件：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/12/0_1313145421Dibi.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;在上图中，com包放置的是我们的class文件，classes.dex是class文件经过转换后的可以在dalvik上跑的精简类文件，resources.ap_是经过打包的资源文件，ant.apk就是最终的打包文件。&lt;/p&gt;&lt;p&gt;使用ANT来对应用打包，一般会经过以下几个步骤：&lt;/p&gt;&lt;p&gt;1.用aapt命令生成R.java文件&lt;/p&gt;&lt;p&gt;2.用aidl命令生成相应java文件&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3.用javac命令编译java源文件生成class文件&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4.用dx.bat将class文件转换成classes.dex文件&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5.用aapt命令生成资源包文件resources.ap_&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6.用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk&lt;br /&gt;&lt;/p&gt;&lt;p&gt;7.用jarsinger命令对apk认证,生成signed.apk&lt;br /&gt;&lt;/p&gt;&lt;p&gt;为了便于理解和记忆，下面来用一张流程图来说明以上的几个过程：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_1313405397MZjr.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;以上就是整体的流程，下面我们就对其每个部分进行做出详细讲解，把每一个步骤都弄清楚了。&lt;/p&gt;&lt;p&gt;我们需要先熟悉一下每一个步骤所使用到的命令：&lt;/p&gt;&lt;p&gt;1.aapt（Android Asset Packaging Tool）命令，根据资源文件生成R.java文件&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_13134058081BHb.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参数说明：&lt;/p&gt;&lt;p&gt;-f &amp;nbsp;强制覆盖已存在的文件。&lt;br /&gt;-m &amp;nbsp;在-J指定的位置下自动生成相应的包的目录。&lt;br /&gt;-J &amp;nbsp;指定R.java文件生成的目录。&lt;br /&gt;-S &amp;nbsp;指定资源目录。&lt;br /&gt;-M &amp;nbsp;指定清单文件。&lt;br /&gt;-I &amp;nbsp;引入类库。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;注意，我们当前所在的位置是ant项目根目录，所以必要时需要输入很多关于命令的路径，以下示例也是一样。&lt;/p&gt;&lt;p&gt;2.aidl（Android Interface Definition Language）命令，根据.aidl定义文件生成java文件&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_13134061921Z5f.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;上面的示例所在位置为com/scott/ant下，根据包中的Person.aidl文件，在gen对应的目录中生成Person.java文件，示例中只是处理单一文件，下文中会讲述如何处理目录中的多个aidl文件。&lt;/p&gt;&lt;p&gt;3.javac（Java Compiler）命令，根据源文件生成对应的class文件&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_13134066001bbQ.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参数说明：&lt;/p&gt;&lt;p&gt;-d &amp;lt;目录&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;指定存放生成的类文件的位置&lt;br /&gt;-bootclasspath &amp;lt;路径&amp;gt; &amp;nbsp; &amp;nbsp; 覆盖引导类文件的位置&lt;/p&gt;&lt;p&gt;示例中并没有考虑到引用类路径下面的类库，复杂的情况会在稍后遇到的。&lt;/p&gt;&lt;p&gt;4.dx命令，将class文件转换成.dex文件&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_1313406943p02O.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;以上示例是将bin目录下的class文件转换成classes.dex文件，输出到bin目录，我们也许会用到第三方类库，等一会就会看到。&lt;/p&gt;&lt;p&gt;5.aapt将资源文件打包&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_1313407283eOe5.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参数说明：&lt;/p&gt;&lt;p&gt;-f 强制覆盖&lt;/p&gt;&lt;p&gt;-M 指定Manifest文件&lt;/p&gt;&lt;p&gt;-S 指定资源目录&lt;/p&gt;&lt;p&gt;-A 指定资产目录&lt;/p&gt;&lt;p&gt;-I 指定引入的类库&lt;/p&gt;&lt;p&gt;-F 指定要生成的包&lt;/p&gt;&lt;p&gt;6.apkbuilder命令，根据classes.dex文件和resources.ap_生成为签证的apk包&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_1313407805oL03.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;参数说明：&lt;/p&gt;&lt;p&gt;-rf 参照源文件的目录的结构&lt;/p&gt;&lt;p&gt;7.jarsigner命令，对上面生成的apk包进行签证&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_1313407979xnzc.gif" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;在签证的过程中，需要使用到证书文件，需要注意的是最后的release是证书的别名，关于如何创建证书，请看下图：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://hi.csdn.net/attachment/201108/15/0_1313409172BdDm.gif" /&gt;&lt;/p&gt;&lt;p&gt;当然也可以在eclipse里使用ADT提供的图形界面完成以上步骤，选中项目，点击右键，&amp;#8220;Android Tools=&amp;gt;Export Signed Application Package&amp;#8221;，然后再其中的Keystore selection环节选择&amp;#8220;Create new keystore&amp;#8221;，然后按照提示填写信息就可以了。&lt;/p&gt;&lt;p&gt;以上是我们使用到的命令，接下来我们就该来分析一下ANT所必须的build.xml：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;首先我们需要定义大量的变量属性，用来表示使用到的路径、目录等，如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;project&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"ant"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;default&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"release"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;ANT环境变量&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;environment&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"env"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;应用名称&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"appName"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${ant.project.name}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值)&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sdk-folder"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${env.ANDROID_SDK_HOME}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;SDK指定平台目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sdk-platform-folder"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-folder}/platforms/android-8"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;SDK中tools目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sdk-tools"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-folder}/tools"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;SDK指定平台中tools目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"sdk-platform-tools"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-platform-folder}/tools"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;使用到的命令(当前系统为windows,如果系统为linux,可将.bat文件替换成相对应的命令)&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"aapt"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-platform-tools}/aapt"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"aidl"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-platform-tools}/aidl"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"dx"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-platform-tools}/dx.bat"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"apkbuilder"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-tools}/apkbuilder.bat"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"jarsigner"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${env.JAVA_HOME}/bin/jarsigner"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;编译需要的jar;&amp;nbsp;如果项目使用到地图服务则需要maps.jar&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"android-jar"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-platform-folder}/android.jar"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"android-maps-jar"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-folder}/add-ons/addon_google_apis_google_inc_8/libs/maps.jar"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;编译aidl文件所需的预处理框架文件framework.aidl&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"framework-aidl"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${sdk-platform-folder}/framework.aidl"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;生成R文件的相对目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"outdir-gen"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"gen"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;编译后的文件放置目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"outdir-bin"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"bin"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;清单文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"manifest-xml"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"AndroidManifest.xml"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;源文件目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"resource-dir"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"res"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"asset-dir"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"assets"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;java源文件目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"srcdir"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"src"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"srcdir-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${srcdir}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;外部类库所在目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"external-lib"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"lib"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"external-lib-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${external-lib}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;生成class目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"outdir-classes"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"outdir-classes-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${outdir-classes}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;classes.dex相关变量&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"dex-file"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"classes.dex"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"dex-path"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}/${dex-file}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"dex-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${dex-path}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;经过aapt生成的资源包文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"resources-package"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}/resources.ap_"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"resources-package-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${resources-package}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;未认证apk包&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"out-unsigned-package"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}/${appName}-unsigned.apk"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"out-unsigned-package-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${out-unsigned-package}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;证书文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"keystore-file"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/release.keystore"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;已认证apk包&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"out-signed-package"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}/${appName}.apk"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;property&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"out-signed-package-ospath"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${basedir}/${out-signed-package}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;project&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;然后，我们分步骤来进行，首先是初始化： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;初始化工作&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"init"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Initializing&amp;nbsp;all&amp;nbsp;output&amp;nbsp;directories...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;delete&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;mkdir&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-bin}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;mkdir&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-classes}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;其次是生成R.java文件： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;根据工程中的资源文件生成R.java文件&amp;nbsp;&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"gen-R"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"init"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Generating&amp;nbsp;R.java&amp;nbsp;from&amp;nbsp;the&amp;nbsp;resources...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;executable&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${aapt}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;failonerror&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"package"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-f"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-m"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-J"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-gen}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-S"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${resource-dir}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-M"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${manifest-xml}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-I"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${android-jar}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;接着是aidl生成java源文件： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;编译aidl文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"aidl"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"gen-R"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Compiling&amp;nbsp;.aidl&amp;nbsp;into&amp;nbsp;java&amp;nbsp;files...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;apply&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;executable&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${aidl}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;failonerror&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;指定预处理文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-p${framework-aidl}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;aidl声明的目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-I${srcdir}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;目标文件目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-o${outdir-gen}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;指定哪些文件需要编译&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;fileset&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${srcdir}"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;include&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"**/*.aidl"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;fileset&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;apply&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;我们指定了一个framework.aidl，里面定义了很多android内置对象，然后我们指定了aidl所在目录和输出目录，组后指定编译后缀为aidl的文件。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;接下来是将源文件编译成class文件：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;将工程中的java源文件编译成class文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"compile"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"aidl"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Compiling&amp;nbsp;java&amp;nbsp;source&amp;nbsp;code...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;javac&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;encoding&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"utf-8"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"1.5"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;srcdir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"."&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;destdir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-classes}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;bootclasspath&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${android-jar}"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;classpath&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;fileset&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;dir&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${external-lib}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;includes&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"*.jar"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;filelist&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;file&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${android-maps-jar}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;filelist&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;classpath&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;javac&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;如果使用到了第三方类库，我们可以在classpath标签下配置。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;接着是将class文件转换成classes.dex：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;将.class文件转化成.dex文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"dex"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"compile"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Converting&amp;nbsp;compiled&amp;nbsp;files&amp;nbsp;and&amp;nbsp;external&amp;nbsp;libraries&amp;nbsp;into&amp;nbsp;a&amp;nbsp;.dex&amp;nbsp;file...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;executable&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${dx}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;failonerror&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"--dex"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;输出文件&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"--output=${dex-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;要生成.dex文件的源classes和libraries&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${outdir-classes-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${external-lib-ospath}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;就像上面的代码一样，如果使用到第三方类库，可以在最后一参数的形式追加进去。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;然后是将资源文件打包：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;将资源文件放进输出目录&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"package-res-and-assets"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Packaging&amp;nbsp;resources&amp;nbsp;and&amp;nbsp;assets...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;executable&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${aapt}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;failonerror&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"package"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-f"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-M"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${manifest-xml}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-S"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${resource-dir}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-A"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${asset-dir}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-I"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${android-jar}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-F"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${resources-package}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;接着是打包成未签证的apk包： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;打包成未签证的apk&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"package"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"dex,&amp;nbsp;package-res-and-assets"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Packaging&amp;nbsp;unsigned&amp;nbsp;apk&amp;nbsp;for&amp;nbsp;release...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;executable&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${apkbuilder}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;failonerror&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${out-unsigned-package-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-u"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-z"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${resources-package-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-f"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${dex-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-rf"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${srcdir-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;It&amp;nbsp;will&amp;nbsp;need&amp;nbsp;to&amp;nbsp;be&amp;nbsp;signed&amp;nbsp;with&amp;nbsp;jarsigner&amp;nbsp;before&amp;nbsp;being&amp;nbsp;published.&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;然后是对apk签证： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;对apk进行签证&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"jarsigner"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"package"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Packaging&amp;nbsp;signed&amp;nbsp;apk&amp;nbsp;for&amp;nbsp;release...&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;executable&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${jarsigner}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;failonerror&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-keystore"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${keystore-file}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-storepass"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"123456"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-keypass"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"123456"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-signedjar"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${out-signed-package-ospath}"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${out-unsigned-package-ospath}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;不要忘了证书的别名&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;arg&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"release"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;exec&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;最后发布： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_html"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[html]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;发布&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"release"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;depends&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"jarsigner"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comments"&gt;&amp;lt;!--&amp;nbsp;删除未签证apk&amp;nbsp;--&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;delete&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;file&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"${out-unsigned-package-ospath}"&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;APK&amp;nbsp;is&amp;nbsp;released.&amp;nbsp;path:${out-signed-package-ospath}&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;echo&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;target&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;这样就完成了build.xml的编辑，eclipse继承了ANT，所以我们可以在eclipse中直接运行，也可以在代码中调用。&lt;/p&gt;&lt;p&gt;首先我们需要下载ANT，然后配置相应的环境变量信息，最后我们这样调用：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;view plain&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;copy&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;print&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;a class="About" title="?" href="http://blog.csdn.net/liuhe688/article/details/6679879#"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;?&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j"&gt;&lt;li class="alt"&gt;&lt;span&gt;Process&amp;nbsp;p&amp;nbsp;=&amp;nbsp;Runtime.getRuntime().exec(&lt;/span&gt;&lt;span class="string"&gt;"ant.bat&amp;nbsp;-buildfile&amp;nbsp;d:/workspace/ant/build.xml"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;InputStream&amp;nbsp;is&amp;nbsp;=&amp;nbsp;p.getInputStream();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;BufferedReader&amp;nbsp;br&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;BufferedReader(&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;InputStreamReader(is));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;String&amp;nbsp;line&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="keyword"&gt;while&lt;/span&gt;&lt;span&gt;&amp;nbsp;((line&amp;nbsp;=&amp;nbsp;br.readLine())&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(line);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;System.out.println(&lt;/span&gt;&lt;span class="string"&gt;"SUCCESS."&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;就先讲到这里吧，谢谢大家。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2527927.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/31/2527927.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526597.html</id><title type="text">[转]项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】</title><summary type="text">本文转自：http://www.cnblogs.com/ttzhang/archive/2008/11/07/1328533.html在上一篇项目管理实践教程二、源代码控制【Source Control Using VisualSVN Server and TortoiseSVN】中我们已经讲解了如何使用TortoiseSVN和VisualSVN Server来做简单的版本控制，这一篇我们将会讲解使用CruiseControl.NET和MSBuild来搭建每日构建系统。 在第一篇项目管理实践教程一、工欲善其事，必先利其器【Basic Tools】 中我们已经安装了CruiseControl.N</summary><published>2012-05-30T09:16:00Z</published><updated>2012-05-30T09:16:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526597.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526597.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.cnblogs.com/ttzhang/archive/2008/11/07/1328533.html" target="_blank"&gt;http://www.cnblogs.com/ttzhang/archive/2008/11/07/1328533.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;在上一篇&lt;a style="color: blue" href="http://www.cnblogs.com/ttzhang/archive/2008/11/06/1325940.html"&gt;项目管理实践教程二、源代码控制【Source Control Using VisualSVN Server and TortoiseSVN】&lt;/a&gt;中我们已经讲解了如何使用TortoiseSVN和VisualSVN Server来做简单的版本控制，这一篇我们将会讲解使用CruiseControl.NET和MSBuild来搭建每日构建系统。 &lt;/p&gt;&lt;p&gt;在第一篇&lt;a style="color: blue" href="http://www.cnblogs.com/ttzhang/archive/2008/11/03/1325102.html"&gt;项目管理实践教程一、工欲善其事，必先利其器【Basic Tools】&lt;/a&gt; 中我们已经安装了CruiseControl.NET 1.4，因为我们还要用到MSBuild，所以如果你的系统没有安装Visual Studio，那么你需要首先安装Visual Studio 2005/2008，我们在这里使用的是Visual Studio 2008，准备好这些了吗？OK，我们正式开始今天的课程！&amp;nbsp; &lt;/p&gt;&lt;p&gt;首先，我们要配置CruiseControl.NET【下面简写为CCNET】，配置完成后，我们每次提交源代码到SVN服务器后，CCNET就可以自动从SVN服务器上签出源代码，并调用MSBuild自动进行编译。我们以昨天的教程中创建的StartKit项目为实例，先看看下面的配置文件:&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;img style="display: none" id="Code_Closed_Image_025852" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_025852').style.display='none'; document.getElementById('Code_Open_Image_025852').style.display='inline'; document.getElementById('Code_Open_Text_025852').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"&gt;&lt;img style="display: inline" id="Code_Open_Image_025852" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_025852').style.display='none'; getElementById('Code_Closed_Image_025852').style.display='inline'; getElementById('Code_Closed_Text_025852').style.display='inline';" alt="" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"&gt;&lt;span style="display: none" id="Code_Closed_Text_025852" class="cnblogs_code_Collapse"&gt;CCNET配置文件代码&lt;/span&gt;&lt;span style="display: inline" id="Code_Open_Text_025852"&gt;&lt;br /&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000"&gt;1&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;cruisecontrol&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;xmlns:cb&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="urn:ccnet.config.builder"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;项目名称&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;StartKit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;标示类型，有多种类型。下面为默认标示，作为每次编译时生成的日志文件的名称&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;labeller&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="defaultlabeller"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;前缀&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;prefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;StartKit-1-&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;prefix&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;编译失败时是否增加&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;incrementOnFailure&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;false&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;incrementOnFailure&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;格式&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;labelFormat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;00000&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;labelFormat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;labeller&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;13&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;项目的WebDashboard地址，CruiseControl.NET包括二部分，一是Server用来配置项目和监视文件修改，二是WebDashboard，是一个显示项目信息及编译信息的Website&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;webURL&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspx&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;webURL&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;15&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;触发器,包含多种，有兴趣可以查看官方文档&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;16&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;triggers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;17&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;时间间隔触发器，下面是60秒触发一次&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;intervalTrigger&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;seconds&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="60"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;19&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;triggers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;20&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;如果发现修改，延迟多久开始编译，下面是2秒&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;21&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;modificationDelaySeconds&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;2&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;modificationDelaySeconds&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;22&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;源代码控制系统，支持多种，有兴趣可以查看官方文档，下面采用svn&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;23&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sourcecontrol&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="svn"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;24&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;源代码在SVN服务器上的路径&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;25&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;trunkUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;http://zt.net.henu.edu.cn/svn/StartKit/StartKit/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;trunkUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;26&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;svn服务器所在路径，在这里就是VisualSVN&amp;nbsp;Server安装目录中的bin目录下的svn.exe&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;27&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;executable&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;C:/Program&amp;nbsp;Files/VisualSVN&amp;nbsp;Server/bin/svn.exe&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;executable&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;28&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;用来迁出源代码的用户名，svn服务器进行验证&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;29&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;username&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;starter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;username&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;30&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;用来迁出源代码的用户名对应的密码&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;31&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;password&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;123456&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;password&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;web获取源代码的地址，类似于开源网站上浏览代码的那部分功能，这里的类型是trac&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;33&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;webUrlBuilder&amp;nbsp;type="trac"&amp;gt;&lt;br /&gt;&amp;nbsp;34&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;!--trac中对应项目的地址&amp;#172;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;35&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tracProjectUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;http://svn.net.henu.edu.cn/pojects/StartKit/&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tracProjectUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;36&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;trac中对应项目的源代码库地址，相对于上面的路径&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;37&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tracRepositoryRoot&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;/StartKit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tracRepositoryRoot&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;38&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;webUrlBuilder&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;--&amp;gt;&lt;br /&gt;&amp;nbsp;39&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sourcecontrol&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;40&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;该节点用来配置具体执行那些任务&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;41&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tasks&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;42&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;msbuild任务配置，用来编译项目&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;43&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;msbuild&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;44&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;MSBuild.exe的路径&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;45&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;executable&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;executable&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;46&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;从SVN迁出的源代码的存放位置，可以不配置，下面的即为默认值&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;47&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;48&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;workingDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;D:\Program&amp;nbsp;Files\CruiseControl.NET\server\StartKit\WorkingDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;workingDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;49&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;对这个项目的监控过程的日志记录目录，可以不配置，下面的即为默认值&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;50&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;51&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;D:\Program&amp;nbsp;Files\CruiseControl.NET\server\StartKit\&amp;nbsp;Artifacts&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;52&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;要编译的项目名称&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;53&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;projectFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;StartKit.sln&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;projectFile&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;54&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;MSBuild编译时的参数，具体参数信息可以查看MSDN上的说明&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;55&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;buildArgs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;/p:configuration=debug&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;buildArgs&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;56&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;指定日志记录模块&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;57&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;58&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;ThoughtWorks.CruiseControl.MsBuild.XmlLogger,D:\Program&amp;nbsp;Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;59&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;编译目标&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;60&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;targets&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;61&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;msbuild&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;62&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;在这里还可以添加其他的程序，比如运行测试、部署项目等等&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;63&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tasks&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;64&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;项目编译状态信息的保存位置&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;65&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;66&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;state&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="state"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;directory&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="D:\Program&amp;nbsp;Files\CruiseControl.NET\server\CCState"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;67&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;发布和部署配置&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;68&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;publishers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;69&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;如果编译成功，那么下面的配置，会将源代码复制到指定目录HistoryVersion下，名称为版本标识(自动增长，labeller配置)的子目录下&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;70&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;buildpublisher&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;71&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;源代码路径&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;72&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;73&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sourceDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;D:\Program&amp;nbsp;Files\CruiseControl.NET\server\StartKit\WorkingDirectory&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sourceDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;74&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;编译成功后保存源代码到该目录下名称为版本标示labeller的目录中&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;75&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;76&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;publishDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;D:\Program&amp;nbsp;Files\CruiseControl.NET\server\StartKit\HistoryVersion&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;publishDir&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;77&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;buildpublisher&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;78&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;该节点用来配置合并多个文件，当时有外部插件时，要把他们分别产生的输出文件合并&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;79&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;merge&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;要合并的文件，合并后的信息可以显示在Web&amp;nbsp;Dashboard和邮件通知里&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;81&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;82&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;我这里的CruiseControl.NET&amp;nbsp;安装在D盘，你们使用时候，改成自己的安装路径即可&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;83&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;file&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;D:\Program&amp;nbsp;Files\CruiseControl.NET\server\StartKit\WorkingDirectory\results.xml&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;file&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;84&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;files&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;85&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;merge&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;86&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;源代码路径&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;87&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;xmllogger&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;88&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;显示历史修改记录列表,&amp;nbsp;在Web&amp;nbsp;Dashboard中可以查看&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;89&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;modificationHistory&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;所有编译信息的统计,&amp;nbsp;在Web&amp;nbsp;Dashboard中可以查看&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;91&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;statistics&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;92&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;邮件通知配置，每次编译后，都会邮件通知下面配置中添加的用户&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;93&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;mailhost是发送邮件的主机，mailport是邮件发送端口，mailhostUsername发送邮件的邮箱用户名，mailhostPassword发送邮件的邮箱密码，from希望显示在发件人中的邮箱地址，&amp;nbsp;includeDetails邮件内容是否包含详细的编译信息&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;94&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;email&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;mailhost&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="smtp.qq.com"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;mailport&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="25"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&amp;nbsp;95&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailhostUsername&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="******"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;mailhostPassword&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="******"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;from&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="******@qq.com"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;includeDetails&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="true"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;96&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;接收邮件通知的用户&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;97&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;users&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;98&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;name是SVN服务器上存在的用户名，group是SVN服务器上存在的组，address是该用户的邮箱地址&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;99&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="zt"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;group&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="StartKit"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;address&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="******1@qq.com"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;100&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="***"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;group&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="StartKit"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;address&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="******2@qq.com"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="***"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;group&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="StartKit"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;address&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="******3@qq.com"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;102&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;users&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;103&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;接收邮件通知的组&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;104&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groups&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;105&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;name必须是SVN服务器上存在的组，notification是什么时候发送通知，可选有Always/Success/Change/Fixed/Failed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;106&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;group&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="StartKit&amp;nbsp;"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;notification&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="always"&lt;/span&gt;&lt;span style="color: #ff0000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;107&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groups&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;108&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;email&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;109&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;publishers&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;110&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;111&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000"&gt;可以同时添加多个项目&amp;nbsp;&amp;nbsp;&lt;br /&gt;112&amp;nbsp;&amp;nbsp;&amp;lt;project&amp;nbsp;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;113&amp;nbsp;&amp;nbsp;&amp;lt;name&amp;gt;test&amp;lt;/name&amp;gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;114&amp;nbsp;&amp;nbsp;&amp;#8230;&amp;#8230;&amp;nbsp;&amp;nbsp;&lt;br /&gt;115&amp;nbsp;&amp;nbsp;&amp;lt;/project&amp;gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;116&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;117&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;cruisecontrol&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;好了，我们已经对CCNET的配置文件有了大致的了解，接下来，你打开CCNET的安装路径，找到子目录server下的ccnet.config文件，把上面的配置信息Copy到ccnet.config文件中，记得把配置文件中的一些路径修改为自己的实际路径啊，修改好后，保存。这时候，检查Windows服务CruiseControl.NET Server是否启动，如果没有则启动它，启动该服务后，打开浏览在地址栏输入上面配置文件中的webUrl地址：&lt;a style="color: #0000ff" tabindex="-1" href="http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspx"&gt;http://202.196.96.55:8080/server/local/project/StartKit/ViewProjectReport.aspx&lt;/a&gt; 也可以直接输入&lt;a style="color: #0000ff" tabindex="-1" href="http://202.196.96.55:8080/server/"&gt;http://202.196.96.55:8080/server/&lt;/a&gt; ，这里是演示地址，要根据自己的实际情况修改为正确的地址，OK，看到类似下图的效果，好了，搞定！如果你遇到了什么麻烦，请在下面留言，我一定会及时回复！&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110608_1807_D1.png" width="715" height="489" /&gt;点击StartKit，转入下图所示的页面：&lt;br /&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110608_1807_D2.png" width="715" height="629" /&gt;OK，到这里，我们提交更新到SVN服务器后，CCNET就会根据我们配置自动编译项目，而且我们也可以通过Web Dashboard来查看具体的编译信息了，提示如果配置了邮件发送，那么我们还可以通过邮件收到详细的编译信息，怎么样？够方便吧！&lt;br /&gt;&lt;br /&gt;其实，CCNET的功能是相当强大的，上面只是最常用的配置，其他还有很多非常好的功能。你想知道吗？那你可以在这里查看&lt;a style="color: #0000ff" tabindex="-1" href="http://confluence.public.thoughtworks.org/display/CCNET/Documentation"&gt;CCNET官方文档&lt;/a&gt; ，实际上，你安装CCNET后，文档也已经安装到你的电脑了，在CCNET的安装目录下的webdashboard的子目录doc中就是。&lt;br /&gt;&lt;br /&gt;好了，我们今天的教程就到这里，本来我应该把如何使用CruiseControl.NET Tray来监视每次更新后的编译状态，但是今天真的太晚了，明天还要做项目，所以我明天补上，请大家见谅！&lt;br /&gt;&lt;span style="color: #ff0000"&gt;补充部分：&lt;/span&gt;&lt;br /&gt;下面我简单讲一下，如何使用CruiseControl.NET Tray【以下简称CCTray】来监视每次提交后的编译状态。&lt;br /&gt;安装好打开CCTray后，运行CCTray程序，点击左上角的菜单File下的Settings&amp;#8230;，如下图：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D1.png" width="149" height="82" /&gt;&lt;br /&gt;点击Settings&amp;#8230;会弹出下面的窗体：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D2.png" width="697" height="401" /&gt;&lt;br /&gt;切换到Build Projects选项卡，如下图：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D3.png" width="697" height="401" /&gt;&lt;br /&gt;点击Add&amp;#8230;按钮，添加我们的CCNET服务器，如下图：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D4.png" width="512" height="513" /&gt;&lt;br /&gt;输入我们的CCNET服务器后，CCNET服务器上的项目就会在右侧显示出来，如下图：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D5.png" width="609" height="386" /&gt;&lt;br /&gt;选中右侧的项目后，点击OK按钮，返回CCTray打开时的界面，我们的二个项目已经添加进来了，如下图：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D6.png" width="576" height="354" /&gt;&lt;br /&gt;我们在桌面的右下角的任务栏，可以看到如下图所示的图标：&lt;br /&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/110708_0206_D7.png" width="185" height="31" /&gt;&lt;br /&gt;绿色的那个标示就是CCTray的标示，绿色表示所有的项目都通过了编译，紫红色表示至少有一个项目没有通过编译，橘黄色表示有项目正在编译，橘红色表示有项目被强制编译，显示为灰色则说明和CCNET服务器失去了链接。&lt;br /&gt;&lt;br /&gt;OK，大家可以使用CCTray实时监视提交更新后项目的编译状态了。&lt;br /&gt;&lt;br /&gt;如果大家有什么问题，欢迎和我交流！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;div id="MySignature"&gt;&lt;br /&gt;&lt;ins style="border-bottom: medium none; position: relative; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 728px; padding-right: 0px; display: inline-table; height: 15px; visibility: visible; border-top: medium none; border-right: medium none; padding-top: 0px"&gt;&lt;ins style="border-bottom: medium none; position: relative; border-left: medium none; padding-bottom: 0px; margin: 0px; padding-left: 0px; width: 728px; padding-right: 0px; display: block; height: 15px; visibility: visible; border-top: medium none; border-right: medium none; padding-top: 0px" id="aswift_1_anchor"&gt;&lt;iframe style="position: absolute; top: 0px; left: 0px" id="aswift_1" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){i+='.call';setTimeout(h,0)}else if(h.match){i+='.nav';w.location.replace(h)}s.log&amp;amp;&amp;amp;s.log.push(i)}" height="15" marginheight="0" frameborder="0" width="728" allowTransparency name="aswift_1" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;br /&gt;&lt;div&gt;&lt;fieldset&gt;&lt;legend style="color: red"&gt;&lt;strong&gt;其他文章推荐&lt;/strong&gt;&lt;/legend&gt;&lt;a style="color: blue" href="http://www.cnblogs.com/ttzhang/archive/2008/11/02/1324601.html"&gt;项目管理实践系列教程&lt;/a&gt;&lt;br /&gt;&lt;a style="color: blue" href="http://www.cnblogs.com/ttzhang/archive/2008/11/01/1324078.html"&gt;Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步&lt;/a&gt;&lt;/fieldset&gt;&lt;/div&gt;&lt;!--&lt;hr style="color: #999999" /&gt;--&gt;&lt;br /&gt;&lt;div id="MySignature"&gt;&lt;p id="LyjSignature"&gt;&lt;br /&gt;作者：Forrest Zhang（&lt;a href="http://www.anycoders.com/" target="_blank"&gt;&lt;font color="#555555"&gt;http://www.anycoders.com&lt;/font&gt;&lt;/a&gt;）&lt;br /&gt;出处：&lt;a href="http://ttzhang.cnblogs.com/" target="_blank"&gt;&lt;font color="#555555"&gt;http://ttzhang.cnblogs.com/&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;本博原创文章版权归博客园和本人共有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出作者名称和原文连接，否则保留追究法律责任的权利。 &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2526597.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526597.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526288.html</id><title type="text">[转]在.NET环境中实现每日构建(Daily Build)--NAnt篇</title><summary type="text">本文转自：http://dragon.cnblogs.com/archive/2005/07/29/203189.html 前言 关于每日构建这个话题，也已经有很多很好的文章讨论了。本文的写作过程中也参考了这些文章。本文之所以继续这个题目，是因为在查阅了网上的资源后，发现没有一个比较通用的过程。所以本文就主要讨论了利用NAnt构建一个通用日编译的方案。利用这个方案，日编译的维护者可以不需要对每个要编译的方案都要做很多维护。只要定义一个属性文件就可以了。 关键词： Daily Build, NAnt1. 简介 1.1. 每日构建的优点： 每日构建（Daily Build）也可称为持续集成（Con</summary><published>2012-05-30T06:37:00Z</published><updated>2012-05-30T06:37:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526288.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526288.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://dragon.cnblogs.com/archive/2005/07/29/203189.html" target="_blank"&gt;http://dragon.cnblogs.com/archive/2005/07/29/203189.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; color: black"&gt;&lt;span&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span&gt;前言 &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;关于每日构建这个话题，也已经有很多很好的文章讨论了&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&lt;span&gt;。本文的写作过程中也参考了这些文章。本文之所以继续这个题目，是因为在查阅了网上的资源后，发现没有一个比较通用的过程。所以本文就主要讨论了利用NAnt构建一个通用日编译的方案。利用这个方案，日编译的维护者可以不需要对每个要编译的方案都要做很多维护。只要定义一个属性文件就可以了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span&gt;关键词： Daily Build, NAnt&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black"&gt;简介&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;1.1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;每日构建的优点：&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;每日构建（&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Daily Build）也可称为持续集成（Continuous Integration），强调完全自动化的、可重复的创建过程，其中包括每天运行多次的自动化测试。每日构建的作用日益显得重要。它让开发者可以每天进行系统集成，从而减少了开发过程中的集成问题。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;持续集成可以减少集成阶段&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;"捉虫"消耗的时间，从而最终提高生产力。它使得绝大多数bug在引入的同一天就可以被发现。而且，由于一天之中发生变动的部分并不多，所以可以很快找到出错的位置。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;1.2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;每日构建完成的任务&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;实现自动化每日构建需要做以下几部分的工作： &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;使创建过程完全自动化，让任何人都可以只输入一条命令就完成系统的创建。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;使测试完全自动化，让任何人都可以只输入一条命令就运行一套完整的系统测试。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;确保所有人都可以得到最新、最好的可执行文件。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black"&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black"&gt;每日构建所使用的工具&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;在&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;.NET环境下建立每日构建可以使用一系列开源工具：&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Nant: 完成代码的自动编译，自动运行测试工具。&lt;/span&gt;&lt;span style="font-family: Arial"&gt;&lt;a href="http://nant.sourceforge.net/builds/"&gt;&lt;span style="color: windowtext; text-decoration: none; text-underline: none"&gt;http://nant.sourceforge.net/builds/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NantContrib：自动从源码库中获取源代码。&lt;/span&gt;&lt;span style="font-family: Arial"&gt;&lt;a href="http://nantcontrib.sourceforge.net/nightly/builds/"&gt;&lt;span style="color: windowtext; text-decoration: none; text-underline: none"&gt;http://nantcontrib.sourceforge.net/nightly/builds/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NUnit2Report:将NUnit测试工具产生的XML报告转换为HTML报告形式。http://NUnit2Report.sourceforge.net&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS：Visual Source Safe，微软源码管理工具&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Draco.NET: 用于自动检测VSS中源代码变动情况，调用Nant完成自动编译&lt;/span&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://sourceforge.net/projects/draconet/&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;下载所需的工具后，按照如下步骤进行安装：&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;在服务器上安装&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS源码管理工具&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;安装下载的&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Draco Server 和 Draco Web,修改安装后的Draco Web目录下的web.config文件，设置正确的Draco Server安装路径&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;将&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NAnt、NAntContrib、NUnit2Report压缩包解压，将三个Bin目录中的内容复制到一个公用目录，比如D:\DailyBuildTools，然后将该路径加入系统的Path路径列表中，具体为&amp;#8220;控制面板-〉系统属性-〉环境变量-〉Path&amp;#8221;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black"&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black"&gt;NAnt自动脚本&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NAnt脚本实现了每日构建的主体功能，它具体分为下面几部分&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;定义每日构建所需的一些环境变量，比如从&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS上下载的源码的保存目录，发布目录等&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;清除旧的代码并从&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS源码库中下载最新源代码&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;编译源代码并运行测试代码集&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;将编译后的目标代码拷贝到发布目录进行发布&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;为了尽可能少的改动&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NAnt的脚本文件，简化日常维护的工作量，我们把一些对所有项目都基本相同的过程抽取出来，如环境变量定义，清除旧代码获取新代码，编译源代码，对目标代码进行发布的过程都可以写成通用的脚本，而一个具体项目的每日构建脚本则调用通用过程完成&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;本文采取的目录体系如下所示：&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;D：\DailyBuild\&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;project1&amp;gt;\Source:存放&amp;lt;project1&amp;gt;源代码的目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;project1&amp;gt;\Build:存放&amp;lt;project1&amp;gt;编译后的目标代码的目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;project1&amp;gt;\Publish:存放&amp;lt;project1&amp;gt;的WEB发布文件的目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;project1&amp;gt;\log:存放&amp;lt;project1&amp;gt;的日志文件&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;3.1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;Nant的基础知识&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Nant脚本代码文件的基本结构&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;?xml version="1.0" encoding="gb2312"?&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;project name="Projects" default="prebuild"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="prebuild" depends="namecheck,clean " description="&amp;#8230;"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8230;&amp;#8230;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;target name="namecheck" &amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8230;&amp;#8230;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/target&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;encoding="gb2312"使得脚本文件可以支持中文&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;project&amp;gt;标签定义了项目属性，一个脚本文件只能有一个项目定义&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;default="prebuild"说明该项目缺省从prebuild任务开始执行&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;target&amp;gt;标签定义了一项任务，任务是Nant脚本具体执行动作的最小单元&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;depends="namecheck,clean "说明该任务执行前需要namecheck和clean任务先执行&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;description描述了该任务的一些说明性信息&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;定义变量&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="&amp;lt;变量名&amp;gt;" value="$&amp;lt;变量值&amp;gt;"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;如上所示，定义变量使用&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property&amp;gt;标签，name属性定义了变量的名称,value属性定义变量的值，其中name属性可以使用字母、数字、点号、下划线等符号，而value属性可以使用字符串或是已经定义的变量，Nant内建的函数等，&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;要使用已经定义的变量，可以用&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;${&amp;lt;变量名&amp;gt;}，要使用内建函数，可以使用${&amp;lt;函数名称&amp;gt;}&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;如&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;: &amp;lt;property name="solution.basedir" value="${core.basedir}\${solution.name}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;使用了已定义变量&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;core.basedir和solution.name来定义变量solution.basedir;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="curdir" value="${directory::get-current-directory()}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;使用了&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NAnt内建函数directory::get-current-directory()来定义curdir变量&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;a name="Logger"&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;3.2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;定义环境变量&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;定义环境变量的脚本代码写在&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Common。Config文件里&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;主要有以下几类信息的定义：&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;每日构建所在的根目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="curdir" value="${directory::get-current-directory()}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="core.basedir" value="${curdir}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;${directory::get-current-directory()}内建函数获取当前文件所在路径信息&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;被编译的解决方案的目录结构，和前面提到的目录体系一致&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="solution.basedir" value="${core.basedir}\${solution.name}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="solution.source" value="${solution.basedir}\source"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="solution.build" value="${solution.basedir}\build"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="solution.log" value="${solution.basedir}\log"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：以上代码是定义了要编译的解决方案的目录结构信息，其中&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;${solution.name}是由外部传入的解决方案的名称，后面的代码将根据该名称在日编译的根目录下生成和solution.name指定的名称同名的目录，并在该目录下生成source,buld,log等子目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS源代码管理系统的基本信息&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!--vss数据库登录信息--&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="vss.username" value="autobuild"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="vss.password" value="autobuild"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!--vss数据库所在的位置--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="vss.dbpath" value="\\10.136.238.231\vss\srcsafe.ini"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!--vss中工程的根目录--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="vss.basepath" value="$/"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：定义了和&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS源码管理系统相关的一些信息，其中VSS数据库所在位置可以是网络路径，也可以是本地路径&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;编译时的一些参数&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!--编译版本号--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="build.number" value="1.0"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!--决定编译是Debug版本还是Release版本--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;property name="build.configuration" value="Release"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;3.3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;建立目录结构，获取源代码&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;脚本代码写在&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;CheckSource.build.xml文件里&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;包含在&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Common.config文件里定义的公共变量&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;include buildfile="common.config"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;检查是否存在&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;solution.name变量&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;target name="namecheck" description="检查solution.name变量是否设置"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--检查解决方案名称是否已经定义--&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ifnot test="${property::exists('solution.name')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fail message="未定义解决方案名称solution.name"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ifnot&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--去掉可能的空格字符--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="solution.name" value="${string::trim(solution.name)}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--检查solution.name变量是否为空字符--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="${string::get-length(solution.name)==0}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fail message="未定义解决方案的名称solution.name"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;${property::exists('&amp;lt;变量名&amp;gt;')}是NAnt内建函数，用于测试某变量是否存在&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;${string::get-length(&amp;lt;字符串变量&amp;gt;)==0}测试字符串的长度是否为0&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;ifnot test=&amp;lt;逻辑表达式&amp;gt; &amp;#8230; &amp;lt;/ifnot&amp;gt;:如果test表达式值为假，执行&amp;lt;ifnot&amp;gt;标签内的代码&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;if test=&amp;lt;逻辑表达式&amp;gt; &amp;#8230; &amp;lt;/if&amp;gt;:如果test表达式值为假，执行&amp;lt;if&amp;gt;标签内的代码&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;建立解决方案的目录结构&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;target name="clean" depends="namecheck" description="移除旧目录,建立新目录"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--删除旧的解决方案代码所在目录--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;delete dir="${solution.basedir}" failonerror="false"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--重新建立目录--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mkdir dir="${solution.basedir}\" failonerror="false"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mkdir dir="${solution.source}" failonerror="false"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mkdir dir="${solution.build}" failonerror="false"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mkdir dir="${solution.log}" failonerror="false"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;:delete和mkdir标签内的failonerror属性表示即使操作文件夹的过程中出现了错误，也忽略错误向下执行&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;获取源代码：&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;从&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;VSS上获取解决方案&amp;lt;solution.name&amp;gt;的源代码&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;target name="getsourcecode"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--检查从VSS上下载解决方案的路径是否设定--&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 如果不定义vss.projectpath,则缺省为solution.name&amp;nbsp;--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ifnot test="${property::exists('vss.projectpath')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="vss.projectpath" value="${solution.name}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ifnot&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;vssget&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user="${vss.username}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; password="${vss.password}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localpath="${solution.source}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recursive="true"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; replace="true"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbpath="${vss.dbpath}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path="${vss.basepath}${vss.projectpath}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/target&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;vssget&amp;gt;标签是NAntContrib的语法，用来从VSS源码管理器上下载源代码，user和password属性表示登录VSS服务器的信息；Localpath属性是指下载的源代码存放的路径；recursive="true"表示递归获取代码；replace="true"表示如果本地有重复文件，则进行覆盖；dbpath定义VSS的srcsafe.ini文件的路径信息，包括srcsafe.ini文件名；path定义了要获取的源代码在VSS数据库中的路径，一般都是以$/为根目录。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;3.4.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;编译源代码&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;编译命令&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;编译解决方案的命令为&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;solution&amp;nbsp;solutionfile="&amp;#8230;" configuration="&amp;#8230;" outputdir="&amp;#8230;"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webmap&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;map url="&amp;#8230; " path="&amp;#8230;"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;map url="&amp;#8230; " path="&amp;#8230;"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webmap&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/solution&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;其中&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;solutionfile属性表明了要编译的解决方案文件的路径信息，即以"sln"为扩展名的文件，&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;configuration属性表明要编译的是发行版还是调试版，取值为"Release"或"Debug"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;outputdir表明了编译后的动态链接库或可执行文件存放的目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;solution中的嵌套标签&amp;lt;webmap&amp;gt;用于当解决方案含有WEB项目的情况，有几个WEB项目，就有几项&amp;lt;map&amp;gt;标签，map标签中的url属性为WEB项目的*.csproj文件的WEB路径，path则为该*.csproj文件所在磁盘上的物理路径，例如，解决方案中有WEB项目exam，则map标签为 &amp;lt;map url="http://localhost/exam/exam.csproj" path="c:\exam\exam.csproj"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;根据解决方案名称获取解决方案文件的路径信息&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;target name="build" description="编译解决方案"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查找解决方案文件名 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;foreach item="File" property="filename"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;in&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;items&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name="**\${solution.name}.sln"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/items&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/in&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;do&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--根据文件名设置解决方案的名称--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="solution.file" value="${filename}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/do&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/foreach&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;foreach&amp;gt;标签是NAnt中处理循环的命令,item="File"说明foreach进行循环处理的对象是文件，&amp;lt;include&amp;gt;中的name变量表示要查找的文件信息，"**\"表示查找路径包括子目录。Foreach的属性property="&amp;lt;变量名&amp;gt;"表示查找到的文件路径信息保存在该变量中，可以在&amp;lt;do&amp;gt;标签中引用.foreach每查找到一项符合条件的Item，都会执行&amp;lt;do&amp;gt;标签中的代码，以上代码执行的结果就是查找到指定名称的解决方案文件，供后面编译代码使用&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;获取解决方案中&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB项目的路径信息&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;如果解决方案中含有&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB项目，则其编译命令和不含WEB项目的解决方案编译有所区别，所以要区别对待。如果解决方案含有多个WEB项目，则可以让用户将多个WEB项目的名称放在一个变量中，如solution.webprojects，以逗号或分号或空格做分隔符。然后将项目名称分别提取出来，根据Web项目的个数决定solution命令的形式，代码如下&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!--将solution.webprojects中用",",";"或" "分隔的Web工程名提取出来，&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;分别设为&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;webproject1,webproject2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;if test="${property::exists('solution.webprojects')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;foreach item="String" in="${solution.webprojects}" delim=";, " property="project"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="${property::exists('webproject1')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;property name="webproject2" value="${project}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ifnot test="${property::exists('webproject1')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="webproject1" value="${project}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ifnot&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;/foreach&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/if&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;以上代码中&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;foreach标签的属性item="String" in="${solution.webprojects}" delim=";, " property="project"表明循环对象是字符串，对in所代表的字符串&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;如果设定&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;solution.webprojects="webprj1;webprj2&amp;#8221;，则以上代码执行的结果是定义了两个变量webproject1 ="webproj1"和webproject2 ="webproj2"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;查找&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB工程名&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;根据前面从&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;solution.webprojects中提取出来的webproj1和webproj2变量，查找该WEB工程的文件名&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;!-- &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 查找WEB工程文件名 --&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="${property::exists('webproject1')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="test ${webproject1}" /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;foreach item="File" property="filename"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;in&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;items&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;include name="**\${webproject1}.csproj"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/items&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/in&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;do&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--根据Web项目的名称获取Web项目文件路径,可以处理两个Web项目的情况--&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;echo message="WebProject file=${filename}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;property name="webproject1.file" value="${filename}"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/do&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/foreach&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/if&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;同理可以处理存在第二个&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB工程项目的情况，设置webproject2.file变量&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;编译解决方案&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;最后是编译解决方案，分别根据无&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB项目，有2个WEB项目，有一个WEB项目的三种情况处理&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;下面仅列出有两个&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB项目的情况&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 存在2个Web工程 --&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;if test="${property::exists('webproject2')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;solution &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; solutionfile="${solution.file}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; configuration="${build.configuration}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outputdir="${solution.build}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webmap&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;map &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url="http://localhost/${webproject1}/${webproject1}.csproj"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path="${webproject1.file}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;map&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; url="http://localhost/${webproject2}/${webproject2}.csproj"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path="${webproject2.file}"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webmap&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/solution&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/if&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;3.5.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;运行测试代码&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Wingdings; font-size: 9pt"&gt;l&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;测试命令&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;NAnt中关于测试的命令是&amp;lt;NUnit2&amp;gt;标签&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;nunit2&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;formatter type="Xml" usefile="true" &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;extension=".xml" outputdir="&amp;#8230;" &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;test assemblyname="&amp;#8230;" haltonfailure="false" /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/nunit2&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;formatter&amp;gt;标签中，type="Xml"表明了根据测试结果生成XML结构化信息，usefile="true"表明使用文件保存测试结果，extension=".xml"表明生成的文件扩展名为xml，outputdir指出了文件将被保存到哪个目录&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;Test标签中的assemblyname表明了被测试的dll程序集的路径信息，haltonfailure="false"表明即使测试没有通过仍然继续执行脚本文件&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;这样在测试命令完成后，会在&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;outputdir指出的目录下生成一个XML形式的报告文件，为了增加测试结果的可读性，可以使用另一个工具NUnit2Report，将测试结果转换为直观的HTML文件。具体命令如下&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;nunit2report out="&amp;lt;文件名&amp;gt;" todir="&amp;lt;输出目录" &amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;includes name="&amp;lt;文件匹配符&amp;gt;" /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fileset&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/nunit2report&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明：&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;includes标签用来搜索符合条件的XML文件，转换出来的HTML文件保存为out指出的文件名，todir指出了HTML文件将保存的目录信息&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;if test="${property::exists('solution.testprojects')}"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;foreach item="String" in="${solution.testprojects}" delim=";, " property="project"&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="testfile" value="${solution.build}\${project}.dll"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;nunit2&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;formatter type="Xml" usefile="true"&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;extension=".xml" outputdir="${solution.build}" /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;test assemblyname="${testfile}" haltonfailure="false" /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/nunit2&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;nunit2report out="${project}.html" todir="${solution.log}" &amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;fileset&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;includes name="${solution.build}\*.xml" /&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/fileset&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/nunit2report&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/foreach&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;/if&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; color: black; font-size: 9pt"&gt;3.6.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;进行&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB发布&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB发布主要针对有WEB工程项目的解决方案，其实现原理为利用NAnt的拷贝命令，将WEB工程下除了源代码，资源代码，VSS信息文件外的其他文件和编译后的程序集拷贝到发布目录，最后设置WEB虚拟路径以供WEB访问的过程。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;设置&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;WEB虚拟路径的命令为&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;lt;mkiisdir dirpath="&amp;lt;物理路径&amp;gt;" vdirname="&amp;lt;虚拟路径&amp;gt;"/&amp;gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;说明&lt;/span&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;:设WEB项目发布在C:\Intepub\wwwroot\Exam，访问该WEB项目用地址http://127.0.0.1/Example/default.aspx，则&amp;lt;物理路径&amp;gt;为"C:\Intepub\wwwroot\Exam"，虚拟路径为"Example"（此处略去详细代码）。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 华文中宋; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://files.cnblogs.com/dragon/DailyBuild.rar"&gt;下载示例代码&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2526288.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526288.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526272.html</id><title type="text">[转]在.NET环境中实现每日构建(Daily Build)--ccnet,MSBuild篇</title><summary type="text">本文转自：http://www.cnblogs.com/hjf1223/archive/2006/04/13/374655.html每日构建，对我们团队来说一个全新的概念。随着项目开发的进展，在开发过程需要及时反馈一些BUG和功能要求的处理情况。而在这种情况下每天或隔一段时间Build一个版本，工作量还是比较大的，所以就特别有必要引入每日构建。关于每日构建，在园里有已经有很多的文章了，特别是摩诘的《在.NET环境中实现每日构建(Daily Build)--NAnt篇》更是从概念上和实践上手把手地介绍如果在.NET环境下实现每日构建。但很遗憾，在我实现每日构建之前没有看到这篇文章，错失了一次快速</summary><published>2012-05-30T06:33:00Z</published><updated>2012-05-30T06:33:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526272.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526272.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.cnblogs.com/hjf1223/archive/2006/04/13/374655.html" target="_blank"&gt;http://www.cnblogs.com/hjf1223/archive/2006/04/13/374655.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;每日构建，对我们团队来说一个全新的概念。随着项目开发的进展，在开发过程需要及时反馈一些&lt;/span&gt;BUG&lt;span style="font-family: 宋体"&gt;和功能要求的处理情况。而在这种情况下每天或隔一段时间&lt;/span&gt;Build&lt;span style="font-family: 宋体"&gt;一个版本，工作量还是比较大的，所以就特别有必要引入每日构建。关于每日构建，在园里有已经有很多的文章了，特别是&lt;/span&gt;&lt;a href="http://dragon.cnblogs.com/"&gt;&lt;span style="font-family: 宋体"&gt;&lt;span&gt;摩诘&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;的《&lt;/span&gt;&lt;a href="http://dragon.cnblogs.com/archive/2005/07/29/203189.html"&gt;&lt;span style="font-family: 宋体"&gt;&lt;span&gt;在&lt;/span&gt;.NET&lt;span style="font-family: 宋体"&gt;环&lt;span&gt;境中实现每日构建&lt;/span&gt;&lt;/span&gt;(Daily Build)--NAnt&lt;span style="font-family: 宋体"&gt;篇&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;》更是从概念上和实践上手把手地介绍如果在&lt;/span&gt;.NET&lt;span style="font-family: 宋体"&gt;环境下实现每日构建。但很遗憾，在我实现每日构建之前没有看到这篇文章，错失了一次快速入门的机会，不过感到庆幸的是，经过一天的研究和学习，把自己在学习配置过程中遇到的一些问题总结一下，算是对每日构建实现方法的一个补充吧。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;我是在&lt;/span&gt;Windows 2003&lt;span style="font-family: 宋体"&gt;中做每日构建的，使用&lt;/span&gt;CruiseControl.Net&lt;span style="font-family: 宋体"&gt;自动从&lt;/span&gt;VSS&lt;span style="font-family: 宋体"&gt;服务器中检测并下载最新的源代码，然后用&lt;/span&gt;MsBuild&lt;span style="font-family: 宋体"&gt;对解决方案自动编译。利用&lt;/span&gt;CCTray&lt;span style="font-family: 宋体"&gt;可以对每日构建的情况进行监控，了解&lt;/span&gt;CruiseControl.Net&lt;span style="font-family: 宋体"&gt;的工作情况。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;下载安装完&lt;/span&gt;ccnet&lt;span style="font-family: 宋体"&gt;后，最重要的工作就是配置&lt;/span&gt;ccnet.config&lt;span style="font-family: 宋体"&gt;了。在安装目录下的&lt;/span&gt;server&lt;span style="font-family: 宋体"&gt;子目录里可以找到这个文件。虽然有帮助文件的支持，并且在&lt;/span&gt;Examples&lt;span style="font-family: 宋体"&gt;目录下有一个示例的配置文件，但是要想正确地配置这个文件也不是很容易的。在&lt;/span&gt;Ccnet.config&lt;span style="font-family: 宋体"&gt;里可以创建多个要监控项目的配置信息配置信息。包括：每个版本的标识方式，使用的源码库类型和登录信息，项目状态管理，每次构建要执行的任务，执行周期。以下是我的一个配置文件：&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;cruisecontrol&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;project&lt;/span&gt; &lt;span style="font-family: 新宋体; color: red; font-size: 9pt"&gt;name&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;=&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;"&lt;span style="color: blue"&gt;ccnetProject&lt;/span&gt;" &lt;span style="color: red"&gt;webURL&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;Http://192.168.1.1/ccnet&lt;/span&gt;" &lt;span style="color: red"&gt;publishExceptions&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;true&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;工作目录，下载的源码将会被保存在这个目录下，如没有设置则会自被保存在安装目录下server子目录以project name为名称的目录下&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;workingDirectory&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;workingDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;对这个项目的监控过程的日志记录目录&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;artifactDirectory&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;artifactDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;使用什么样的方式标识每一个自动生成的版本，可以有多种不同的方式。Labeller Blocks &lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;labeller&lt;/span&gt; &lt;span style="font-family: 新宋体; color: red; font-size: 9pt"&gt;type&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;=&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;"&lt;span style="color: blue"&gt;dateLabeller&lt;/span&gt;"&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;使用的源码控制器类型，我算了一下，它支持18种的源码控制器，强吧？这里使用的是VSS&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;sourcecontrol&lt;/span&gt; &lt;span style="font-family: 新宋体; color: red; font-size: 9pt"&gt;type&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;=&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;"&lt;span style="color: blue"&gt;vss&lt;/span&gt;" &lt;span style="color: red"&gt;autoGetSource&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;true&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;源码库中的项目名称&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;project&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;$/&lt;span style="color: blue"&gt; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;project&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;vss&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;用户名&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;username&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;ccnet&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;username&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;vss&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;密码&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;password&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;dailybuild&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;password&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;vss&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;服务器所在的路径&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;ssdir&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;\\192.168.*.*\Vss Server&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;ssdir&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;工作目录，可以使用相对目录，以上面的workingDirectory为准&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;workingDirectory&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;workingDirectory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;sourcecontrol&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;执行周期&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;triggers&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;定时任务，可以设置在哪天的那个时间执行构建计划&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;scheduleTrigger&lt;/span&gt; &lt;span style="font-family: 新宋体; color: red; font-size: 9pt"&gt;time&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;=&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;"&lt;span style="color: blue"&gt;14:00&lt;/span&gt;" &lt;span style="color: red"&gt;buildCondition&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;ForceBuild&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;以下配置节有指定，则会在指定的时间日期内执行，没有则每天执行&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;lt;weekDays&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;weekDay&amp;gt;Monday&amp;lt;/weekDay&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/weekDays&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;scheduleTrigger&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;每隔多少时间执行一次&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;lt;intervalTrigger seconds="30" buildCondition="ForceBuild"/&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;triggers&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;每次下载完代码后要执行的任务,可以有&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Build Publisher &lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Email Publisher&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Executable Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * File Merge Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ForceBuildPublisher&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Modification Writer Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * MsBuild Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * NAnt Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Null Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * NUnit Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Visual Studio Task&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Xml Log Publisher&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;tasks&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;msbuild &lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;自动编译任务&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;msbuild&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;msbuild&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;的路径，一般在系统目录下&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;executable&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;executable&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;workingDirectory&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;workingDirectory&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;解决方案文件，相对project 的workingDirectory，MSBuild会找到这个文件，并对它进行编译&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;projectFile&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;code\*.sln&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;projectFile&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;编译参数&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;buildArgs&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;buildArgs&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;编译的目录类型&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;targets&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;targets&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;过期时间&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;timeout&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;60&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;timeout&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;记录编译的详细日志，需要单独下载这个程序集，放在工作目录(workingDirectory)下，下载路径 http://ccnetlive.thoughtworks.com/MSBuildXmlLogger%2DBuilds/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;logger&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;logger&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;msbuild&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;tasks&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;发布和部署配置&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;publishers&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;span style="font-family: 新宋体; color: green; font-size: 9pt"&gt;下面的配置，会自将我源文件夹下的文件copy到指定的目录的版本标识(上面配置的labeller)的子目录下 如：e:\ccnet\publish\Shop\1\ e:\ccnet\publish\Shop\2\ 每一次生成都会递增&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;buildpublisher&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;sourceDir&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet\code\Shop&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;sourceDir&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;publishDir&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet\publish\Shop&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;publishDir&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;buildpublisher&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;buildpublisher&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;sourceDir&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet\code\Manager&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;sourceDir&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;publishDir&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: 新宋体; font-size: 9pt"&gt;e:\ccnet\publish\Manager&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;publishDir&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;buildpublisher&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;publishers&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;project&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: 新宋体; color: maroon; font-size: 9pt"&gt;cruisecontrol&lt;/span&gt;&lt;span style="font-family: 新宋体; color: blue; font-size: 9pt"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;以上是对一个项目的进行监控的配置，当然也可以创建多个不同的项目。然后运行&lt;/span&gt;ccnet.exe&lt;span style="font-family: 宋体"&gt;每日构建就开始工作了，&lt;/span&gt;ccnet.exe.config&lt;span style="font-family: 宋体"&gt;文件是对当前的&lt;/span&gt;ccnet&lt;span style="font-family: 宋体"&gt;服务器工作环境的配置，不用进行修改就可以工作了，如果愿意可以配置监听端口号等等。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;在&lt;/span&gt;webdashboard&lt;span style="font-family: 宋体"&gt;目录，通过&lt;/span&gt;WEB&lt;span style="font-family: 宋体"&gt;的方式对当前的&lt;/span&gt;ccnet&lt;span style="font-family: 宋体"&gt;的工作情况进行反馈。不知道是不是我配置的问题，我只看到了一条错误信息。但是通过&lt;/span&gt;CCTray&lt;span style="font-family: 宋体"&gt;可以更加方便的监视和管理构建过程。安装完&lt;/span&gt;CCTray&lt;span style="font-family: 宋体"&gt;后，打开&lt;/span&gt;Setting&lt;span style="font-family: 宋体"&gt;配置卡&lt;/span&gt;File&amp;gt;Settings&lt;/p&gt;&lt;p&gt;&amp;lt;!--[if !vml]--&amp;gt;&lt;img border="0" alt="ccnet1.jpg" src="http://images.cnblogs.com/cnblogs_com/hjf1223/Daily%20Build/ccnet1.jpg" width="787" height="666" /&gt;&lt;br /&gt;&amp;lt;!--[endif]--&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;单击右边的&lt;/span&gt;Add&lt;span style="font-family: 宋体"&gt;按钮，添加一个要监视的服务器。在这里可以设置构建，成功，失败等各种声音。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;!--[if !vml]--&amp;gt;&lt;img border="0" alt="ccnet2.jpg" src="http://images.cnblogs.com/cnblogs_com/hjf1223/Daily%20Build/ccnet2.jpg" width="754" height="433" /&gt;&lt;br /&gt;&amp;lt;!--[endif]--&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;在下边的文本框中输入要监视的服务器，如果是默认端口号则不用输入端口号，否则需要&lt;/span&gt;&amp;#8220;:&amp;#8221;&lt;span style="font-family: 宋体"&gt;隔开输入端口号。如果添加成功，则会在右边的&lt;/span&gt;Project&lt;span style="font-family: 宋体"&gt;列表框中出现在当前&lt;/span&gt;ccnet&lt;span style="font-family: 宋体"&gt;服务器中存在的项目。&lt;/span&gt;OK&lt;span style="font-family: 宋体"&gt;返回到主窗口。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;!--[if !vml]--&amp;gt;&lt;img border="0" alt="ccnet3.jpg" src="http://images.cnblogs.com/cnblogs_com/hjf1223/Daily%20Build/ccnet3.jpg" width="1023" height="390" /&gt;&lt;br /&gt;&amp;lt;!--[endif]--&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;在主窗体中有显示当前的服务器状态，最后一个编译时间，最后一次版本号，下一次生成时间等。点下面的&lt;/span&gt;Force Build&lt;span style="font-family: 宋体"&gt;按钮还可以强制马上进行生成。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;最后说明一点，&lt;/span&gt;MsBuild&lt;span style="font-family: 宋体"&gt;会根据当前的项目文件或解决方案文件对项目自动进行编译，而不需要写任何的配置文件。而在&lt;/span&gt;asp.net 2.0&lt;span style="font-family: 宋体"&gt;中&lt;/span&gt;Web&lt;span style="font-family: 宋体"&gt;工程默认是一种新的&lt;/span&gt;Web Site&lt;span style="font-family: 宋体"&gt;模式，这样可能就会对编译造成&lt;/span&gt;Web&lt;span style="font-family: 宋体"&gt;工程产生一定的影响。所以推荐使用&lt;/span&gt;VS 2005&lt;span style="font-family: 宋体"&gt;的&lt;/span&gt;Web Application Project Web&lt;span style="font-family: 宋体"&gt;工程模型。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;CruiseControl.Net&lt;span style="font-family: 宋体"&gt;官方地址：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Web Application Web &lt;span style="font-family: 宋体"&gt;请参阅：&lt;/span&gt;&lt;a href="http://dflying.cnblogs.com/archive/2006/04/06/368203.html"&gt;http://dflying.cnblogs.com/archive/2006/04/06/368203.html&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;关于&lt;/span&gt;MSBuild&lt;span style="font-family: 宋体"&gt;的更多介绍请查阅相关资料，或查看&lt;/span&gt;MSDN&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/hjf1223/ThoughtWorks.CruiseControl.MSBuild.rar"&gt;ThoughtWorks.CruiseControl.MSBuild.dll&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div id="MySignature"&gt;阿不 http://hjf1223.cnblogs.com&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2526272.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526272.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526161.html</id><title type="text">MSDN   Visual C++ 开发中心</title><summary type="text">http://msdn.microsoft.com/zh-cn/visualc/ Visual C++ 指导教程http://msdn.microsoft.com/library/ms235630.aspx</summary><published>2012-05-30T05:45:00Z</published><updated>2012-05-30T05:45:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526161.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526161.html"/><content type="html">&lt;p&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/visualc/" target="_blank"&gt;http://msdn.microsoft.com/zh-cn/visualc/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h1 class="title"&gt;&lt;span style="font-size: 10pt"&gt;Visual C++ 指导教程&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class="title"&gt;&lt;a href="http://msdn.microsoft.com/library/ms235630.aspx" target="_blank"&gt;http://msdn.microsoft.com/library/ms235630.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2526161.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/30/2526161.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/25/2517669.html</id><title type="text">[转]如何让Android字体自适应屏幕分辨率</title><summary type="text">本文转自：http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html在不同的分辨率下，Android字体大小怎么自适应分辨率的变化？ 假设需要适应320x240，480x320分辨率。在res目录下新建文件夹values-320x240,values-480x320。然后在文件夹values ，values-320x240 和 values-480x320 下新建xml文件dimens.xml，该xml文件内容如下：1234&lt;?xml version="1.0" encoding="utf-8&amp;q</summary><published>2012-05-25T02:49:00Z</published><updated>2012-05-25T02:49:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/25/2517669.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/25/2517669.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html" target="_blank"&gt;http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在不同的分辨率下，Android字体大小怎么自适应分辨率的变化？ &lt;/p&gt;&lt;p&gt;假设需要适应320x240，480x320分辨率。在res目录下新建文件夹values-320x240,&amp;nbsp;values-480x320。然后在文件夹&amp;nbsp;values ，values-320x240 和 &amp;nbsp;values-480x320 下新建xml文件dimens.xml，该xml文件内容如下：&lt;/p&gt;&lt;div&gt;&lt;div id="highlighter_817163" class="syntaxhighlighter  xhtml ie"&gt;&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;2&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;3&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;4&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="xhtml plain"&gt;&amp;lt;?&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;xml&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;version&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"1.0"&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;encoding&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"utf-8"&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;?&amp;gt; &lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="xhtml plain"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;resources&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;gt; &lt;/code&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;code class="xhtml spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;dimen&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;name&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"btnTextSize"&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;gt;14dip&amp;lt;/&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;dimen&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;gt; &lt;/code&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;code class="xhtml plain"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;resources&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;针对不同的分辨率&lt;span style="font-family: monospace"&gt;&lt;span style="white-space: pre"&gt;，btnTextSize的值不同。在布局文件中，用下面的方式引用该值：&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;div id="highlighter_983630" class="syntaxhighlighter  xhtml ie"&gt;&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;2&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;3&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;4&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="xhtml plain"&gt;&amp;lt;&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;TextView&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;android:layout_width&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"fill_parent"&lt;/font&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="xhtml spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;android:layout_height&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"wrap_content"&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;android:gravity&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"center"&lt;/font&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;code class="xhtml spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;android:id&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"@+id/lblSet"&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;style&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"@style/btntext"&lt;/font&gt;&lt;/code&gt; &lt;code class="xhtml color1"&gt;&lt;font color="#808080"&gt;android:textSize&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;=&lt;/code&gt;&lt;code class="xhtml string"&gt;&lt;font color="#0000ff"&gt;"@dimen/btnTextSize"&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;gt; &lt;/code&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;code class="xhtml plain"&gt;&amp;lt;/&lt;/code&gt;&lt;code class="xhtml keyword"&gt;&lt;font color="#0000ff"&gt;TextView&lt;/font&gt;&lt;/code&gt;&lt;code class="xhtml plain"&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/span&gt;&lt;/span&gt;通过这种方法，可以方便设置在不同分辨率下，字体的大小了。当然，不仅仅字体大小，宽和高等其他的一些属性，也可以通过类似的方式来设置 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div id="article_content" class="article_content"&gt;&lt;p&gt;layout中设置图片自适应大小，并且设置最大宽高，当图片的宽高大于设置的最大值时，宽高值为设置的最大值。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_xhtml"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[xhtml]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html#"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html#"&gt;copy&lt;/a&gt;&lt;a class="PrintSource" title="print" href="http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html#"&gt;print&lt;/a&gt;&lt;a class="About" title="?" href="http://www.cnblogs.com/tt_mc/archive/2012/03/10/2389555.html#"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml"&gt;&lt;li class="alt"&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;ImageView&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"@+id/image_view"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:layout_width&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"wrap_content"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:layout_height&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"wrap_content"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:adjustViewBounds&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"true"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:maxWidth&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"42dp"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:maxHeight&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"42dp"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:scaleType&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"fitCenter"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:layout_marginLeft&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"3dp"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;android:src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"@drawable/icon"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="tag"&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2517669.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/25/2517669.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/freeliver54/archive/2012/05/22/2513696.html</id><title type="text">CFTC 美国商品期货交易委员会</title><summary type="text">http://www.cftc.gov/index.htm</summary><published>2012-05-22T10:21:00Z</published><updated>2012-05-22T10:21:00Z</updated><author><name>freeliver54</name><uri>http://www.cnblogs.com/freeliver54/</uri></author><link rel="alternate" href="http://www.cnblogs.com/freeliver54/archive/2012/05/22/2513696.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/freeliver54/archive/2012/05/22/2513696.html"/><content type="html">&lt;a href="http://www.cftc.gov/index.htm" target="_blank"&gt;http://www.cftc.gov/index.htm&lt;/a&gt;&lt;img src="http://www.cnblogs.com/freeliver54/aggbug/2513696.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/freeliver54/archive/2012/05/22/2513696.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
