一年了

2012-11-5 08:14 | by 2ndboy

  时间过得真快,一转眼来美国已经一年了!一年前那个有点凉的早晨,时隔三年再次落地旧金山国际机场,晕乎乎的被送到公司租的第一个月过渡公寓,晕乎乎的倒好了时差,然后是各种手续,等 SSN,租房,买车。一年后的今天,生活已然步入正轨,该工作工作,该上学上学,买房子也进入了实践期,最近的周末都跟朋友一起在看 open house。话说硅谷的房子那是相当的贵,在其它州 $350,000 已经可以买到超级大的豪宅了,这里只勉强够个公寓价,差不多规格的房子那都是百万美元以上,不是我们这等工薪阶层能负担得起的。

  最近硅谷天气逐渐转凉,不过气温也都在 20 度左右。我们周末仍然会去爬山,不过地点就已经固定在了同一个地方,出汗锻炼为主,顺便看看风景 :) 这之前较远的出行就是去了一趟 Lake Tahoe,风景不错,不过偷懒没有写游记。晚上的例行健身坚持的不是太好,有时太忙或者太懒就跳过,不过中午饭后经常会跟两三个同事一起在公司附近散散步,生命在于运动!:)

  工作进入正轨后慢慢忙了起来,有时候晚上回家后还要一直开会直到睡觉前,所以锻炼身体更加不能忽略了。最近工作上杂务缠身,生活上要处理的事情也颇多,翻看了一下 blog,上一篇 post 居然是 5 个月以前写的,而且估计今后一段时间更新 blog 的次数也不会太多。

  来美一周年,流水账 update 完毕 :)

Sequoia & Kings Canyon National Parks

2012-6-4 14:37 | by 2ndboy

  5 月 28 号星期一是 Memorial Day(阵亡将士纪念日),美国全国放假一天,加上周六、周日的两天,算个小型的长周末了。由于刚好是春夏之交,所以一般大家都会利用这个时节的假日外出旅游。这个周末我们跟亲戚朋友一行 13 人一起奔赴 Sequoia & Kings Canyon National Parks(可以直译为“红杉和国王峡谷国家公园”),Sequoia & Kings Canyon National Parks 位于加州中部,属于美国 58 座国家公园之二:) Kings Canyon 有小优胜美地之称,风景优美;Sequoia 在 Kings Canyon 南边,里面有世界第一和第二大树(是第一“大”,不是第一“高”)。

  我们 13 个人分乘 3 辆车,早上 8:30 左右从湾区出发,中途休息了两次,差不多下午 1 点到达了位于 Three Rivers 的旅馆 Western Holiday Lodge。这次是家里的 Camry 第一次跑远路,刚好可以在第一次保养前再磨合一下,整个旅途下来,感觉日本车在油耗方面还是真的做得不错的,但是在盘山路上爬坡就有点力不从心了,尤其是跟 6 缸的 SUV 比起来。午饭已经在路上的麦当劳里解决了,我们等所有车到齐、check in、放好东西之后就出发进山。

旅馆:
旅馆

  进山的盘山路九曲十八弯,车道窄、坡度大,上坡时坐了 4 个人的 Camry 最快可以跑到 35 MPH 左右。下坡的时候如果排队,就只能挂到 2 档上慢慢走,前面没车的话可以挂在 4 档上跑到 40 MPH(相当于 64 公里每小时)左右,一路上很多的 180 度大转弯,开车的人乐在其中,坐车的人晕头转向。话说盘山路还是极具驾驶乐趣的:D 从我们住的旅馆到 General Sherman Tree(世界第一大树)大概需要开一个小时,公园内部分路段正在修路,有一段路是单行道,路段两头各有一个工作人员,轮流放行上行和下行车辆,这个活儿还真是无聊。

  每辆车进入公园只需要缴 $20(对,不按人数算,而是按车计价),这一次缴费在 7 天之内可以随意进入国家公园内,这个价格不禁让我再次鄙视一下国内那些坐地起价,随便乱收费的景点。

  公园内每隔一段距离就有一个 Visitor Center,里面一般都会有不同的展览和 Gift Shop,还有洗手间可以使用,所以作为沿途的休息点非常不错。从 Three Rivers 进山的话,遇到的第一个 Visitor Center 是 Foothills,然后继续上山就会来到 Tunnel Rock,一块巨石当空架在路上,从巨石靠山的一边还可以爬上去拍照。据说原本进山的路是从巨石下穿过的,后来才改道从旁边绕过了。
Tunnel Rock

  离开 Tunnel Rock 以后我们就赶去看世界第一大树 General Sherman Tree,它跟世界第二大树 General Grant Tree(在 Grant Grove Visitor Center 边上)都是用南北战争中北方将军的名字命名的。我们到的当天上午貌似下过雨,然后进山以后海拔不断升高,所以下车以后感觉还是很冷的,而且树林里到处都是还没化的雪。其实在山路上我们已经不断的被巨树给震撼了,从来没见过那么粗壮高大的树,汽车和人跟它们比起来实在是渺小!

  General Sherman Tree 被木围栏圈起来,所以没法去拍那种众人合抱的照片,不过通过它前面的看板我们还是了解到,它的树基直径有 11 米,树冠直径有 4.2 米,最粗的分支有 2 米,比普通人还要高!它的树基周长有 31 米,如果让一群 1.7 米的人来合抱它,按每个人拉手后 1.5 米计算的话,需要 21 个人!我们 13 个人根本抱不住它!我回家以后看到当时拍的照片才知道,它已经 2200 岁了!它的高度是 83.8 米,最大最重,但还不是世界上最高的树,世界上最高的树是澳洲的杏仁桉树,最高的树有 156 米,相当于 50 层楼的高度!红杉这种树的种子还没有 10 美分的硬币大(跟葵花籽差不太多),加以时日居然会长成这么个庞然大物,自然界真的是很奇妙。
General Sherman Tree

  我们一路上看到很多烧得碳黑的树干,来之前看攻略得知,有些树是被雷电自然劈中烧焦的,有些却是公园的管理人员和消防员故意放火烧的,因为红杉的种子异常坚硬,火烧会使掉落的果实爆裂开散出种子,灰烬也是很好的肥料。

途中某景:
途中某景

  看过 General Sherman Tree 以后,我们又到了旁边的 Giant Forest Museum,里面有很多介绍红杉的看板、实物和视频,是个了解加州红杉的不错的地方。就是在这个地方,我注意到同行的朋友有拿着 National Park Passport 在敲 Kings Canyon 的 stamp。原来美国国家公园还有这么一个国家公园护照(Passport To Your National Parks program)的东西,它把美国分成 9 个大区,每个大区用不同的颜色加以标识,你去到不同的公园可以敲带有当天日期和公园名称的戳记,还可以买不同图案的公园贴纸(有点像 visa 的那个意思)贴在 passport 上。感觉是个很有意思的东西,有点像网游里的成就体系,但区别在于这个东西代表了你有过的地方,上面的记录也是你很多段不同的美好记忆,深得我心:) 于是果断买了一本,印刷精美,$8.95 一点不贵!巧的是,我们买的时间不错,买到了去年刚出的 25 周年纪念版 passport,推荐喜欢游览美国国家公园的同学选购!

  看过 Giant Forest Museum 以后,由于早上已经赶了半天的路,所以我们一行人下山往宾馆赶去,盘山路坡度不小,我们车速也不太慢,以至于我的耳朵出现了跟每次飞机降落一样的情形——由于海拔下降太快疼了起来。

  这次出游,我们有资深组织策划大肚婆,虽然已经身怀六甲,但是安排的井井有条,大家分头准备,有负责订宾馆的,有采购食物饮水的,我负责看攻略打印地图。我们这三天,住宾馆的两晚吃火锅,炊具跟食材都是从湾区采购带过来的;中饭自制三明治,吃得有声有色,不过由于两个火头之一有点漏气,所以 13 个人都指着一个小锅开涮,等大概二十分钟吃两分钟,就这么折腾了好几轮才算吃饱,不过大家在宾馆外的草坪边上边涮边聊,倒也不亦乐乎。饭后开始杀人游戏,一直折腾到夜里一点多才各自回房休息,这个充实啊!

  第二天早上大家陆续起床,到旅馆的 office 旁边吃早餐,老美喜欢喝冰的东西,所以橙汁是冰的,牛奶也是冰的,只有咖啡是热的。早餐有水果、甜点、鸡蛋、自烤华夫饼,总之都是甜的东西,所以我们带了酱油过去蘸鸡蛋吃 :)

  第二天我们决意向有小优胜美地的 Cedar Grove 进发,结合网上的攻略,我们评估了两种走法,(1) 198 进山,经 Grant Grove 后走 180,优点是一路有景,缺点是全程盘山路,耗时可能会很多。(2) 198 出山,走 216、245 再进山,绕到 180,路程比方案 1 远,但是路比较好走,时间可能更快,且坐后排的同学会舒服一些。 一番快速讨论后我们决定走方案 2,由于没有地址,没法用 GPS,所以一路上用 iPhone 上的 Google Maps 来指路,好在我之前买了 12V 转 5V USB 的车充,所以 iPhone 的电池表示毫无压力,只是机身发热严重!

盘山路:
盘山路

  进入 180 以后,有大段大段的下坡路段,心想这回程可有的受了,爬坡是四缸 Camry 的弱项。随着一路海拔降低,耳朵再次出现飞机降落时的症状,我们逐渐下到了 Kings Canyon 的河谷附近,沿着 Kings River 一路向前。途中经过 Boyden Cave 但是未作停留,这次来之前本来有策划去玩 Crystal Cave 的,但是貌似大家对溶洞兴趣一般,所以这两个 cave 都被跳过,不过想来应该不会好过国内的溶洞 :D

  在 Cedar Grove Visitor Center 附近我们看到了 camping site,有成片的帐篷扎在里面。美国人有 camping 文化,很多公园都有 camping site,里面提供水、电和厕所,还有公园管理人员可以寻求帮助。国内的话,旅游一般都是住宾馆,在野外扎营,感觉都是专业驴友干的事儿:) 话说回来以后听此次去 Yosemite 的同事讲他们 camping 的过程,据说他们还带了烧壁炉的木柴去点篝火玩儿,感觉还是挺有意思的,下次出游可以尝试一下!到 Cedar Grove Visitor Center 已经是午后了,拿出早上在宾馆自制的火腿三明治解决了午餐,继续上路。

  我们一路开到 180 的尽头,路尽头是在一个 circle 上的两个停车场,不过已经全满,所以我们三辆车只能都趴在路边,再往前,就是茫茫山野跟河谷,开始徒步穿行。一直有听说公园里有熊出没,所以规定不能把食物留在车里,以防引来嗅觉灵敏的熊。我们碰巧看到了某辆车上管理员留下的 warning ticket。
ticket

  其实我们的目的地是 Zumwalt Meadow,但是一开始没有找到方向,所以就跟着其它 hiking 的游人一起走了,看来下次带个指南(北)针还是很有必要的!一路上开始还能看到三两成群的游人,路上还遇到一对白人老夫妻,年纪大概快 70 了吧,但还是跟我们一样开车进山,然后穿行在野外的小路上,我们要是到他们这个年纪还有这样的精气神和体力就好了!:D 一路上又看到不少烧焦的树,还有倒下的树,如果树恰巧横在路上,公园管理员就会把挡住路的部分锯开、拿走,剩下的还留在原地。
倒掉的树

  路上还遇到了野生的蛇,就横在要经过的路上,最后用棍子挑开才继续上路。
蛇

  我们大概在三个小时后回到停车场,孕妇队友全程随行,并且还不时打头,真是厉害!大约在下午 5 点多大部队踏上回程,途中又在一些山路旁停下看风景,看着视野开阔的远山、河谷和蓝天的时候,总是心情超好!

某景

  回程的时候用 GPS 设了旅馆的地址,但在 245 上 GPS 把我们引导到了一条跟来时路不一样的小路上,这路其实只是宽度略窄,而且没有对向分界线,同行的另外两辆车觉得前面路况未知所以决定按原路走,我看着身边不断有老外的车呼啸而过走了这条“小”路,感觉问题应该不大,而且看样子应该路程更近一些,于是我们兵分两路,我开着车走了 Dry Creek Dr,另外两辆车仍然走 245。结果证明这确实是条近路,我们回旅馆的时间足足比另外两辆车早了 40 分钟!而且这条路上风景也很漂亮,两旁不时能看见牛在山坡上吃草,山间还有成片的农田,还在某个路段看到一匹孤狼。一直开山路,再加上已经奔波了一天,所以人还是有点累的,记得那是刚爬过了一个陡坡,车一过最高点视野马上开阔起来,笔直的山路一直延伸到前面很远的地方,左右是黄绿相间的田野,当时恰逢黄昏,夕阳照在路旁远处山头上,让金色的干草泛着微红。整个人顿时感觉精神一振,那个短暂瞬间的美景真的是那时那刻身处那个地方,耳边听着风声,鼻子里嗅着草香才能体会得到。同时也由于视野的原因,照片和视频真的不能记录她的十之一二,所以不管技术如何进步,纪录片拍的多么好,人还是要亲近大自然才能体会到她的美、她的好!

  我们是最先回到旅馆的一车,而且肚子都打鼓了,所以就开始张罗着架锅洗菜,还是火锅,接着开涮!等第一锅差不多 ok 的时候,另外两车也都回来了,十几口子人大快朵颐。饭后照常杀人游戏,不过这晚我 2 点多才睡,一夜无话。

  第三天,早上照例在旅馆吃早餐,然后收拾东西退房。按昨晚商量的结果,今天的目标是 Moro Rock。之前在网上看攻略,这应该是一个不容错过的地方,但是据说停车位基本找不到,所以基本上是要坐公园 shuttle 的。按第一天看 General Sherman Tree 的路线,一路走 198 进山,路上还是要经过那段单行线。到了 Moro Rock 的岔路口,果然不要说停车位,根本不允许非园区车辆入内,所以我们只能把车开到 General Sherman Tree 附近的停车场,然后坐 shuttle 先到 Giant Forest Museum,然后再换一班车到 Moro Rock。Moro Rock 是一个在都有植被覆盖的群山间的异类,他看起来像是一整块大岩石,光秃秃的矗立在山间。到 Moro Rock 的顶上有人工开凿的路,陡峭处还有扶手可以抓握,所以还是非常安全的!上到 Moro Rock 顶上可以远眺远处终年积雪的雪山,另外一边还能依稀看到 Three Rivers 的 Kaweah 湖,我们的旅馆就在湖边。山顶风比路上大些,不过我们还是就着山风解决了午餐。下午 2 点左右我们踏上了回程,路上又要开 5 个小时才能回到湾区。

雪山:
雪山

  回程的山路有上坡有下坡,上坡我就得不断的停下让那些马力强劲的“追兵”先通过,下坡就毫无压力的再赶上去,这次 Sequoia & Kings Canyon 之行真的是过足了开山路的瘾!盘山路还能让我无比清醒,但是到平原以后,连续两天的休息不足就开始肆虐了。于是我们在半路找了家 Subway 略作休息,然后换了在路上小憩过一下的 LP 表哥开车,我则沉沉睡去,大概一个小时后才醒来,表哥则一直开完了剩下的路段。一路上路况不错,但是在 152 转 101 的时候堵了大概快一个小时的样子才通过 Gilroy。周末大家都涌出硅谷去游山玩水,所以这时路上就都是归心似箭的路人:) 晚饭我们一行在奇峰阁吃湖南菜,人多菜也多,尝了不少辣辣的美味!

  从湾区到 Sequoia & Kings Canyon National Parks,算上路上休息的时间,大概需要 5 的小时车程,所以一个司机会非常累,最好可以有两个司机轮流开车; 山上海拔高,有些地方山风大,所以就算夏天来,也要准备厚衣服,LP 临行前拿了羽绒衣,我以为拿多了,结果证明此举英明! 公园里没有加油站,所以进去之前要提前加满油; 整个公园按景点的聚集程度大致可以分成三个区块:Giant Forest、Grant Grove 和 Cedar Grove,我们这次只是过境了 Grant Grove(世界第二大树的所在地),打算游览 Sequoia & Kings Canyon National Parks 的话可以按时间来分配一下到每个地方的时间; 从 Giant Forest 到 Cedar Grove 最好从山外绕,这样后排乘客相对会舒服些,时间也略短,而且有近路可走——198,一小段 216,Dry Creek Dr/Co Hwy J21,245,180; Sequoia & Kings Canyon 比 Yosemite 人少很多,所以不喜欢拥挤的人可以选择多开一个多小时到 Sequoia & Kings Canyon 来,风景不错哦:D

Fremont Older Open Space Preserve 爬山记

2012-4-9 12:11 | by 2ndboy

  周六是最近头一次全天有饭局的快乐日子,中午在 LP 英语课熟识的同学家吃正宗四川火锅,晚饭在 LP 表哥家品尝了一把表哥的大厨级手艺。基于每周一山的近期计划,今天(周日)我们和 LP 表哥一家一行四人到 Fremont Older Open Space Preserve 去爬山,计划是基于昨晚回家后的简短 Bay Area Hiker 考察,决定去一处有山有水的地方去走走。由于不确定那边是否提供带地图的 guide,我周六晚上根据 Google Maps 手绘了一份地图,结果 LP 说我的简易版地图比公园提供的地图更简明方便哈哈:D

  在 South De Anza Blvd 跟 Prospect Road 的交叉口转入 Prospect,沿着 Prospect 一直走到底就可以看到停车场,Bay Area Hiker 上说 Fremont Older Open Space Preserve 的停车场只有大约 15 个车位,但是我们的目测是肯定能停不止 15 辆车,但是也多不到哪里去。如果真的没法停车的话,可以开出去一段路停在一个岔路边上。
map

  跟上周一样,我们也是绕最大圈爬了一趟,路线基本上像个大写 Q,从尾巴进去,逆时针走一圈,再从尾巴出来,在 Q 的左上角位置可以看到一个水库。路线:Hayfield Trail(Q 尾)-> Coyote Ridge Trail -> Loop Trail -> Lookout Trail -> Vista Loop Trail -> Fern Trail -> Coyote Ridge Trail -> Hayfield Trail(Q 尾)。

  “Q 尾”段的风景:
map

不明植物果实,姑且叫它流星锤吧:
map

远处山坡上某处豪宅边上的马厩和跑马场,有 money 人家呀:
map
爬山路上我们还路遇一对骑马的母女,马毛刷得锃亮,不错的享受 :)

山里也有关于山狮的警告牌,但我们同样还是没有见到实物,不过路上有很多野兽的脚印:
map
不知道这个脚印是什么动物留下的,感觉貌似更像狼?另外在林中小路看到一只野兔在我们面前飞快跑过,没来得及拍下来。山上到处可见被土拨鼠推出洞外的新土,估计这些野兔和鼠类可以养活不少猎食它们的天敌。

在路程一半左右的地方拍到的水库一角:
map
对岸有很多野鸭,还有鹅。我们在此休息,吃带来的苹果,果核是有机物,我们把果核丢在水里的时候竟然把对岸的野鸭吸引过来好多只:
map
两边漂亮一些的是公鸭,中间褐色的是母鸭。记得前段时间在网上看过,说国人都把鸳鸯看作是爱情的象征,其实野生鸳鸯在失去伴侣后会很快另觅新欢;但是野鸭死掉伴侣却活不成。不过野鸭貌似对苹果不大感兴趣,啄了啄果皮和果核,给我们拍完照后就跑开了,有只公鸭在下坡的时候还拌了一跤,有点意思 :D

  跟上周差不多,我们大概上午 10:40 多到,下午 2:30 左右才回到车上,又是 4 个小时。总体感觉 Fremont Older Open Space Preserve 的空间立体感比 Rancho San Antonio County Park 要强一些 ;) 而且因为有水,乐趣也更多些。

  回来在 Homestead 路上的大华蜀一蜀二解决温饱问题,除了凉粉不够弹之外,其它菜味道都不错。又是个充实的周末,下周继续!

Rancho San Antonio County Park 爬山记

2012-4-2 08:13 | by 2ndboy

  在杭州的时候,因为地利不错,所以周末经常跟 LP 一起出去爬山,但是来美国以后一直没找到机会爬山。两周前,跟 LP 一起上课的同学爬山归来后带了一张 Rancho San Antonio County Park and Open Space Preserve 的资料单给我们,刚好同事 KH 给我推荐了一个网站 Bay Area Hiker,所以昨晚研究过地图后打算先到 San Antonio County Park 去走走。

  在 280 的 13 号出口下高速,沿着 Foothill 往南走一点点,然后右转到 Cristo Rey Dr 上,在经过一个五路口转盘后再一点点就到了 San Antonio County Park 的门口:
map

  San Antonio County Park 有 5 个小停车场,我们早上大约 10:30 的时候到,车位很多,但是下午 2:30 左右离开的时候已经有很多人在等车位了:)
parking

  我们基本上绕最大圈走了一遍 San Antonio County Park(Deer Hollow Farm -> Rogue Valley Trail -> Wildcat Loop Trail -> Upper High Meadow Trail -> PG&E Trail)。刚开始的时候基本上算不上山路,总之是一段非常平缓的路,一直到 Wildcat Loop Trail,景色跟山路才慢慢变得有意思起来:) 公园入口的牌子上写着山上有可能会遇到山狮,不过我们路上只遇到了一只山鸡:
parking

还有一只超大号金黄色蛞蝓,不过因为看起来实在太像排泄物,所以就不贴照片了:D 来张菌类植物照吧:
parking

在 Upper High Meadow Trail 和 PG&E Trail 的某些地方,可以居高临下的看到湾区的大部分地区:
parking
照片上远处的白色物体是 NASA 的机库,再过去就是旧金山湾和湾区东面的山了。美国绿化率非常高,房子又不高,所以照片上近处这个粉红色的社区跟旧金山湾之间貌似是片丛林,其实满是建筑物。

山中一景:
parking

  下午 2:30 左右,在山上跋涉了 3 个多小时以后,我们终于回到了停车场。补充了些食物跟水,又休息了一会儿之后才驱车上路。总的来说,Rancho San Antonio County Park 景色不错,一路上有些林荫路段,但大多数还是需要顶着加州阳光前进的。我们的体验是,如果从 PG&E Trail 开始走,顺时针爬的话,挑战性要远大于逆时针爬,不过即便如此,我们还是在山路上遇到了推着那种能坐两个小孩的婴儿车的老外在跑步上山,走的就是顺时针的路线,太强了!

  Bay Area Hiker 这个网站不错!争取有计划的把硅谷周边的山都爬一遍,只要膝盖能吃得消:D

用 Ant 编译 Android 工程及定制的方法

2012-3-5 04:06 | by 2ndboy

  通常开发和编译 Android 程序都在 Eclipse 里完成,但是这样不太方便对工程做持续集成,而且也不方便对编译过程做些自定义的控制。当然可以在了解 Android 程序完整的编译、打包和签名过程后全部自己用 script 搞定,但更好的方法是用类似 Ant 或者 Maven 这类编译工具来做,Android 对 Ant 支持的不错,官方文档可以参考“Managing Projects from the Command Line”和“Building and Running from the Command Line”。另外还有这篇“Using Ant to Automate Building Android Applications”也非常值得一看,不过由于 Android SDK 的持续更新,里面有些内容已经不再适用,下面就 share 一下我用 Ant 编译 Android 工程的一些过程和心得。

  我的工程使用了 ActionBarSherlockViewPagerTabs(和工程文件夹位于同级目录中。鉴于这两个库实现的效果和质量,他们被使用在同一个工程中的几率还是很高的),已经可以在 Eclipse 里正常编译和运行,为了用 Ant 编译,首先要产生 build.xml 文件,但是在这之前还要做一件事。ViewPagerTabs 引用了 Support Package,而 ActionBarSherlock 自己内含了一份 Support Package 的源码,用 Eclipse 是可以顺利编译的,但是如果不做任何处理的话,用 Ant 编译时就会遇到某 class 已经存在之类的问题。

  首先需要删除位于 ViewPagerTabs 的 libs 目录下的 android-support-v4.jar,然后让 ViewPagerTabs 引用 ActionBarSherlock 即可,看起来简单,但是这个问题让我这个从没用过 Ant 的菜鸟折腾了一天才搞定,惭愧惭愧。

  生成 build.xml 的步骤如下:

  • 进入 ActionBarSherlock 文件夹,执行 android update lib-project –path .
  • 进入 ViewPagerTabs 文件夹,执行 android update lib-project –path .
  • 进入工程主文件夹,执行 android update project –path .

  由于先期已经在 Eclipse 里面做了编译,所以主工程目录中的 project.properties 里已经添加过了对其它库的引用,所以为主工程生成 build.xml 时不需要再加 –package 来添加引用库的位置了。上述命令执行以后,工程目录里多了两个文件:build.xml 和 local.properties。前者对于刚刚接触 Ant 的人来说,信息量比较大,而 local.properties 里面只是简单的记录了 Android SDK 的位置,而且由于这个文件是工具自动生成的,所以不要把它 check in 到版本控制系统里去。

  接下来到主工程所在目录执行 ant debug 或者 ant release 就可以顺利编译了。

  接下来看看定制 build.xml,上面提到的那篇“Using Ant to Automate Building Android Applications”里面提到的方法其实太过复杂,我们不用把系统 build.xml 里面的内容都复制到本地 build.xml,而是只需要在本地 build.xml 里增加一个 pre-compile 就可以了,增加的内容如下:

  1. <property file="build.properties" />
  2.  <target name="-pre-compile">
  3.      <copy file="config/Config.java" todir="${source.dir}/com/2ndboy/App" overwrite="true" encoding="utf-8">
  4.          <filterset>
  5.              <filter token="CONFIG.FOO" value="${config.foo}"/>
  6.          </filterset>
  7.      </copy>
  8.  </target>

在主工程目录下新建一个名为 config 的目录,里面有个名为 Config.java 的文件,内容如下:

  1. public class Config
  2.  {
  3.      public final static boolean freeVersion = @CONFIG.FOO@;
  4.  }

这个 Java 源文件里的 CONFIG.FOO 会被 build.xml 里的新增部分在编译期间用 ${config.foo} 的内容替换掉,而 ${config.foo} 的定义在 build.properties 里面:

  1. config.foo=false

Ant 的深入使用又牵扯到一大堆东西,这里只是浅尝辄止而已,学无止境!