我设法解决了这个问题,所以我发布了我的解决方案,以防有人发现它有帮助。
以前我一直在创建没有 google api 的虚拟机,每次我想 root 手机时,超级用户应用程序都会崩溃。
所以我创建了谷歌播放提供的虚拟机并下载了 SQL 调试器应用程序。我也在我的测试套件中使用了这个代码,所以我在每次运行测试结束时将 db 提取到 SD 卡。这样我就不需要超级用户权限。
public static void copyDbToSd(Context context) {
File dbFile = context.getDatabasePath((String) DatabaseHandler.DATABASE_NAME);
InputStream myInput;
try {
myInput = new FileInputStream(dbFile);
OutputStream myOutput = new FileOutputStream(
Environment.getExternalStorageDirectory()
+ java.io.File.separator
+ "database.db");
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
} catch (FileNotFoundException e) {
Log.e(TAG, "Exception: ", e);
} catch (IOException e) {
Log.e(TAG, "Exception: ", e);
}
}
其中 DatabaseHandler.DATABASE_NAME 是我在创建数据库时设置的数据库的名称。