Androidで使用されているSQLiteのバージョン?


271

Androidで使用されているSQLiteのバージョンは何ですか?

理由:スキーマの移行を処理する方法を知りたいです。新しいSQLiteバージョンは、「ALTER TABLE」SQLコマンドをサポートしています。これにより、データのコピー、テーブルの削除、テーブルの再作成、データの再挿入の手間が省けます。


1
それでも、コピー、ドロップ、再作成、再挿入が必要になる場合があります。SQLiteのALTER TABLEは完全には機能していません。
J. Polfer、2010

正しい答えを選択してください。3.4.0は正しくありません
Noah

1
実行しているAndroidのバージョンに依存しませんか?確かに、1.6を実行している古いmyTouchにSQLite 3.4.xがインストールされているか、2.2を実行している新しいG2に新しいバージョンがインストールされている可能性があります。本当の答えはあなたの特定のハンドセットをチェックすることです。
イーノ

1.0.0のandroid.arch.persistence:dbおよびandroid.arch.persistence:db-frameworkが数週間前に出荷されました。
Prags

回答:


478

2016年10月更新:これは、この回答の要点を含む更新された公式ドキュメントへのリンクです。android.database.sqliteパッケージレベルのjavadoc

エミュレーターの使用:

adb shell sqlite3 --version   

更新:SDK 29(エミュレータリビジョン8)以降、adbシェルコマンドは以下を提供します:

/system/bin/sh: sqlite3: inaccessible or not found

何かアイデアはありますか?ここに問題トラッカー。

SQLite 3.28.0ウィンドウ関数!):

  • 30-11.0-R(SDK Managerのリビジョン2)

SQLite 3.22.0

  • 29 -10.0-Q(SDK Managerのリビジョン8)
  • 28 -9.0-P

SQLite 3.19.4(何らかの理由で3.19.4がsqliteリリースノートに存在しない!バージョンコントロールチェックインにリンクする):

  • 27 -8.1.0-O MR1

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プレビュー1(SDKレベル22)は3.8.10を使用)

SQLite 3.8.6.1(何らかの理由で3.8.6.1が存在しないため、SQLiteリンクは3.8.6用です):

  • 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-KitKat
  • 18-4.3-ジェリービーン
  • 17-4.2-ジェリービーン
  • 16 -4.1-Jelly Bean(リンク切れ、こちらを参照)

SQLite 3.7.4

  • 15-4.0.3-アイスクリームサンドイッチ
  • 14 -4.0-アイスクリームサンドイッチ(リンク切れ、こちらを参照)
  • 13-3.2-ハニカム
  • 12-3.1-Honeycomb
  • 11 -3.0-Honeycomb(リンク切れ、こちらを参照)

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など)は、そのパッケージに変更がないことを示します。

注:ここにいくつかの異常があります(決して網羅的ではありません)。

SQLite 3.7.133.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-Jelly Bean)

SQLite 3.7.6.33.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-Gingerbread、RK39F)
  • LG Optimus LTE TAG F120K / F120L(10-2.3.3-Gingerbread、GRK39F)
  • LG Optimus LTE L-01D(10-2.3.3-Gingerbread、GRJ90)
  • LG Optimus Net P690b(10-2.3.3-Gingerbread、GINGERBREAD)
  • LGプラダKU5400(10-2.3.3-ジンジャーブレッド、GWK74)
  • LGプラダP940(10-2.3.3-ジンジャーブレッド、GWK74)
  • LG LU6200 / SU640(10-2.3.3-Gingerbread、GRJ90)s

SQLite 3.7.5(3.7.4の代わり):

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

SQLite 3.7.0.13.6.22ではなく):

  • LG Esteem MS910(10-2.3.3-Gingerbread、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の代わり):

  • Motorola 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 Issue TrackerにIssue#58909を追加しました。サポートしたい場合は、スターを付けてください。

注:アプリですべてのAndroidバージョンで同じバージョンのSQLiteを使用する場合は、このサードパーティのSQLiteサポートライブラリの使用を検討しください。


/ system / bin / sh:sqlite3:not foundこれは、ルート化されたAndroid 4.0.2デバイス上にあります
ポインターヌル

ありがとうマーク。私は少し混乱しています。開発中、どのようにすれば私のsqliteバージョンがすべてのデバイス間で一貫性を保つようにすることができますか?targetSdkVersionそれbuildTargetはどういう意味ですか、またはそれに影響を与えますか?
Muhammad Babar 2014年

1
@MuhammadBabarユーザーのデバイスにインストールされているSQLiteの実際のバージョンを取得するには、Juriの回答を使用する必要があります。targetSdkVersonとbuildTargetは違いがありません。
マーク

59

ドキュメントには参照番号として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を取得します。

Android 2.2を搭載したNexus Oneでは、3.6.22も取得します


2
私は3.4.0が最小バージョンとして与えられていると思います#-移植性のために、あなたがそうする正当な理由がない限り、おそらくそれをより高いバージョンと仮定すべきではありません。
Eno

2
確かに、あなたは正しいです。しかし、SQLiteの上位バージョンでパフォーマンスを向上させる可能性があるいくつかの高度な機能を使用する必要がある場合は、コードを使用してクエリを実行し、展開されたバージョンに応じてクエリの種類を最終的に切り替えることができます:)
Juri

カスタム2.2 ROMを搭載した私のドロイドも3.6.22を報告します
マホニー

プレリリース2.2の私のエピックは3.6.23と書いてあります-数字は上に近づいているようです。
dhaag23 '12年

1
アンドロイド4.2とのネクサス7は、3.7.11を与える
christophercotton

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

ADP1 1.6および2.1エミュレータでも同じです。


それは私に与えます:sqlite3:許可が拒否されました
Yar

私にとってはうまくいきました。私はcmdプロンプトを開き、adb.exeが配置されているandroidフォルダーに移動しました。次に、2つのコマンドを入力しました
Pavenhimself 2013

8
Nexus 4 KitKatで「/ system / bin / sh:sqlite3:not found」と表示されます。
ベンクレイトン

6

Andorid APIとサポートされているSQLiteバージョンの簡単な概要。

ここに画像の説明を入力してください

概要はMark Carters回答のリンクからです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.