<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>沉默的大象</title>
	<atom:link href="http://noirbright.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://noirbright.com</link>
	<description>沉默的大象，默默守护着的大象</description>
	<lastBuildDate>Sun, 29 Aug 2010 00:26:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>准备入手N1，自用Hero出售，1700包邮</title>
		<link>http://noirbright.com/?p=471</link>
		<comments>http://noirbright.com/?p=471#comments</comments>
		<pubDate>Sun, 29 Aug 2010 00:23:59 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=471</guid>
		<description><![CDATA[Hero用了不到一年，一切良好，但奈何廉颇老矣，性能不太满意了，故准备入手N1，将自用Hero出售。 名盘价格包邮1700，箱说，配件都齐全（电池、数据线、耳机）。带卡登士原装清水套，贴有... ]]></description>
			<content:encoded><![CDATA[<p>Hero用了不到一年，一切良好，但奈何廉颇老矣，性能不太满意了，故准备入手N1，将自用Hero出售。</p>
<div id="_mcePaste">
<div id="_mcePaste">名盘价格包邮1700，箱说，配件都齐全（电池、数据线、耳机）。带卡登士原装清水套，贴有磨砂膜，送4G TF卡，已刷SPL和CW的recovery，刷机很方便。左上角和背面有轻微的划痕，具体可以见下面的照片。有意者可以加我Gtalk:noirbright@gmail.com或者QQ:63031956</div>
<div id="_mcePaste">实物照片：</div>
<div><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2871.jpg"><img class="alignnone size-full wp-image-473" title="DSCF2871" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2871.jpg" alt="" width="461" height="614" /></a></div>
</div>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2872.jpg"><img class="alignnone size-full wp-image-474" title="DSCF2872" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2872.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2873.jpg"><img class="alignnone size-full wp-image-475" title="DSCF2873" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2873.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2874.jpg"><img class="alignnone size-full wp-image-476" title="DSCF2874" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2874.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2875.jpg"><img class="alignnone size-full wp-image-477" title="DSCF2875" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2875.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2877.jpg"><img class="alignnone size-full wp-image-478" title="DSCF2877" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2877.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2878.jpg"><img class="alignnone size-full wp-image-479" title="DSCF2878" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2878.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2879.jpg"><img class="alignnone size-full wp-image-480" title="DSCF2879" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2879.jpg" alt="" width="614" height="461" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/08/DSCF2880.jpg"><img class="alignnone size-full wp-image-481" title="DSCF2880" src="http://noirbright.com/wp-content/uploads/2010/08/DSCF2880.jpg" alt="" width="614" height="461" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=471</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自主编译：CM6-test0-32a/32b-0705-fixed</title>
		<link>http://noirbright.com/?p=460</link>
		<comments>http://noirbright.com/?p=460#comments</comments>
		<pubDate>Mon, 05 Jul 2010 14:05:36 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=460</guid>
		<description><![CDATA[Changelog:CM6-test0-32a/32b-0705-fixed 基于7月5日最新CM6源码编译，新增了电池百分比显示的开关，在Cyanogenmod 设置里进行更改 默认关闭jit，在32a/32b等低端机上开启jit对性能没有改善，反倒更占内存，... ]]></description>
			<content:encoded><![CDATA[<h2>Changelog:CM6-test0-32a/32b-0705-fixed</h2>
<ul>
<li>基于7月5日最新CM6源码编译，新增了电池百分比显示的开关，在Cyanogenmod 设置里进行更改</li>
<li>默认关闭jit，在32a/32b等低端机上开启jit对性能没有改善，反倒更占内存，故在这个版本中关闭jit</li>
<li>修改ADW的默认设置，使其常驻内存，改善从其它程序退回桌面的速度</li>
<li>修改ADW的壁纸图库，用AOSP的图库替换了CM的图库</li>
<li>修改了framework.jar，使用了geesun的代码试其支持中文运营商显示</li>
<li>使用了最新的FRF91的GAPPS</li>
<li>CM6自带的contact文件有不少bug，故换成了aosp的contact，虽然相对cm6的功能更少，但非常稳定</li>
<li>重新编译了kernel，个人感觉比默认的kernel更稳定</li>
<li>进一步汉化了framework和superuser等程序</li>
<li>新增32a的支持，32a的用户也可以使用</li>
</ul>
<h2>ScreenShot：</h2>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/lock-screen.png"><img class="alignnone size-full wp-image-461" title="lock screen" src="http://noirbright.com/wp-content/uploads/2010/07/lock-screen.png" alt="" width="320" height="480" /></a></p>
<p>添加中文运营商显示</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/battery.png"><img class="alignnone size-full wp-image-466" title="battery" src="http://noirbright.com/wp-content/uploads/2010/07/battery.png" alt="" width="320" height="480" /></a></p>
<p>CM设置中，加入了电量百分比的开关</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/adw-settings.png"><img class="alignnone size-full wp-image-462" title="adw settings" src="http://noirbright.com/wp-content/uploads/2010/07/adw-settings.png" alt="" width="320" height="480" /></a></p>
<p>ADW默认常驻内存，解决返回桌面慢的问题</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/gallery.png"><img class="alignnone size-full wp-image-463" title="gallery" src="http://noirbright.com/wp-content/uploads/2010/07/gallery.png" alt="" width="320" height="480" /></a></p>
<p>更换ADW的默认壁纸库为AOSP的壁纸库</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/framework.png"><img class="alignnone size-full wp-image-464" title="framework" src="http://noirbright.com/wp-content/uploads/2010/07/framework.png" alt="" width="320" height="480" /></a></p>
<p>进一步汉化了一些程序</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/about1.png"><img class="alignnone size-full wp-image-465" title="about" src="http://noirbright.com/wp-content/uploads/2010/07/about1.png" alt="" width="320" height="480" /></a></p>
<p>重新编译了kernel，耗电有所改善，并且加入了32a的支持</p>
<h2>Known Issues：</h2>
<ul>
<li>第一次启动时可能会意外重启，完成设置后就不会出现这个问题</li>
<li>相机中按0x变焦按键会使相机fc</li>
<li>摄像无法正常使用</li>
<li>由于Gapps都是Nexus专用的，故其素材的尺寸都很大，特别是gmail，显示出来很大，这个暂时无法解决</li>
<li>Dream和Magic因为性能问题，不支持flash，即便刷了2.2也不可能运行flash，所以不要去市场下载flash程序了，不会起作用的，另外也不要再求使用flash的方法了，在地球上不存在解决方法，除非你换手机</li>
</ul>
<h2>App2sd：</h2>
<p>rom支持app2sd，但默认没有开启。</p>
<p>开启方法：</p>
<p>在超级终端中输入：</p>
<p>su</p>
<p>pm setInstallLocation 2</p>
<p>即可开启app2sd，不需要有ext分区就可以使用，但官方的这个app2sd还不太稳定，不建议使用</p>
<h2>Download：</h2>
<p>Dream/Magic 32b:<a href="http://thesoloblack.com/rom/cm6-test0-32b-0705-fixed.zip">http://thesoloblack.com/rom/cm6-test0-32b-0705-fixed.zip</a></p>
<p>Magic 32a:<a href="http://thesoloblack.com/rom/cm6-test0-32a-0705-fixed.zip" target="_blank">http://thesoloblack.com/rom/cm6-test0-32a-0705-fixed.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=460</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>原生编译+汉化-CM6_32b_test0</title>
		<link>http://noirbright.com/?p=444</link>
		<comments>http://noirbright.com/?p=444#comments</comments>
		<pubDate>Sat, 03 Jul 2010 08:25:47 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=444</guid>
		<description><![CDATA[CM6的Test0终于能编译了，立马搞了个32B的版本。 照相机正常，WIFI正常，信号正常，蓝牙正常，定位正常，可以日常用用了。 作了些程序的汉化，修改了adw的默认设置让其更流程些，有兴趣的可... ]]></description>
			<content:encoded><![CDATA[<p>CM6的Test0终于能编译了，立马搞了个32B的版本。</p>
<p>照相机正常，WIFI正常，信号正常，蓝牙正常，定位正常，可以日常用用了。</p>
<p>作了些程序的汉化，修改了adw的默认设置让其更流程些，有兴趣的可以下载玩玩。</p>
<p>开启app2sd的方法，感谢41楼朋友提供：</p>
<p>在超级终端中，输入以下命令，app2sd即可开启：</p>
<p>pm setInstallLocation 2</p>
<p>特色：</p>
<ul type="1">
<li>默认开启JIT</li>
<li>语言类型中仅包含英文和简体中文，缩小文件大小</li>
<li>默认+8时区</li>
<li>默认简体中文</li>
<li>汉化了大部分软件（主要汉化了联系人，超级终端，高级设置，CM设置等）</li>
<li>加大了铃声，没有铃声小的问题</li>
<li>相机正常</li>
<li>WIFI正常</li>
<li>蓝牙正常</li>
<li>定位正常</li>
</ul>
<p>先来截图：</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/lockscreen.png"><img class="alignnone size-full wp-image-445" title="lockscreen" src="http://noirbright.com/wp-content/uploads/2010/07/lockscreen.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/home.png"><img class="alignnone size-full wp-image-446" title="home" src="http://noirbright.com/wp-content/uploads/2010/07/home.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/drawer.png"><img class="alignnone size-full wp-image-447" title="drawer" src="http://noirbright.com/wp-content/uploads/2010/07/drawer.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/music.png"><img class="alignnone size-full wp-image-448" title="music" src="http://noirbright.com/wp-content/uploads/2010/07/music.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/app2sd.png"><img class="alignnone size-full wp-image-456" title="app2sd" src="http://noirbright.com/wp-content/uploads/2010/07/app2sd.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/maps.png"><img class="alignnone size-full wp-image-449" title="maps" src="http://noirbright.com/wp-content/uploads/2010/07/maps.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/superuser.png"><img class="alignnone size-full wp-image-450" title="superuser" src="http://noirbright.com/wp-content/uploads/2010/07/superuser.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/superuser.png"></a><a href="http://noirbright.com/wp-content/uploads/2010/07/settings.png"><img class="alignnone size-full wp-image-451" title="settings" src="http://noirbright.com/wp-content/uploads/2010/07/settings.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/07/about.png"><img class="alignnone size-full wp-image-452" title="about" src="http://noirbright.com/wp-content/uploads/2010/07/about.png" alt="" width="320" height="480" /></a></p>
<p>最后是下载地址：</p>
<p><a href="http://u.115.com/file/f9a6705a6e">http://u.115.com/file/f9a6705a6e</a></p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=444</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>教你在CM5（CyanogenMod 5）中使用联通3G免费通过手机电视观看世界杯</title>
		<link>http://noirbright.com/?p=442</link>
		<comments>http://noirbright.com/?p=442#comments</comments>
		<pubDate>Wed, 23 Jun 2010 06:53:38 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=442</guid>
		<description><![CDATA[引子 解决CM观看手机电视的问题很久了，一直没时间动笔写这个教程，今天有点闲暇，就动手写了。 前言 联通为了拓展其3G业务，开通了手机电视免收流量费的优惠，但总的来说频道内容的吸... ]]></description>
			<content:encoded><![CDATA[<h1>引子</h1>
<p>解决CM观看手机电视的问题很久了，一直没时间动笔写这个教程，今天有点闲暇，就动手写了。</p>
<h1>前言</h1>
<p>联通为了拓展其3G业务，开通了手机电视免收流量费的优惠，但总的来说频道内容的吸引力不大，笔者一直没去开通，但随着世界杯的到来，随时随地能看世界杯的吸引力是致命的，这也使得笔者蠢蠢欲动，开启了手机电视业务。但是开启此业务后，笔者失望的发现，在笔者的Dream上，无论如何，无法使用3GWAP来观看手机电视，3GNET却可以，但要知道，免流量费的优惠仅在使用3GWAP作为接入点时才是有效的，3GNET观看世界杯的流量费实在承受不起，这让笔者非常失望。又试了其它手机，笔者发现在使用AOSP或者SENSE的rom的手机上（Milestone,Hero），手机电视运转良好，但只要在使用了CM5（CyanogenMod 5）的rom的手机上（Dream,Magic,Nexus），3GWAP的手机电视无论如何无法使用，这是什么原因？有没有办法解决呢？通过了一番尝试，终于被笔者找到了解决方法</p>
<h1>教程</h1>
<p>首先，先说明下Android观看手机电视所必要的环境：</p>
<ol>
<li>联通3G的SIM卡</li>
<li>支持联通3G的手机</li>
<li>正确设置的APN</li>
<li>DNS检查设置成allowed</li>
<li>使用3GWAP作为系统接入点</li>
<li>修改代理设置</li>
<li>使用系统自带浏览器</li>
</ol>
<p>这1，2两点自不必说，我们从第三点，APN设置开始说起，APN设置的网上教程有很多，笔者给出自己成功观看手机电视的设置，供各位参考</p>
<ul>
<li>3GNET设置：
<ul>
<li>名称：3GNET</li>
<li>APN：3gnet</li>
<li>MCC：460</li>
<li>MNC：01</li>
<li>APN类型：default</li>
</ul>
</li>
<li>3GWAP设置
<ul>
<li>名称：3GWAP</li>
<li>APN：3gwap</li>
<li>代理：10.0.0.172</li>
<li>端口：80</li>
<li>MCC：460</li>
<li>MNC：01</li>
<li>APN类型：default</li>
</ul>
</li>
<li>3GMMS设置
<ul>
<li>名称：3GMMS</li>
<li>APN：3gwap</li>
<li>MMSC：http://mmsc.myuni.com.cn</li>
<li>彩信代理：10.0.0.172</li>
<li>彩信端口：80</li>
<li>MCC：460</li>
<li>MNC：01</li>
<li>APN类型：mms</li>
</ul>
</li>
</ul>
<p>设置完APN后，还有第四点DNS检查的设置需要更改，不然无法连接到3GWAP的网络。</p>
<p>打开拨号面板，然后输入：*#*#4636#*#*</p>
<p>输入成功后，会进入手机信息的设置，将滚动条拉到最底下，将切换DNS检查的设置改成0.0.0.0 allowed</p>
<p>成功后 ，在回到APN设置界面，选中3GWAP接入点后面的圆点，稍等片刻后，当提示栏出现3G的图标后，即表示连上了3G网络。</p>
<p>到此位置都是常规的操作，在所有Android手机上都类似，一般这样设置后，大部分手机都能成功观看手机电视了，但在这之后，在CM rom上，将要使用一个额外的操作才能观看成功。</p>
<p>大家都知道CM的rom一般是在AOSP的代码上加入了增强的功能，但就因为其中的一项增强，导致了我们在默认设置下无法观看手机电视。</p>
<p>在CM中，无线和网络的设置选项里比AOSP的rom多了一项网络代理的选项，这个选项允许用户设置代理来访问网络，这本是一个非常有用的功能，但在这里却出了问题。细心的用户不难发现，这里的代理设置会根据你APN的选择而发生变化，比如当你选择3GWAP作为介入点时，这里的选项是空白的，但当你用3GWAP作为接入点时，这里的选项会跟你APN里的代理设置保持一致，比如3GWAP的设置中，代理为10.0.0.172，端口为80，则如若切换到3GWAP，那代理设置就会跟着变成主机名：10.0.0.172，端口：80。</p>
<p>照理来说，这也没什么问题，CM只是把原来的APN的设置独立出来，能够单独进行代理的设置了，但是其中一个默认的选项导致了手机电视无法观看。由于在CM添加的代理设置中，代理设置是默认只在WIFI环境下生效的。那也就是说，当你切换到3GWAP后，虽然代理设置也跟着起了变化，但其实代理的端口和主机设置并没有生效，因为你此时处于3G网络而非WIFI环境下，故当你连接需要3GWAP连接的手机电视网站时，自然显示连接超时。</p>
<p>解决的方法也很简单，将这个仅在WIFI下生效的选项前面的勾去掉，OK，问题彻底解决。</p>
<p>我们打开系统自带的浏览器，输入www.wo.com.cn，自动进入沃的门户网站，点击手机电视的连接，将会跳转到wap.tv.wo.com.cn去，请注意进到跳转的地址是以WAP开头，才说明我们设置成功了，此时你观看手机电视才是免费的，非WAP的话，观看是不免流量费的，一定要自己留意下，不然扣了费可不要来找笔者算帐。</p>
<p>一般的96套餐会赠送12个M值，花费其中的3个，订阅一个CCTV5的频道，即可开始观看手机电视了，至此，即便在上下班途中，我们也可以欣赏世界杯了。</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=442</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>刷[啊兴制作] Android ROM 1.0 正式版的有趣发现</title>
		<link>http://noirbright.com/?p=433</link>
		<comments>http://noirbright.com/?p=433#comments</comments>
		<pubDate>Fri, 04 Jun 2010 10:41:18 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=433</guid>
		<description><![CDATA[今天中午，啊兴终于给出了他离开hiapk后的第一个rom，android rom 1.0正式版。 下载地址http://bbs.nduoa.com/android_gphone_thread-1786-1-1.html 老实说，这个rom确实有不少可取之处，比如某些应用程序的修改... ]]></description>
			<content:encoded><![CDATA[<p>今天中午，啊兴终于给出了他离开hiapk后的第一个rom，android rom 1.0正式版。</p>
<p>下载地址<a href="http://bbs.nduoa.com/android_gphone_thread-1786-1-1.html">http://bbs.nduoa.com/android_gphone_thread-1786-1-1.html</a></p>
<p><a href="http://bbs.nduoa.com/android_gphone_thread-1786-1-1.html"></a>老实说，这个rom确实有不少可取之处，比如某些应用程序的修改非常细致，但在刷完之后，我却有另一个有趣的发现和大家分享</p>
<p>刚刷完rom之后，在手机内看设置里的关于手机，看到的内核版本是2.6.33.4-nduoa nduoa.com #6</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/06/nduo1.jpg"><img class="alignnone size-full wp-image-439" title="nduo1" src="http://noirbright.com/wp-content/uploads/2010/06/nduo1.jpg" alt="" width="315" height="473" /></a></p>
<p>我装完软件 ，设置完开机启动程序后，重启了下手机，有趣的事情发生了。在关于手机页面里，内核的版本出现了变化，由原来的2.6.33.4-nduoa nduoa.com #6变成了2.6.33.4-nduoa nduoa.com #1</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/06/nduo.png"><img class="alignnone size-full wp-image-435" title="nduo" src="http://noirbright.com/wp-content/uploads/2010/06/nduo.png" alt="" width="320" height="480" /></a></p>
<p>我感到非常奇怪，作为一个原生编译的核心，在编译过程中，它的名字和编号应该就已经确定下来了，怎么会在刷到手机中后，还发生着变化呢？</p>
<p>我觉得其中的某些地方可能有些不太正常，难道是settings.apk这个程序出现了异常吗？</p>
<p>于是我尝试将cm5.0.7的settings.apk文件push到手机中，然后再看了一下关于手机信息</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/06/nduo_real.png"><img class="alignnone size-full wp-image-436" title="nduo_real" src="http://noirbright.com/wp-content/uploads/2010/06/nduo_real.png" alt="" width="320" height="480" /></a></p>
<p>这时，啊兴的这个rom终于露出了他本来的样子。所使用的内核是CM5.0.7的默认内核，而版本号亦为CM5.0.７的原始版本。</p>
<p>从这个现象我大胆得推断，这个rom是啊兴基于CM5.0.7原始版本进行修改的，而非其根据源码编译出来的。</p>
<p>对于直接修改rom和内核版本号的做法我不予置评了，就我个人而言，只有我自己编译和修改的东西，才会在上面署名，直接拿来别人的就写上自己名字的事情是不会去做的。</p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=433</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>『相机修复』CM507_NOirMod, BFS, Cache Hack, JIT, FAST</title>
		<link>http://noirbright.com/?p=418</link>
		<comments>http://noirbright.com/?p=418#comments</comments>
		<pubDate>Thu, 27 May 2010 03:53:40 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=418</guid>
		<description><![CDATA[基于蛋蛋507正式版修改，主要特性如下： 在CM源码上打上了BFS补丁，自主编译了BFS的Kernel 修改了内核使其支持cache hack，开机后可用空间达到87MB以上 默认开启SWAP 默认开启JIT 默认开启APP2SD 由于... ]]></description>
			<content:encoded><![CDATA[<h1>基于蛋蛋507正式版修改，主要特性如下：</h1>
<ul>
<blockquote>
<li>在CM源码上打上了BFS补丁，自主编译了BFS的Kernel</li>
<li>修改了内核使其支持cache hack，开机后可用空间达到87MB以上</li>
<li>默认开启SWAP</li>
<li>默认开启JIT</li>
<li>默认开启APP2SD</li>
<li>由于BFS+JIT+Cache Hack的综合影响，rom的整体速度飞快</li>
<li><strong>修复相机黑屏bug</strong></li>
</blockquote>
</ul>
<h1>截图：</h1>
<blockquote><p><a href="http://noirbright.com/wp-content/uploads/2010/05/Kernel.png"><img class="alignnone size-full wp-image-425" title="Kernel" src="http://noirbright.com/wp-content/uploads/2010/05/Kernel.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/Space.png"><img class="alignnone size-full wp-image-424" title="Space" src="http://noirbright.com/wp-content/uploads/2010/05/Space.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/NeoCore.png"><img class="alignnone size-full wp-image-423" title="NeoCore" src="http://noirbright.com/wp-content/uploads/2010/05/NeoCore.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/Graphic.png"><img class="alignnone size-full wp-image-421" title="Graphic" src="http://noirbright.com/wp-content/uploads/2010/05/Graphic.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/CPU.png"><img class="alignnone size-full wp-image-419" title="CPU" src="http://noirbright.com/wp-content/uploads/2010/05/CPU.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/Memory.png"><img class="alignnone size-full wp-image-422" title="Memory" src="http://noirbright.com/wp-content/uploads/2010/05/Memory.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/Filesystem.png"><img class="alignnone size-full wp-image-420" title="Filesystem" src="http://noirbright.com/wp-content/uploads/2010/05/Filesystem.png" alt="" width="320" height="480" /></a></p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/Camera-Fix.png"><img class="alignnone size-full wp-image-430" title="Camera-Fix" src="http://noirbright.com/wp-content/uploads/2010/05/Camera-Fix.png" alt="" width="320" height="480" /></a></p></blockquote>
<h1>下载地址：</h1>
<p><a href="http://u.115.com/file/f91f6c5d82">相机修复包</a></p>
<p><em>昨天刷了我rom的机友直接刷这个相机修复包即可</em></p>
<p><a href="http://u.115.com/file/f9322d4e07">完整刷机包</a></p>
<p><em>还没刷的朋友可以直接下载完整刷机包</em></p>
<p><strong>最后，Cache Hack的rom由于大幅修改了rom的结构，故刷机前，必须Full Wipe，否则必然出错。请备份数据后，wipe前三项再刷</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=418</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[G1 ROM]CM5-test6 Xdan修改版二次修改，开启Cache Hack，可用空间87.4MB</title>
		<link>http://noirbright.com/?p=412</link>
		<comments>http://noirbright.com/?p=412#comments</comments>
		<pubDate>Tue, 25 May 2010 05:27:40 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=412</guid>
		<description><![CDATA[这个rom是我自己练习的习作，放出来给有兴趣的朋友玩玩。 首先来解释下cache hack G1的空间小，大家众所周知，在不刷Danger SPL的情况下，G1的主要分区大小如下： /system 67.5MB /data 74.7MB /cache 67.5MB... ]]></description>
			<content:encoded><![CDATA[<h2>这个rom是我自己练习的习作，放出来给有兴趣的朋友玩玩。</h2>
<h2><strong>首先来解释下cache hack</strong></h2>
<blockquote><p>G1的空间小，大家众所周知，在不刷Danger SPL的情况下，G1的主要分区大小如下：</p>
<p>/system 67.5MB</p>
<p>/data 74.7MB</p>
<p>/cache 67.5MB</p>
<p>刷了Danger SPL后，空间会有所增加</p>
<p>/system 90MB</p>
<p>/data 89.7MB</p>
<p>/cache 30MB</p></blockquote>
<blockquote><p>Danger SPL，解决了早期G1空间不够，无法升级rom的窘境。但是随着Android版本号的逐步提升，G1的空间又逐步显得吃紧起来，所以又有人动起了Cache分区里剩下的那30MB的主意。</p></blockquote>
<blockquote><p>我们知道Cache分区的作用其实并不大，我们甚至可以把主要的cache文件都移动到SD卡上，而且大多数情况下，Cache分区是空的，所以这部分空间其实也能合理利用起来。</p></blockquote>
<blockquote><p>Cache Hack就是针对这种情况出现的空间的解决方案（也只有G1这种老机器才会有人折腾这个，呵呵）</p></blockquote>
<h2>Cache Hack的实现</h2>
<blockquote><p>要实现Cache Hack还是需要一些rom制作基础的。</p>
<p>首先，Cache Hack必须要boot.img的支持才能实现。</p>
<p>boot.img是由kernel和ramdisk组成的。我们可以通过脚本将boot.img拆成kernel和ramdisk两个文件，解压ramdisk，即可得到ramdisk内的内容，我们需要修改的就是ramdisk里的init.rc文件，具体的修改方式可以参考XDA上的这个帖子：<a href="http://forum.xda-developers.com/showthread.php?t=653348">http://forum.xda-developers.com/showthread.php?t=653348</a></p>
<p>改完init.rc后，再通过脚本将kernel和ramdisk重新打包成boot.img，这样，boot.img就搞定了</p>
<p>其次，是调整rom包的结构，将你需要复制到cache分区的内容与system分区分开，具体可以参考我上传的这个rom。</p>
<p>再次，依然参照xda上那个帖子，添加启动时所需要的脚本。</p>
<p>最后，修改update script，建立系统间的连接，这个同样也可以参考我这个rom的做法。</p>
<p>打包，签名，刷机。</p>
<p>启动后，手机的内部可用空间即达到了87.4MB</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/free_space.png"><img class="size-full wp-image-413 alignnone" title="free_space" src="http://noirbright.com/wp-content/uploads/2010/05/free_space.png" alt="" width="320" height="480" /></a></p></blockquote>
<h2>已知问题</h2>
<blockquote><p>目前，cache hack使用的是与cm不同的app2sd的方式，故在cm5上开启cache hack后，cm5的app2sd只能长期处于开启状态，无法关闭，不过好在这并不影响我们的使用，后期看看这个问题是否可以进一步修正。</p>
<p><a href="http://noirbright.com/wp-content/uploads/2010/05/app2sd_off.png"><img class="alignnone size-full wp-image-415" title="app2sd_off" src="http://noirbright.com/wp-content/uploads/2010/05/app2sd_off.png" alt="" width="320" height="480" /></a></p></blockquote>
<h2>适用范围</h2>
<blockquote><p>cache hack比较适合用在rom体积较大的包上，比如sense的rom，比如slide的rom，当你因为在移植rom过程中发现空间不够不得不精简系统，但又发现没啥好减的时候，就可以开始考虑用cache hack试试了。</p></blockquote>
<h2>示例rom下载</h2>
<blockquote><p><strong><a title="rom下载" href="http://u.115.com/file/f962ebd9f3">下载</a></strong></p></blockquote>
<blockquote>
<blockquote><p><strong><br />
</strong></p></blockquote>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=412</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu10.0.4下CyanogenMod编译环境的搭建和可刷机文件的编译及打包（For HTC Dream）</title>
		<link>http://noirbright.com/?p=393</link>
		<comments>http://noirbright.com/?p=393#comments</comments>
		<pubDate>Mon, 24 May 2010 06:21:48 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[cyanogen]]></category>
		<category><![CDATA[rom]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=393</guid>
		<description><![CDATA[本文只是叙述Ubuntu下编译环境的搭建和ROM的编译过程，过程中可能会需要一些Ubuntu的常规操作技巧，在本文里就不详细介绍了，Ubuntu的新手可以通过谷歌学习一下，笔者也是新手，刚用没多久... ]]></description>
			<content:encoded><![CDATA[<blockquote><p>本文只是叙述Ubuntu下编译环境的搭建和ROM的编译过程，过程中可能会需要一些Ubuntu的常规操作技巧，在本文里就不详细介绍了，Ubuntu的新手可以通过谷歌学习一下，笔者也是新手，刚用没多久，谷歌一下并不难，另外由于源码和编译后生成的文件都比较大，如果想要折腾起来的话，ubuntu的分区最好能有30G，20G的话一会就用完了，笔者之前也是分了20G，但不一会就空间不足了，故最后格掉分区，重新分了100G给ubuntu。</p></blockquote>
<h1><strong>编译环境的搭建</strong></h1>
<blockquote>
<h2><strong>JDK安装</strong></h2>
<p>a) JDK是Ubuntu下使用Android SDK，编译源代码等必备的软件包，首先我们现来装这个</p>
<p>b) 从sun官方网站下载最新版的JDK，一般是个.bin的文件，笔者下载的是jdk-6u20-linux-i586.bin（根据文件不同，命令的也会有所变化，大家在使用的时候要注意，主要是文件名和路径的变化）。</p>
<p>c) 由于JDK运行时会在当前目录下安装，所以在安装前，先把它移动到你想要安装的目录，比如笔者将其安装在/usr/lib/jvm/java目录下，如果你也想安装在相同目录，可以照着我下面的命令来做<span id="more-393"></span></p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="453">
<tbody>
<tr>
<td width="451" valign="top">sudo –i</p>
<p>cd /usr/lib</p>
<p>mkdir jvm</p>
<p>cd jvm</p>
<p>mkdir java</p>
<p>cd java</p>
<p>cp “jdk-6u20-linux-i586.bin所在目录“/jdk-6u20-linux-i586.bin /usr/lib/jvm/java</p>
<p>chmod u+x jdk-6u20-linux-i586.bin</p>
<p>jdk-6u20-linux-i586.bin</td>
</tr>
</tbody>
</table>
<p>此时会出现JDK的安装提示说明，按着回车不放，提示说明会持续滚动，直到屏幕提示需要输入Yes/NO，输入YES后，即开始安装，安装完成后提示按回车继续，按完回车后，安装即告成功</p>
<p>d) 与Windows不同，Ubuntu是没有注册表的，故安装完成后，我们需要把我们安装JDK的目录告诉系统，故在刚才的终端里执行如下命令（如果是新开的终端，没有执行过“sudo -i”,则需要在命令前+“sudo”获得权限）</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">gedit /etc/environment</td>
</tr>
</tbody>
</table>
<p>此时在会弹出一个文本编辑器，里面显示</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">PATH＝&#8221;&#8230;&#8230;&#8221;</td>
</tr>
</tbody>
</table>
<p>其中省略号部分是其默认的路径，这里我们不要动它，我们需要对这个进行一些修改，将我们的JDK安装路径写进去，告诉系统我们的JDK装在哪里，去哪里调用，故做如下修改：</p>
<p>i. 在原有的 PATH＝&#8221;&#8230;&#8230;&#8221; 的省略号里面添加：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">PATH＝&#8221;&#8230;&#8230;:/usr/lib/jvm/java/jdk1.6.0_20/bin&#8221;</td>
</tr>
</tbody>
</table>
<p>ii. 添加两行，输入如下内容：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_20/lib</p>
<p>JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_20</td>
</tr>
</tbody>
</table>
<p>最后生成如下形式：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">PATH＝&#8221;&#8230;&#8230;:/usr/lib/jvm/java/jdk1.6.0_20/bin&#8221;</p>
<p>CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_20/lib</p>
<p>JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_20</td>
</tr>
</tbody>
</table>
<p>其中，省略号部分是文件原有内容，我们在后面新加了一部分内容和两个新行。修改完成后保存退出。</p>
<p>e) Ubuntu有可能会自带JDK或者安装多个JDK，此时需要将我们安装的这个设置为默认</p>
<p>i. 首先，将我们的JDK安装目录加入到JDK的选择菜单，执行如下代码：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="453">
<tbody>
<tr>
<td width="451" valign="top">update-alternatives &#8211;install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_12/bin/java 300</p>
<p>update-alternatives &#8211;install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_12/bin/javac 300</td>
</tr>
</tbody>
</table>
<p>ii. 其次，通过命令来选择默认的JDK，执行如下代码：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">update-alternatives &#8211;config java</td>
</tr>
</tbody>
</table>
<p>iii. 最后，再来检查一下系统当前的JDK版本，输入以下代码查看：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">java -version</td>
</tr>
</tbody>
</table>
<p>f) 至此，JDK即告安装成功。</p></blockquote>
<h2><strong>Android SDK安装</strong></h2>
<blockquote><p>a) 既然是做rom，那肯定需要调试和测试的工具，Android的官方SDK同样提供官方版本，我们直接下载安装即可。</p>
<p>b) 去谷歌的官网下载最新的SDK版本，前几天刚跟新了支持2.2的r6，不过SDK的官方网站在墙后，我们只能翻墙过去下载，这点比较无奈。官方提供Windows，Mac OS X，Linux三个版本，毫无疑问，我们需要下载Linux的版本。</p>
<p>c) SDK不需要安装，直接解压就可以使用。建议放在主目录下，方便调用。</p>
<p>d) 为了方便adb命令的使用，我们同样需要将adb命令所在的目录添加到系统环境变量中去，这样，在任何目录下都能直接调用adb，不需要现cd到SDK目录，这样会比较方便，实现方法如下：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">sudo gedit ~/.bashrc</td>
</tr>
</tbody>
</table>
<p>用文本编辑器打开.bashrc文件，然后在最后添加一行：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">export PATH=${PATH}:&lt;你sdk的目录&gt;/tools</td>
</tr>
</tbody>
</table>
<p>这里的需要将你sdk的安装目录添写进去，保存后即可。</p>
<p>e) 把手机连上usb，然后在终端中输入：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">adb devices</td>
</tr>
</tbody>
</table>
<p>会列出所有连接在电脑上的android设备，如果看到一串数字和字母的序列号的显示的话，即表示SDK安装成功。</p></blockquote>
<h2><strong>软件安装</strong></h2>
<blockquote><p>a) 配置源，更新源之类的问题就不再说了，直接说我们需要的软件，从同步源码到编译rom我们总计需要用到以下几个软件，有部分软件在我们更新过程中可能已经自动安装了，但这不影响我们工作，我把所有需要用到的程序列了出来：</p>
<p>• git-core</p>
<p>• gnupg</p>
<p>• flex</p>
<p>• bison</p>
<p>• gperf</p>
<p>• libsdl-dev</p>
<p>• libesd0-dev</p>
<p>• libwxgtk2.6-dev</p>
<p>• build-essential</p>
<p>• zip</p>
<p>• curl</p>
<p>• libncurses5-dev</p>
<p>• zlib1g-dev</p>
<p>• valgrind</p>
<p>• libreadline5-dev</p>
<p>b) 以上这些程序均通过apt-get命令来安装，比如要安装git-core软件，我们通过输入如下命令来实现：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">sudo apt-get install git-core</td>
</tr>
</tbody>
</table>
<p>c) 其它软件的安装过程类似，替换掉最后的软件名称即可。</p>
<p>d) 安装完所有软件后，编译CyanogenMod所需要的所有环境均搭建完成了。</p></blockquote>
<h1><strong>源码同步</strong></h1>
<h2><strong>repo的安装</strong></h2>
<blockquote><p>a) CyanogenMod的源码地址是http://github.com/cyanogen/android，你可以通过网址右上角的Download Source来下载源码。不过我们并不推荐这种方式下载，因为源码的变化较为频繁，每次一旦源码有变化，我们就需要重新下载完整的源码包，既费时又费力，效率也很低，故推荐通过repo同步的方式来做，在同步过程中，仅会同步源码的变化部分，效率较高。</p>
<p>b) Repo的安装</p>
<p>i. repo的安装比较方便，之需要下载一个文件，并设置成可执行权限，并添加到系统环境中去即可，具体命令如下：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">cd ~</p>
<p>mkdir bin</td>
</tr>
</tbody>
</table>
<p>在你的home根目录下创建名为bin的文件夹。</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">sudo gedit ~./bashrc</td>
</tr>
</tbody>
</table>
<p>打开你的环境变量配置文件，在最后加一行：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">export PATH=$PATH:~/bin</td>
</tr>
</tbody>
</table>
<p>修改后保存文件退出，关闭终端，重新打开一个终端，输入如下命令验证路径是否成功添加到环境变量中去了：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="450">
<tbody>
<tr>
<td width="448" valign="top">echo $PATH</td>
</tr>
</tbody>
</table>
<p>确认完后，开始安装repo，执行如下命令：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">curl <a href="http://android.git.kernel.org/repo">http://android.git.kernel.org/repo</a> &gt; ~/bin/repo<br />
chmod a+x ~/bin/repo</td>
</tr>
</tbody>
</table>
<p>通过curl命令将repo下载到bin中，并将其权限修改为可执行文件，至此repo的安装结束。</p></blockquote>
<h2><strong>Repo的配置和同步</strong></h2>
<blockquote><p>i. 在主目录下新建一个文件夹，作为源码的存放目录</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">cd ~</p>
<p>mkdir cyanogenmod</p>
<p>cd cyanogenmod</td>
</tr>
</tbody>
</table>
<p>ii. 在cyanogenmod目录执行repo命令，设定需要同步的源码内容：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">repo init -u git://github.com/cyanogen/android.git -b eclair</td>
</tr>
</tbody>
</table>
<p>网址即为cyanogenmod的地址，-b表示我们选择需要同步的分支，cyanogenmod有不少分支，比如dount，eclair，以后还会有froyo，我们目前需要编译的是2.1，即eclair，则通过-b eclair来选择2.1的分支。</p>
<p>iii. 在配置过程中，会让你选择名字和邮箱，这个会显示在你最后编译出来的rom的基础信息里，可以选择你喜欢的来写</p>
<p>iv. 配置完成后，就可以开始同步源码了:</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">repo sync</td>
</tr>
</tbody>
</table>
<p>同步的过程会比较长，建议在晚上睡觉前开始同步，一般早上起来就能好了。</p></blockquote>
<h1><strong>编译环境的设置</strong></h1>
<h2><strong>编译环境的建立</strong></h2>
<blockquote><p>a) 同步玩源码后，首先需要建立编译环境，CM的源码把这些命令都写成了脚本，我们只需运行相应的脚本即可，首先，先cd到源码的根目录，然后执行如下命令：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">./build/envsetup.sh</td>
</tr>
</tbody>
</table>
<p>执行后，屏幕上会显示：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">including vendor/cyanogen/vendorsetup.sh</td>
</tr>
</tbody>
</table>
<p>此时，编译环境设置成功</p></blockquote>
<h2><strong>专属文件的提取</strong></h2>
<blockquote><p>a) 虽然Android系统是开源的，但有部分Dream的专属文件是不开源的，所以并不包含在源码树中。但如果希望rom能在Dream真机上运行，又需要这些文件，所以需要将这些文件提取出来，在CM中，这个操作比较简单，Steve已经给我们做好脚本了。</p>
<p>b) 首先你要确保安装成功了上述所有软件，然后，将Dream通过usb连接到电脑上。</p>
<p>c) cd到源码的/vendor/htc/dream_sapphire目录，然后执行脚本：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">./extract-files.sh</td>
</tr>
</tbody>
</table>
<p>d) 这个操作会调用adb命令，从你的手机里pull所需要的专属文件到vendor目录。</p></blockquote>
<h2><strong>编译文件的修改</strong></h2>
<blockquote><p>a) 默认的编译过程包含了所有的语言和程序，但其实我们并不需要这些，可以通过编译文件的修改来定义需要输出的语言和软件</p>
<p>b) 打开/vendor/cyanogen/products 目录下的cyanogen.mk文件，里面定义了要输出的软件和语言，对于不需要的软件，可以直接删除。但不建议在这里修改，可以从最后的输出目录里删除不需要的，直接在这里改容易出错</p>
<p>c) 在文件的最后，有一行”PRODUCT_LOCALES”,这里就包含了rom支持的语言类型，默认有几十种，编译出来后，软件会比较大，一般我们只需要保留其中的常用语言即可，笔者选择保留了en_US,zh_CN和zh_TW这三种语言，编译出来的软件就小了很多。</p></blockquote>
<h1><strong>Kernel编译</strong></h1>
<blockquote><p>1. kernel是android的核心，也是最重要的部分，虽然CM源码中自带了编译完成的kernel，但既然是自主编译，那你肯定想改改kernel的信息吧，比如kernel的名字，比如打上BFS补丁、超频补丁等等，那你就需要自己来编译kernel了。</p>
<p>2. 编译kernel也非常简单，首先你需要一个kernel的配置文件，CM提供了现成的，直接去/kernel-msm/arch/arm/configs 目录里找，有个配置文件叫cyanogen_msm_defconfig，这个就是我们需要的配额之文件了（如果是给Nexus编译kernel的话，需要选择cyanogen_mahimahi_defconfig）。将它复制到/kernel-msm 的根目录，然后重命名为 .config</p>
<p>3. 用文本编辑器打开.config,其中有一条参数为CONFIG_LOCALVERSION=&#8221;-cyanogenmod&#8221;，这里即为kernel编译完成后显示的名字，可以把cyanogenmod改成任意你喜欢的名字。</p>
<p>4. 设置完成后，就可以开始编译了。先cd到/kernel-msm目录，然后执行如下命令</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">export ARCH=arm</p>
<p>export CROSS_COMPILE=arm-eabi-</p>
<p>export PATH=$PATH:~/cyanogenmod/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin</td>
</tr>
</tbody>
</table>
<p>这些命令定义了编译kernel时所需要用到的环境和设置。注意第三条命令在输入的时候，路径要和自己实际安放源码的路径一致，另外，每次编译kernel前，都需要重新输入这三个命令。</p>
<p>5. 命令输入完后，就可以开始make了：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">make -j3</td>
</tr>
</tbody>
</table>
<p>make就是开始编译的命令，后面的参数-j3表示用于编译的cpu核心数量，一般是cpu核心数量+1，比如双核cpu，就用-j3这个参数。</p>
<p>6. 编译过程根据配置不同而有所不同，笔者笔记本用的T6400是双核2G的，一般编译kernel的时间在10分钟内。编译后的kernel生成在/kernel-msm/arch/arm/boot/目录下，名字叫zImage</p></blockquote>
<h1><strong>CyanogenMod编译</strong></h1>
<blockquote><p>1. 编译完kernel后，就可以开始编译主菜CM了。编译前需要先生成一个buildspec.mk文件，来定义需要编译的rom的基本信息。先cd到源码的根目录，新建一个空文件，名字叫buildspec.mk，并用记事本打开，输入如下信息：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">TARGET_PRODUCT:=cyanogen_dream_sapphire</p>
<p>TARGET_BUILD_VARIANT:=eng</p>
<p>TARGET_BUILD_TYPE:=release</p>
<p>TARGET_PREBUILT_KERNEL:=kernel/arch/arm/boot/zImage</td>
</tr>
</tbody>
</table>
<p>a) 第一条命令表示需要编译的rom的选择，我们现在编译的是G1的rom，故选择cyanogen_dream_sapphire；</p>
<p>b) 第二条命令表示编译的rom的种类，有eng和userdebug两个类型可选，我们当然选在eng；</p>
<p>c) 第三个命令表示编译的rom的类型，我们选择release</p>
<p>d) 第四个命令表示基于哪个kernel来编译rom，如果不设这个命令，则会基于自带的kernel来编译，既然我们自己编译了kernel，那当然用我们自己的，故设置了已经编译好的kernel的目录，供make过程调用。</p>
<p>2. buildspec.mk文件建立好后，就可以开始编译rom了，cd到源码根目录，然后使用命令：</p>
<p><strong>代码：</strong></p>
<table border="1" cellspacing="0" cellpadding="0" width="452">
<tbody>
<tr>
<td width="450" valign="top">make -j3</td>
</tr>
</tbody>
</table>
<p>开始编译源码，源码的编译过程会比较长，试配置不同，需要的时间也不一样，笔者的T6400编译完整的CM差不多需要2个小时。</p>
<p>3. 编译完成后，我们的成品就在/out/target/product目录中，里面包含了system.img,recovery.img,boot.img和system文件夹等，到这里，有点制作rom经验的朋友就不需要我再多说了吧。可以在fastboot里直接刷system.img,和boot.img；也可以将system文件夹和boot.img打包成zip包，添加更新脚本并签名，通过recovery刷到机器里，至此，我们自己编译的CyanogenMod for HTC Dream就大功告成了。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=393</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将2.2的sdk的rom移植到了G1目前可以启动，G1的2.2看来很有希望，呵呵</title>
		<link>http://noirbright.com/?p=386</link>
		<comments>http://noirbright.com/?p=386#comments</comments>
		<pubDate>Fri, 21 May 2010 02:22:21 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[2.2]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[dream]]></category>
		<category><![CDATA[froyo]]></category>
		<category><![CDATA[rom]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=386</guid>
		<description><![CDATA[... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://noirbright.com/wp-content/uploads/2010/05/2010-05-21_10-09-56_792_上海市.jpg"><img src="http://noirbright.com/wp-content/uploads/2010/05/2010-05-21_10-09-56_792_上海市-300x168.jpg" alt="" title="2010-05-21_10-09-56_792_上海市" width="300" height="168" class="alignleft size-medium wp-image-383" /></a><br />
<a href="http://noirbright.com/wp-content/uploads/2010/05/2010-05-21_10-10-11_308_上海市.jpg"><img src="http://noirbright.com/wp-content/uploads/2010/05/2010-05-21_10-10-11_308_上海市-300x168.jpg" alt="" title="2010-05-21_10-10-11_308_上海市" width="300" height="168" class="alignleft size-medium wp-image-384" /></a><br />
<a href="http://noirbright.com/wp-content/uploads/2010/05/2010-05-21_10-10-23_957_上海市.jpg"><img src="http://noirbright.com/wp-content/uploads/2010/05/2010-05-21_10-10-23_957_上海市-300x168.jpg" alt="" title="2010-05-21_10-10-23_957_上海市" width="300" height="168" class="alignleft size-medium wp-image-385" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=386</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在CyanogenMod（CM）类ROM中直接使用*.opvn的配置文件连接OpenVPN</title>
		<link>http://noirbright.com/?p=380</link>
		<comments>http://noirbright.com/?p=380#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:40:39 +0000</pubDate>
		<dc:creator>NOirBRight</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[cyanogen]]></category>
		<category><![CDATA[rom]]></category>

		<guid isPermaLink="false">http://noirbright.com/?p=380</guid>
		<description><![CDATA[前言 当CM版本号到达4之后，在系统的网络设置中，内置了OpenVPN，但是这个OpenVPN只能使用P12格式的配置文件，和我们平时使用的*.opvn配置不同。需要在Linux环境下，使用OpenSSL将配置文件转换成P1... ]]></description>
			<content:encoded><![CDATA[<h1>前言</h1>
<p>当CM版本号到达4之后，在系统的网络设置中，内置了OpenVPN，但是这个OpenVPN只能使用P12格式的配置文件，和我们平时使用的*.opvn配置不同。需要在Linux环境下，使用OpenSSL将配置文件转换成P12格式的文件，具体过程可以参看<a title="CM的OpenVPN设定指南" href="http://androidin.net/bbs/viewthread.php?tid=60483&amp;highlight=openvpn" target="_blank">这里</a></p>
<p>整个过程比较繁琐，并且设置也没有OpenVPN Setting灵活，是否可以在CM上直接使用*.opvn配置文件呢？默认情况下是否定的。但在<a title="Yegle" href="https://twitter.com/yegle">@yegle</a>同学的帮助下，我们现在终于可以在CM上直接使用OpenVPN Setting了，具体方法如下：<span id="more-380"></span></p>
<h1>背景</h1>
<p>在CM4.X中，内核自带了OpenVPN功能，Steve修改了系统的OpenVPN路径，故如果直接使用OpenVPN Setting连接的话，虽然能连接成功，但却无法成功Route，导致你的本机IP没有变化，实际上还在Qiang内。所以我们需要做的就是重新安装OpenVPN，使其符合OpenVPN Setting软件的需求。</p>
<h1>操作方法</h1>
<ol>
<li>在Market里搜索OpenVPN</li>
<li>下载安装OpenVPN Setting和OpenVPN Installer</li>
<li>打开OpenVPN Installer，选择安装OpenVPN</li>
<li>在跳出的第一个窗口中，选择/system/bin ，将OpenVPN的二进制文件安装到/system/bin目录下</li>
<li>在跳出的第二个窗口中，选择/system/xbin/bb，将ifconfig和route这两个命令连接到/system/xbin/bb下</li>
<li>过程中会跳出su授权，每次都点击allow</li>
<li>安装完成后，打开OpenVPN Setting</li>
<li>点Menu，选Advanced，点击Path to OpenVPN binary，将目录改为/system/bin/openvpn</li>
<li>按返回保存</li>
<li>连接USB，在SD卡根目录下创建openvpn文件夹</li>
<li>将你的*.opvn,ca.crt,*.key,*.crt等配置文件（一般为四个文件）全部复制到刚才新建的openvpn文件夹内</li>
<li>卸载SD卡，再次打开OpenVPN Settings，这个时候，配置文件应该就出现在菜单内了，直接点配置文件名字就开始连接</li>
<li>连接成功后，打开浏览器，输入whatismyipaddress.com，如果成功的话，你的IP将变成VPN的服务器IP</li>
<li>至此，在CM上，也可以使用*.opvn配置文件来连接OpenVPN了。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://noirbright.com/?feed=rss2&amp;p=380</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
