Android中与sqlite相关的代码并不多,这里先列出来:

external/sqlite/
|-- android
| |-- Android.mk
| |-- NOTICE
| |-- PhoneNumberUtils.cpp
| |-- PhoneNumberUtils.h
| |-- PhoneticStringUtils.cpp
| |-- PhoneticStringUtils.h
| |-- PhoneticStringUtilsTest.cpp
| |-- sqlite3_android.cpp
| |-- sqlite3_android.h
| `-- tags
`-- dist
|-- Android.mk
|-- MODULE_LICENSE_PUBLIC_DOMAIN
|-- NOTICE
|-- shell.c
|-- sqlite3.c
|-- sqlite3.h
`-- version

android:
PhoneNumberUtils.cpp 电话号码比较的相关函数;
PhoneticStringUtils.cpp Unicode文本排序、比较等一系列函数;
sqlite3_android.cpp sqlite扩展函数的注册。

这个目录里编译完后是一个静态库libsqlite3_android.a。

dist:
dist里是sqlite3数据库的代码。Android中使用的是3.5.9版本的sqlite,这是2008.05的Release。这里仅有三个源码文件,觉得很奇怪,sqlite的源代码中少说也有上百个源码文件吧,难道是被GOOGLE精简了?如下:

$ wc -l *.[ch]
2102 shell.c
87283 sqlite3.c
5648 sqlite3.h

其中sqlite3.c这个文件非常大,共87283行,2.9M!看了一下sqlite3.c中的内容,是把sqlite3里所有的源码文件做了合并,并到这一个文件里面了。这样做的原因在源码里也作了解释:把代码合并了比起分开编译更有利于编译器做优化,在这里至少有5%的性能提升。这样做的确很有创意,但是做这个合并一定很费事,以后如果没有大的改进的话应该不会轻易升级sqlite了。

编译情况如下:
shell.c --> sqlite3 依赖libsqlite.so
sqlite3.c --> libsqlite.so 依赖libsqlite3_android.a

扩展函数加载:

扩展函数的加载放在shell.c里,代码如下:

open_db(……)
{
……
#ifndef NO_ANDROID_FUNCS
register_android_functions(db, 0); //注册扩展函数
register_localized_collators(db, "", 0); //排序相关
#endif
……
}


























更多相关文章

  1. Android(安卓)读取和保存文件(手机内置存储器)
  2. Android自学笔记(番外篇):全面搭建Linux环境(六)——Android的安装与
  3. Android控件及API说明(三)
  4. android系统定制从听说到入门二
  5. Android源码博文集锦2
  6. Android第一行代码笔记
  7. 深度解析Android中字体设置
  8. android 字体的使用
  9. 如何下载android源码与android内核源码

随机推荐

  1. SQL 时间格式化函数
  2. 全国省市区县最全最新数据表(数据来源谷
  3. SQLServer 数据库故障修复顶级技巧之一
  4. mssql 30万条数据 搜索文本字段的各种方
  5. SQL SERVER 数据类型详解补充2
  6. asp.net 使用SqlBulkCopy极速插入数据到
  7. sql 函数大全 比较常用的一些函数整理第1
  8. sqlserver 此数据库没有有效所有者错误的
  9. 批量替换sqlserver数据库挂马字段并防范s
  10. MSSQL批量替换语句 在SQL SERVER中批量替