우리의 응용 프로그램을 시작하려고하면 새 사용자의 약 1 %가 데이터베이스 생성에 실패합니다. 주로 중국에서, 때로는 러시아와 다른 지역에서 발생합니다. 내 기기에서 재생산 할 수는 없지만 로그 업로드에서 정보를 수집했습니다./data/data/<package>에 SQLite DB 만들기가 실패했습니다.
내가 알아챈 한 가지는 : db 작성이 실패하면 패키지 디렉토리 /data/data/com.lootworks.swords의 파일 사용 권한이 --x 즉 읽기/쓰기가 불가능합니다. 이것은 rwx 액세스 권한이있는 테스트 장치와 다릅니다.
패키지 디렉토리에 --x를 지정하면 db 작성이 실패하는 이유는 무엇입니까? SQLite가 액세스하려고 할 때 OS가 변경 권한과 같은 펑키 한 작업을하지 않는 한 확실히 나에게 좋지 않습니다. 이걸 본 사람 있어요?
상세 정보 :
응용이 서브 클래스 사용합니다- SQLiteOpenHelper, getWritableDatabase (에
- 초기 호출 (같은 준비된 DB 파일 또는 아무것도를 복사하지 않고)) Application.onCreate 동안 발생하는 매우 루틴() 이
예외 우리 SQLiteOpenHelper.onCreate() 메소드 호출로까지 도달하기 전에 전화
Caused by: android.database.sqlite.SQLiteException: unable to open database file
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1880)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:851)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:885)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:878)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:599)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:234)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:149)
at com.lootworks.swords.db.SwSqlDbOpenHelper.getDb(SourceFile:379)
at com.lootworks.swords.db.SwSqlDbOpenHelper.getOpenHelper(SourceFile:88)
at com.lootworks.swords.db.SwSqlDb.prepareDatabase(SourceFile:66)
at com.lootworks.swords.SwApplication.onCreate(SourceFile:291)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1004)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3372)
at android.app.ActivityThread.access$2200(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1031)
at android.os.Handler.dispatchMessage(Handler.java:130)
at android.os.Looper.loop(SourceFile:351)
at android.app.ActivityThread.main(ActivityThread.java:3818)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:538)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
at dalvik.system.NativeStart.main(Native Method)
: (? 일부 CN 파일 공유 일을) 설치 프로그램입니다 일부 사용자가 사이드로드하지만 증거를 가지고있다
- 닷컴 .andding.jpg (GPlay)
Play 스토어가 불법 복제 될 수 있다는 것은 나에게 발생하지 않았습니다. 그래서 나는 이것들이 비공식적 인 배포판에서 설치가 엉망이라고 의심합니다. 나는 대체 안드로이드 버전/불법 복제가있는 지역에서 성공/실패 %에 대한 더 나은 아이디어를 얻기 위해 더 많은 정보 수집을 추가했습니다. – mwk
패키지 방향 권한이 rwx 인 모든 실행에서 24h의 데이터가 성공합니다. 나는 해적판 gplay 정보가 내가 필요한 대답이라고 생각한다. – mwk