2011-01-10 2 views
8

this article에 설명 된 데이터베이스 처리 솔루션이 OTA 업데이트 2.2.1 (1.72)을받은 후 HTC Desire HD에서 작동하지 않습니다. .405.3). 업데이트 전에 Desire HD에서 작업했는데 실제 장치에서 2.1, 2.2 및 모든 버전을 실행하는 에뮬레이터에서 오류를 재현하지 못했습니다.데이터베이스 처리가 안드로이드 2.2.1에서 작동을 멈췄습니다. (Desire HD 1.72.405.3)

안타깝게도 Android 2.2.1을 실행하는 에뮬레이터 용 AVD를 만들 수는 없지만 2.2.1을 기반으로 ROM을 사용해 보았습니다. (일반적인 HTC Desire를 뿌리 내렸음)하지만 응용 프로그램도 문제없이 작동합니다. . 문제는 안드로이드 SDK를 어떤 방법으로 사용하고 있다면 갑자기 문제가 발생하지 않아야한다는 것입니다.

저는이 문제가 매우 구체적이라는 것을 알고 있습니다. 그러나 제게 AVD를 만들 수 없다는 사실 외에 문제를보고하는 개발자가 많기 때문에 질문이 받아 들여지고 누군가가 단서를 가지기를 바랍니다. 문제.

여기에 사용자가 내 마켓 계정으로 전송 스택 트레이스는 다음과 같습니다

Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error 
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method) 
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2049) 
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1917) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:889) 
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:168) 
at com.MyApp.DataBaseHelper.createDataBase(DataBaseHelper.java:81) 
at com.MyApp.InitialActivity.onCreate(InitialActivity.java:33) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2797) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1066) 

관련 방법은 페이스트 빈에서 찾을 수 있습니다. 단 하나의 하이퍼 링크가 포함될 수 있기 때문에 링크는 아래의 주석에서 찾을 수 있습니다. 스택 트레이스에서 발견 된 81 줄은 pastebin에서 줄 10입니다.

+0

http://pastebin.com/VTmCkeLq –

+0

다른 사용자의 동일한 의견에 대한 추가 의견은이 주석과 아래에서 읽을 수 있습니다. http://www.reigndesign.com/blog/using-your-own-sqlite -database-in-android-applications/comment-page-4/# comment-43655 –

+0

은 새로운 Android 2.2.1 버전에서 사용할 수없는 로켈 en_US입니까? 안드로이드 소스 SQLiteDatabase.setLocale에서 : "@ 로케일을 설정할 수없는 경우 SQLException이 발생합니다. 가장 일반적인 이유는 요청한 로케일에 사용할 수있는 콜레이터가 없다는 것입니다." –

답변

5

마침내 Desire HD의 Android 2.2.1에서 작동하도록 앱을 설치 한 것으로 보입니다. 나는 문제를 일으키는 것을 정확히 시험해보기 위해 개인적으로 디버깅 할 기회가 없었다.

데이터베이스 파일이있는 곳의 하드 코딩 된 경로가 나타났습니다. DB_PATH = "/ data/data/YOUR_PACKAGE/databases /";

이 경로는 Desire HD 용 Android 2.2.1에서 유효하지 않을 수도 있습니다. 나는이 경로를 다음과 교환했다. Environment.getDataDirectory() + "/ data/YOUR_PACKAGE/databases /"+ DB_NAME;

실제 전화로 직접 테스트 해 볼 때 문제를 지적하려고 노력할 것입니다. 누구든지이 솔루션을 테스트하면 해결되는지 알려주십시오.

0

뿐만 아니라 비욘에서 훌륭한 대답은,이 링크는 나를 위해 일한 : 것 같다

Link on AndDev.org

당신이 specificly this.getReadableDatabase의 반환()을 닫아야;

관련 문제