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. C语言函数以及函数的使用
  2. android TextToSpeech 源码分析
  3. 【30篇突击 android】源码统计七
  4. 获取 + 查看 Android 源码的 方法
  5. 多款Android播放器源码集锦(附开发教程)
  6. android仿今日头条App、多种漂亮加载效果、选择器汇总、记事本Ap
  7. 心血收藏,2G源码
  8. android仿今日头条App、多种漂亮加载效果、选择器汇总、记事本Ap

随机推荐

  1. 5G进小区竟被物业索要30万“入场费”,技术
  2. Weblogic中间件创建文件权限问题解决
  3. kubernets中部署高可用nacos
  4. 千万不要在您的系统上运行的那些Linux命
  5. 在kubernetes中部署Jenkins并简单使用
  6. OracleRAC日常操作,使用RMAN将数据文件移
  7. 《老实人的自我修养》——恪守异性相处尺
  8. Prometheus配置企业微信告警
  9. 使用Operator部署Prometheus
  10. 《商君书》白话解读 19章 境内