在 Android 平台上应用 Berkeley DB 11gR2 SQL(drop-in模式)
2010-04-04 06:21:00 来源:WEB开发网$ ./android
(如图)使用图形界面工具创建一个Android 2.1的设备BDBSQL,并点击”start”启动。新的设备第一次启动的时间会非常长,这是正常现象。等到Android界面出现,就说明我们的镜像编译基本没问题了。接下来我们进一步把SQLite库替换为BDB。
3. 编译BDB SQL
从http://www.oracle.com/technology/software/products/berkeley-db/index.html下载BDB 11gR2源文件(db-5.0.x.tar.gz),然后
$ cd $HOME/android/android_src/external/sqlite/dist
$ tar zxvf db-5.0.x.tar.gz
$ cp Android.mk Android.mk.bak
$ cp db-5.0.x/build_android/Android.mk .
编辑Android.mk,默认的BDB Log和Region文件大小总和可达到十几兆,因此我们有必要修改Android.mk来减小它(可能需要为Android.mk去掉只读属性)。修改第一处LOCAL_CFLAGS如下所示(相对于默认配置,我们删除了-DSQLITE_OMIT_TRUNCATE_OPTIMIZATION,新增了 -DSQLITE_DEFAULT_CACHE_SIZE=256 -DBDBSQL_MAX_LOCKS=1000 -DBDBSQL_MAX_LOCK_OBJECTS=1000):
LOCAL_CFLAGS += -Wall -DHAVE_USLEEP=1
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576
-DSQLITE_THREADSAFE=1 -DNDEBUG=1 -DSQLITE_TEMP_STORE=3
-DSQLITE_OS_UNIX=1
-D_HAVE_SQLITE_CONFIG_H -DSQLITE_THREAD_OVERRIDE_LOCK=-1
-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_BACKWARDS -Dfdatasync=fsync
-DSQLITE_DEFAULT_CACHE_SIZE=256
-DBDBSQL_MAX_LOCKS=1000
-DBDBSQL_MAX_LOCK_OBJECTS=1000
如果确定不会在多进程间共享数据库,还可以在上述LOCAL_CFLAGS中加入”-DBDBSQL_OMIT_SHARING”,这样日志文件不会被写入文件系统,进一步节省了设备空间。
编译系统镜像中的SQLite部分:
$ cd $HOME/android/android_src
$ . build/envsetup.sh
$ make clean-libsqlite
$ mmm -B external/sqlite/dist
$ make snod
编译好了,再来一次镜像替换:
$ cp $HOME/android/android_src/out/target/product/generic/*.img
更多精彩
赞助商链接