Android에서 사용되는 SQLite 버전은 무엇입니까?
이유 : 스키마 마이그레이션을 처리하는 방법이 궁금합니다. 최신 SQLite 버전은 "ALTER TABLE"SQL 명령을 지원하므로 데이터를 복사하고 테이블을 삭제하고 테이블을 다시 작성하고 데이터를 다시 삽입해야합니다.
Android에서 사용되는 SQLite 버전은 무엇입니까?
이유 : 스키마 마이그레이션을 처리하는 방법이 궁금합니다. 최신 SQLite 버전은 "ALTER TABLE"SQL 명령을 지원하므로 데이터를 복사하고 테이블을 삭제하고 테이블을 다시 작성하고 데이터를 다시 삽입해야합니다.
답변:
2016 년 10 월 업데이트 : 다음은이 답변의 주요 사항을 포함하는 업데이트 된 공식 문서에 대한 링크입니다. android.database.sqlite 패키지 레벨 javadoc
에뮬레이터 사용 :
adb shell sqlite3 --version
업데이트 : SDK 29 (에뮬레이터 개정 8) 이후 adb shell 명령은 다음을 제공합니다.
/system/bin/sh: sqlite3: inaccessible or not found
어떤 아이디어가 있습니까? 여기에서 트래커를 발행 하십시오 .
SQLite 3.22.0 :
SQLite 3.19.4 (어떤 이유로 3.19.4가 sqlite 릴리스 정보에 존재하지 않습니다! 따라서 버전 제어 체크인에 링크) :
SQLite 3.18.2 :
SQLite 3.9.2 :
SQLite 3.8.10.2 :
SQLite 3.8.6.1 (SQLite 링크는 3.8.6.1이 어떤 이유로 존재하지 않기 때문에 3.8.6 용입니다) :
SQLite 3.8.6 :
SQLite (알 수 없음) :
SQLite 3.7.11 :
SQLite 3.7.4 :
SQLite 3.6.22 :
SQLite 3.5.9 :
참고 : Android SDK 레벨 링크는 android.database.sqlite 패키지가 변경된 위치를 보여줍니다 . 링크가없는 경우 (예 : SDK 레벨 17) 해당 패키지가 변경되지 않았 음을 나타냅니다.
참고 : 몇 가지 이상 현상이 있습니다 (전체 목록은 아님).
SQLite 3.7.13 (3.7.11 대신) :
SQLite 3.6.23.1 (3.5.9 대신) :
참고 : SQLite 버전을 가져 오는 adb 명령은 에뮬레이터 및 sqlite3을 사용할 수있는 장치에서만 작동합니다 : https://stackoverflow.com/a/3645800/444761
다른 장치에 대해서는 Juri의 답변을 참조하십시오 .
문제 # 58909를 추가했습니다Android 이슈 트래커에 를 . 이를 지원하려면 별표를 표시하십시오.
참고 : 앱이 모든 Android 버전에서 동일한 버전의 SQLite를 사용하도록하려면 이 타사 SQLite 지원 라이브러리 사용을 고려하십시오 .
targetSdkVersion
거나 buildTarget
어떤 영향을 미칩니 까?
설명서에서 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 도 얻 습니다 .
$ adb shell
$ sqlite3 --version
sqlite3 --version
3.5.9
ADP1 1.6 및 2.1 에뮬레이터에서 동일합니다.