Berkeley DB 5.2 Android平台编译过程介绍
2013-07-23 10:14
357 查看
在Berkeley DB 5.2版本中,Android Drop-in编译方式正式纳入官方发布文档。5.2的Android编译过程和先前我基于DBSQL 5.0写的博文稍有不同。以下介绍Oracle
Berkeley DB 5.2官方文档中Android安装文档。欢迎交流。
Android默认提供的数据库功能是SQLite。Berkeley DBSQL完全兼容SQLite API,可以直接替换SQLite库而无需改动现有的应用程序或服务。依本方法编译得到的Berkeley DBSQL库将完全替换Android的SQLite库(drop-in模式)。在这种模式下,Android平台上所有的应用程序(包括我们自己编译的应用程序)都将链接到Berkeley DBSQL库以获取更高的存储和并发性能。完整原文:http://download.oracle.com/docs/cd/E17076_02/html/installation/build_android_intro.html
中文介绍:
Android编译过程
本节提供了Berkeley DB Drop-in方式的Android编译指令。首先要下载并且编译Android源代码树。
第一次编译过程需要花费较长一段时间,不过后面再编译就快多了。可以从这里下载Android的源代码并且按照Android文档完成编译过程。
把Berkeley DB代码目录拷到Android的代码目录里面:
$ cd ${root}/external/sqlite/dist
$ tar zxvf db-xx.tar.gz
这里的${root}指的是Android源代码树的根路径。
通过以下命令将源代码树中默认的Android.mk文件替换成Berkeley DB的版本:
$ cd ${root}/external/sqlite/dist
$ mv Android.mk Android.mk.sqlite
$ cp db-xx/build_android/Android.mk ./
提示:编译之前,可通过这里查看Android平台上的几种调优参数。
重新编译数据库部分,这样Berkeley DB就替换到最终生成的系统镜像了:
$ cd ${root}
$ . build/envsetup.sh
$ make clean-libsqlite
$ mmm -B external/sqlite/dist
$ make snod
以上指令完成后,新的基于Berkeley DB SQL的Android系统镜像即编译完毕。系统会打印出新的镜像所在目录,一般来说这个目录是:${root}/out/target/product/generic。
从SQLite迁移到Berkeley DB
如果你需要使DBSQL能够自动打开并转换现有的SQLite数据库文件,请参照本节的步骤。首先,我们需要通过以下脚本来为Android平台编译一个静态的SQLite shell, 这个shell对自动转换功能而言是必需的。
view plaincopy
to clipboardprint?
#!/bin/bash
# This script shows how to use built-in toolchain to build
# sqlite3 shell, which is required by Berkeley DB SQL
# on-the-fly migration feature.
# Note: these variables should be set per active Android source tree
# We assume $PWD=$ROOT/external/sqlite/dist
ROOT=${PWD}/../../..
TOOLCHAIN=${ROOT}/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
CC=${TOOLCHAIN}/bin/arm-eabi-gcc
LIB="${ROOT}/out/target/product/generic/obj/lib"
INCLUDE="${ROOT}/ndk/build/platforms/android-8/arch-arm/usr/include"
# CFLAGS should be set per Android.mk.sqlite (the original
# version of SQLite's Android.mk)
CFLAGS="-DHAVE_USLEEP=1 -DSQLITE_THREADSAFE=1 -DNDEBUG=1 \
-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \
-DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 \
-DSQLITE_DEFAULT_AUTOVACUUM=1 \
-DSQLITE_TEMP_STORE=3 -DSQLITE_ENABLE_FTS3 \
-DSQLITE_ENABLE_FTS3_BACKWARDS -DTHREADSAFE=1"
CFLAGS="${CFLAGS} -I${INCLUDE}"
LDFLAGS="-ldl -nostdlib -Wl,--gc-sections -lc -llog -lgcc \
-Wl,--no-undefined,-z,nocopyreloc ${LIB}/crtend_android.o \
${LIB}/crtbegin_dynamic.o -L${LIB} -Wl,-rpath,${LIB}"
${CC} -DANDROID -DOS_ANDROID --sysroot="${SYSROOT}" -mandroid \
-fvisibility=hidden -ffunction-sections -fdata-sections \
-fPIC ${LDFLAGS} ${CFLAGS} \
sqlite3.c shell.c -o sqlite3orig
提示:你可能需要根据当前环境来修改以上环境变量。
运行以上脚本,成功的话我们就得到了一个静态的sqlite3 shell工具 – sqlite3orig
接下来我们需要修改系统image文件。首先用xyaffs2工具解压镜像文件
$ xyaffs2 ./system.img system
把编译好的sqlite3工具拷进去。
$ cp ${root}/external/sqlite/dist/sqlite3orig system/xbin/sqlite3orig
使用mkyaffs2image工具来重新生成system.img.
$ mkyaffs2image -f $PWD/system system.img
这样,修改好的系统镜像即可自动转换并打开现成的SQLite3数据库文件。需要注意的是:在adb shell模式下,打开sqlite3数据库的命令是sqlite3orig;而打开Berkeley DBSQL数据库的命令是sqlite3。
转自:http://www.bdbchina.com/2011/07/berkeley-db-5-2-android%E5%B9%B3%E5%8F%B0%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B%E4%BB%8B%E7%BB%8D/android%E5%B9%B3%E5%8F%B0%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B%E4%BB%8B%E7%BB%8D/
相关文章推荐
- 基于2.6.29内核的x86平台Android编译过程
- 在Android 2.3 平台下编译CURL 和OpenSSL过程
- OpenCV4Android开发之旅(三)----Windows平台Eclipse、MinGW配置OpenCV2.4.4(C++接口调用) 全过程(附:MinGW编译OpenCV2.4.4)
- 简单记录全志平台编译android源码过程
- Android系统编译过程分析
- Android编译系统之环境初始化过程分析
- VLC-ANDROID开源项目的编译过程全纪录
- 本文介绍媒体的编解码器、容器和Android平台所支持的网络协议。
- 高级语言的编译:链接及装载过程介绍
- Android 5.1-s5p6818平台编译出现libwebviewchromium.so错误总结
- 用NDKr9编译最新ffmpeg2.0.1(ffmpeg2.0.2)到android平台
- andriod开发 1:android在Linux下的环境配置以及编译设置介绍
- win 7下ffmpeg平台和Android联合编译ndk rc7和ffmpeg harmony(最后还是改为r5)
- Android应用程序的Activity启动过程简要介绍和学习计划
- Android源码内部编译过程总结(Make)(转)
- linphone-android for mac编译过程记录
- Android平台OpenMax多媒体引擎介绍
- Android编译过程详解
- 暴风云视频平台SDK使用介绍(四)-- 视频播放(Android)
- android编译全过程