Android中使用的SQLite版本?

Android中使用的SQLite版本是什么?

原因:我想知道如何处理模式迁移。 较新的SQLite版本支持“ALTER TABLE”SQL命令,这将节省我不得不复制数据,删除表,重新创build表和重新插入数据。

更新2016年10月 :这是一个链接到更新的官方文档,其中包括在这个答案的要点: android.database.sqlite包级javadoc

使用模拟器(adb shell sqlite3 –version):

更新:对不起,旧的(SDK 18及更早版本)包级API差异已停止工作: https : //issuetracker.google.com/issues/37048579

SQLite 3.19.4 (由于某些原因3.19.4在sqlite发行说明中不存在!):

  • 27-8.1.0(开发人员预览)

SQLite 3.18.2 :

  • 26-8.0.0-O(注意:O版本使用3.18.0 )

SQLite 3.9.2 :

  • 25-7.1.1-N MR1
  • 24 -7.0-N(注:预览使用相同的版本)

SQLite 3.8.10.2 :

  • 23-6.0-M(注:M Preview 1(SDK level 22)used 3.8.10 )

SQLite 3.8.6.1 (SQLite链接为3.8.6,因为3.8.6.1由于某种原因不存在):

  • 22-5.1.1,棒棒糖

SQLite 3.8.6 :

  • 21-5.0-棒棒糖

SQLite(未知):

  • 20-4.4W.2-Android Wear(没有可用的模拟器,但可能是3.7.11或3.8.4.3)

SQLite 3.7.11 :

  • 19-4.4-奇巧
  • 18-4.3-果冻豆
  • 17-4.2-果冻豆
  • 16 -4.1-果冻豆

SQLite 3.7.4 :

  • 15-4.0.3-冰淇淋三明治
  • 14 -4.0冰淇淋三明治
  • 13-3.2-蜂窝
  • 12-3.1-蜂窝
  • 11 -3.0-蜂窝

SQLite 3.6.22 :

  • 10-2.3.3姜饼
  • 9-2.3.1姜饼
  • 8 -2.2-Froyo

SQLite 3.5.9 :

  • 7-2.1-埃克莱尔
  • 4-1.6甜甜圈
  • 3 -1.5杯蛋糕

注意:Android SDK级别的链接显示android.database.sqlite包已更改的位置。 如果没有链接(例如SDK级别17),则表示没有更改该包。

注意:以下是一些exception情况(列表并非详尽无遗):

SQLite 3.7.13 (而不是3.7.11):

  • LG Optimus L70 MS323 LGMS323 | KOT49I.MS32310b(19-4.4-KitKat)
  • LG Optimus G E975 LG-E975 | JZO54K(16-4.1-Jelly Bean)
  • LG G2 D802 LG-D802 | JDQ39B(17-4.2-果冻豆)

SQLite 3.7.6.3 (而不是3.6.22):

  • LG Optimus Sol E730 / myTouch E739 / myTouch Q C800(10-2.3.3-Gingerbread,GRJ22)
  • LG Optimus Vu F100S / F100L(10-2.3.3-姜饼,RK39F)
  • LG Optimus LTE TAG F120K / F120L(10-2.3.3-Gingerbread,GRK39F)
  • LG Optimus LTE L-01D(10-2.3.3姜饼,GRJ90)
  • LG Optimus Net P690b(10-2.3.3-Gingerbread,GINGERBREAD)
  • LG Prada KU5400(10-2.3.3-姜饼,GWK74)
  • LG Prada P940(10-2.3.3-姜饼,GWK74)
  • LG LU6200 / SU640(10-2.3.3-姜饼,GRJ90)s

SQLite 3.7.5 (而不是3.7.4):

  • 三星Galaxy Note(15-GT-N7000 | IML74K.ZSLPF)
  • 三星Galaxy SII(15-SC-02C | IML74K.OMMP4和GT-I9100 | IML74K.DXLP7)
  • 三星Galaxy S Duos(15-GT-S7562 | IMM76I.S7562XXBMD6)
  • 三星Galaxy Tab 7.7(15-GT-P6810 | IMM76D.ZSLP8)

SQLite 3.7.0.1 (而不是3.6.22):

  • LG Esteem MS910(10-2.3.3-姜饼,GSE-_v.05)
  • AndroTab(8-2.2-Froyo,1.0.7100.0385)
  • GPLUS MUSN M500(8-2.2-Froyo,FRG83G)

SQLite 3.6.23.1 (而不是3.5.9):

  • 摩托罗拉Backflip MB300(7-2.1-Eclair,ERD79)
  • Garmin-AsusnüvifoneA10 / A50 / Garminfone(7-2.1-Eclair,ERE27)

注意:用于获取SQLite版本的adb命令仅适用于模拟器和具有sqlite3的设备: https : //stackoverflow.com/a/3645800/444761

对于其他设备,请参阅Juri的答案 。

我已经为Android问题跟踪器添加了问题#58909 。 如果您想支持,请将其列出。

注意:如果您希望您的应用在所有Android版本中使用相同版本的SQLite,请考虑使用此第三方SQLite支持库 。

虽然文档提供了3.4.0作为参考号,但如果执行以下sql,则会注意到安装的SQlite数量更多:

Cursor cursor = SQLiteDatabase.openOrCreateDatabase(":memory:", null).rawQuery("select sqlite_version() AS sqlite_version", null); String sqliteVersion = ""; while(cursor.moveToNext()){ sqliteVersion += cursor.getString(0); } 

这只是一个快速,脏的代码来检索sqlite版本。 例如,在Android 2.1的HTC Hero,我得到: 3.5.9

在我的Nexus One与Android 2.2,我甚至得到3.6.22

 $ adb shell $ sqlite3 --version sqlite3 --version 3.5.9 

在ADP1 1.6和2.1仿真器上也是如此。

Andorid API和支持的SQLite版本的简短概述。

在这里输入图像描述

概述来自马克·卡特斯的答案。