define loadsymbols shell echo set solib-absolute-prefix $ANDROID_SOURCE/out/target/product/generic/symbols/ >/tmp/tmp.webkitsymbolspath shell echo set solib-search-path $ANDROID_SOURCE/out/target/product/generic/symbols/system/lib >>/tmp/tmp.webkitsymbolspath source /tmp/tmp.webkitsymbolspath shell rm /tmp/tmp.webkitsymbolspath end
loadsymbols target remote :5039
#!/bin/bash if [ -d $ANDROID_SOURCE ] ; then echo "ANDROID_SOURCE: $ANDROID_SOURCE" else echo "you must define ANDROID_SOURCE environment variable to point your android source" exit 1 fi
Android为Java层应用程序提供了基于JUnit的单元测试框架,本文探讨的是native代码的单元测试。native代码的单元测试框架选择很多,如CppUnit/UnitTest++/gtest等等。惭愧的是,虽然一直在android下从事native程序的开发,却一直没有写过单元测试用例,究其原因,主要有两个:一是赶项目进度,上头关心的是代码何时完成/功能何时完成,这也符合中国的国情,第一时间忽悠客户才是要务。至于代码质量,no one care,只要演示时不出状况就行,至于问题,可以慢慢解决;二是没有顺手的单元测试工具,从单元测试用例的编写,到部署,都是一个非常耗时的工作,如果没有工具自动化,积极性容易受挫。
其实写代码的人都知道,bug发现越晚,修复的代价越大,但是习惯上的惰性使得我将排查问题的时机尽量拖后,基本上没有写过单元测试用例。近期一直在关注chromium for android项目,左等右看,就是看不到完整的android移植代码。兵书上说,兵马未动,粮草先行,最先出现的android编译目标就是base_unittests,细看代码,chromium代码中有着非常多的unittest代码,使用了gtest/gmock单元测试框架。为了达到自动化测试的目的,src/build/android下还有大量的python脚本,可以实现编译/部署/运行的一系列动作的自动化。
ByteArrayBuilder并不是WebKit for Android代码中的一个重要类,其代码也不长,只有154行。但是其中使用到的Java特性却是我第一次碰到。《Java编程思想》这本书我也看过两遍,但读了ByteArrayBuilder代码,才知道Java中有SoftReference,为此恶补了一下Java基础知识。要读懂ByteArrayBuilder代码,需要弄懂Java中的引用概念。