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(安卓)in Practice笔记第二章
  2. android TextToSpeech 源码分析
  3. Android(安卓)MediaExtractor setDataSource
  4. 【30篇突击 android】源码统计七
  5. android笔记
  6. Android(安卓)in Practice笔记第二章
  7. 获取 + 查看 Android(安卓)源码的 方法
  8. Android布局优化(四)X2C — 提升布局加载速度200%
  9. Android内核开发:开发板选购

随机推荐

  1. Android画图学习笔记一 类的简介
  2. Android(安卓)教你如何通过 LocationMana
  3. android:layout_weight详解
  4. 如何让Android屏幕只能上下翻转
  5. android和vue交互之js调取原生安卓扫码库
  6. Android的多媒体框架OpenCore(PacketVideo
  7. 《Android/OPhone 开发完全讲义》已出版,
  8. android_error
  9. Android+Eclipse环境
  10. Android(安卓)中文 API (23) ―― MultiAut