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,visibility属性
  3. mainfest文件中android属性
  4. Android(安卓)sqlite
  5. ~/.dirlst 文件
  6. Failed to fetch URL https://dl-ssl.google.com/android/reposi
  7. Android(安卓)单选按钮Radio的使用
  8. Android的数据库--sqlite(一)
  9. Android(安卓)读取和保存文件(手机内置存储器)

随机推荐

  1. 10种技巧可提升Android应用运行效果
  2. android 借助AccessibilityService实现模
  3. 基于 android TV的智能家居项目的传感器
  4. 基于android的网络音乐播放器-本地音乐的
  5. Android简易手势密码开源库
  6. Android(安卓)UI设计之自定义Dialog,实现
  7. Android快速自定义控件+实战演示(二)组合自
  8. android P版本 系统稳定性问题案例分析(
  9. Android触摸反馈(回顾整理):触摸事件的分发
  10. Android中加密机制